blob: 777ad7cf13267583d45422aede6926a6187a3df4 [file] [log] [blame]
/**
* @file backup.h
* Handles backing up file data.
*
* It works like this:
*
* 1. Read in the file data
*
* 2. Call backup_copy_file() to create a backup of the input, if needed
*
* 3. Do the uncrustify magic and write the output file
*
* 4. Call backup_create_md5_file()
*
* This will let you run uncrustify multiple times over the same file without
* losing the original file. If you edit the file, then a new backup is made.
*
* @author Ben Gardner
* @license GPL v2+
*/
#ifndef BACKUP_H_INCLUDED
#define BACKUP_H_INCLUDED
#define UNC_BACKUP_SUFFIX ".unc-backup~"
#define UNC_BACKUP_MD5_SUFFIX ".unc-backup.md5~"
/**
* If there isn't a FILENAME+UNC_BACKUP_MD5_SUFFIX or the md5 over the data
* doesn't match what is in FILENAME+UNC_BACKUP_MD5_SUFFIX, then write the
* data to FILENAME+UNC_BACKUP_SUFFIX.
*
* Note that if this fails, we shouldn't overwrite to original file with the
* output.
*
* @param filename The file that was read (full path)
* @param file_data The file data
* @param file_len The file length
* @return SUCCESS or FAILURE
*/
int backup_copy_file(const char *filename, const vector<UINT8>& data);
/**
* This calculates the MD5 over the file and writes the MD5 to
* FILENAME+UNC_BACKUP_MD5_SUFFIX.*
* This should be called after the file was written to disk.
* We really don't care if it fails, as the MD5 just prevents us from backing
* up a file that uncrustify created.
*
* @param filename The file that was written (full path)
*/
void backup_create_md5_file(const char *filename);
#endif /* BACKUP_H_INCLUDED */