{
time_t filetimeno;
EXEC SQL BEGIN DECLARE SECTION;
- char filetime[48], *ft = filetime, *tbl_name;
+ char filetime[48], *tbl_name, *unixtime_fmt = UNIXTIME_FMT;
EXEC SQL END DECLARE SECTION;
*flag = 0;
tbl_name = tbl;
/* Get modtime as Julian day, hours, minutes, and seconds */
- EXEC SQL SELECT TO_CHAR(modtime, 'J HH24 MI SS')
+ EXEC SQL SELECT TO_CHAR(modtime, :unixtime_fmt)
INTO :filetime FROM tblstats
WHERE table_name = :tbl_name;
if (sqlca.sqlcode)
return MR_DATE;
}
- filetimeno = strtol(ft, &ft, 10) - UNIX_EPOCH;
- filetimeno = filetimeno * 24 + strtol(ft, &ft, 10);
- filetimeno = filetimeno * 60 + strtol(ft, &ft, 10);
- filetimeno = filetimeno * 60 + strtol(ft, &ft, 10);
-
- *flag = (int) (filetimeno - ModTime);
+ *flag = (int) (unixtime(filetime) - ModTime);
return 0;
}
+
+time_t unixtime(char *timestring)
+{
+ time_t t;
+
+ t = strtol(timestring, ×tring, 10) - UNIX_EPOCH;
+ t = t * 24 + strtol(timestring, ×tring, 10);
+ t = t * 60 + strtol(timestring, ×tring, 10);
+ t = t * 60 + strtol(timestring, ×tring, 10);
+
+ return t;
+}
/* for MAXPATHLEN */
#include <sys/param.h>
+#include <stdio.h>
+
void fix_file(char *targetfile);
char *dequote(char *s);
void db_error(int code);
int ModDiff(int *flag, char *tbl, time_t ModTime);
+time_t unixtime(char *timestring);
+#define UNIXTIME_FMT "J HH24 MI SS"
+
+struct tarheader {
+ char name[100];
+ char mode[8];
+ char uid[8];
+ char gid[8];
+ char size[12];
+ char mtime[12];
+ char chksum[8];
+ char typeflag[1];
+ char linkname[100];
+ char magic[6];
+ char version[2];
+ char uname[32];
+ char gname[32];
+ char devmajor[8];
+ char devminor[8];
+ char prefix[155];
+ char pad[12];
+};
+
+typedef struct _tarfile {
+ FILE *fp;
+ struct tarheader th;
+ long offset;
+} TARFILE;
+
+TARFILE *tarfile_open(char *file);
+void tarfile_close(TARFILE *tf);
+FILE *tarfile_start(TARFILE *tf, char *name, mode_t mode, uid_t uid, gid_t gid,
+ char *user, char *group, time_t mtime);
+void tarfile_end(TARFILE *tf);
+void tarfile_mkdir(TARFILE *tf, char *name, mode_t mode, uid_t uid, gid_t gid,
+ char *user, char *group, time_t mtime);