On Fri, Feb 02, 2007 at 10:43:20PM +0100, Giuseppe Sacco wrote:
...
> programs) and is the same used in the TIFF specification. The only way I

hmph... yeah - sorry, should have checked myself before making noise.

> If you have time to provide a patch sensible to a parameter, then I will
> gladly sponsor this patch upstream.

thanks - well, I've reverted all to TIFF specs, but also made a quick hack
for my perusal. Controlling the full format for the whole DateTime tag
is not my target nor interest, I just want yyyy/mm/dd right from faxinfo's 
output as an archive folder path without nothing more than ${DateTime% *}.
Please see below, if you & upstream find it acceptable, it may be worth
to others to integrate into next release.
BTW, I've added a check in case of wrong #params. 

eg.

% util/faxinfo -d / -t . ~/fax06370.tif
...
  Received: 2002/05/16 08.10.06
...  


thanks
-- 
 paolo

#-----------------------------------------------------------------------------
--- util/faxinfo.c++    2007-02-03 00:17:16.000000000 +0100
+++ util/faxinfo.c++    2007-02-03 00:43:20.000000000 +0100
@@ -93,6 +93,8 @@
     printf("\t-s fmt\tUse fmt for the field start format\n");
     printf("\t-e fmt\tUse fmt for the field end format\n");
     printf("\t-E fmt\tUse fmt for the fax end format\n");
+    printf("\t-d c\tUse c as separator for date from DateTime tag\n");
+    printf("\t-t c\tUse c as separator for time from DateTime tag\n");
 }
 
 static const char*
@@ -176,8 +178,10 @@
     bool debug = false;
     bool baseName = false;
     int c;
+    char dsc = ':';
+    char tsc = ':';
 
-    while ((c = getopt(argc, argv, "C:c:rnbS:s:e:E:D")) != -1)
+    while ((c = getopt(argc, argv, "t:d:C:c:rnbS:s:e:E:D")) != -1)
        switch (c) {
            case '?':
                usage(appName);
@@ -194,6 +198,12 @@
                fieldEnd = "";
                faxEnd = "\n";
                break;
+           case 'd':
+               dsc = optarg[0];
+               break;
+           case 't':
+               tsc = optarg[0];
+               break;
            case 'r':
                faxStart = "";
                fieldStart = "%0.0s";
@@ -227,6 +237,10 @@
        fprintf(stderr, 
"faxStart='%s'\nfieldStart='%s'\nfieldEnd='%s'\nfaxEnd'%s'\n",
                faxStart,fieldStart,fieldEnd,faxEnd);
 
+    if (optind >= argc) {
+       usage(appName);
+       return 2;
+    }
     while (optind < argc) {
        const char* name = argv[optind];
 
@@ -345,12 +359,16 @@
            sanitize(date);
        } else {
            struct stat sb;
-           fstat(TIFFFileno(tif), &sb);
            char buf[80];
+           fstat(TIFFFileno(tif), &sb);
            strftime(buf, sizeof (buf),
                "%Y:%m:%d %H:%M:%S %Z", localtime(&sb.st_mtime));
            date = buf;
        }
+       if (date[4] == ':') date[4] = dsc; 
+       if (date[7] == ':') date[7] = dsc; 
+       if (date[13] == ':') date[13] = tsc; 
+       if (date[16] == ':') date[16] = tsc; 
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &v);
        float h = v / (params.vr == VR_NORMAL ? 3.85 : 
            params.vr == VR_200X100 ? 3.94 : 
#-----------------------------------------------------------------------------


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to