21 const char *backup_ext,
26 char bakfile[FILENAME_MAX];
30 if(filename==NULL || strlen(filename)<1) {
31 if(status!=NULL) sprintf(status,
"invalid filename");
36 if(access(filename, 0) == -1) {
37 if(status!=NULL) sprintf(status,
"file does not pre-exist");
41 strlcpy(bakfile, filename, FILENAME_MAX);
42 if(backup_ext==NULL)
strlcat(bakfile,
".bak", FILENAME_MAX);
43 else strlcat(bakfile, backup_ext, FILENAME_MAX);
45 if(access(bakfile, 0) != -1) {
48 if(status!=NULL) sprintf(status,
"cannot delete previous backup file");
53 ret=rename(filename, bakfile);
55 if(status!=NULL) sprintf(status,
"cannot rename file as backup");
58 if(status!=NULL) sprintf(status,
"file renamed as backup");