]> andersk Git - moira.git/commitdiff
changes for tar.c
authordanw <danw>
Wed, 27 Jan 1999 19:38:39 +0000 (19:38 +0000)
committerdanw <danw>
Wed, 27 Jan 1999 19:38:39 +0000 (19:38 +0000)
gen/moddiff.pc
gen/util.h

index 42f18cf4b468ea4ed2c4daa872559fbfd797ecc5..c80a0a2adb1cba0829f161bed25bdd25c67eac70 100644 (file)
@@ -29,13 +29,13 @@ int ModDiff(int *flag, char *tbl, time_t ModTime)
 {
   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)
@@ -44,11 +44,18 @@ int ModDiff(int *flag, char *tbl, time_t ModTime)
       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, &timestring, 10) - UNIX_EPOCH;
+  t = t * 24 + strtol(timestring, &timestring, 10);
+  t = t * 60 + strtol(timestring, &timestring, 10);
+  t = t * 60 + strtol(timestring, &timestring, 10);
+
+  return t;
+}
index aedbc468f371439e72d48707c76ebe0383b213a5..e009cd21a984b0959b9b6ec17b368867bb9a2e3b 100644 (file)
@@ -3,8 +3,46 @@
 /* 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);
This page took 0.045224 seconds and 5 git commands to generate.