[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:43:13 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=7f0e02c

The following commit has been merged in the master branch:
commit 7f0e02c0482a71a8b289626ccfc6bf1a54379882
Author: Robin Mills <robin at clanmills.com>
Date:   Fri Jul 20 05:13:10 2012 +0000

    Work in progress.  Added timeZoneAdjust.  detabbed the file.  set property eol=LF
---
 samples/geotag.cpp | 728 +++++++++++++++++++++++++++--------------------------
 1 file changed, 375 insertions(+), 353 deletions(-)

diff --git a/samples/geotag.cpp b/samples/geotag.cpp
index 4609974..bd5a890 100644
--- a/samples/geotag.cpp
+++ b/samples/geotag.cpp
@@ -29,7 +29,6 @@ typedef std::vector<std::string> strings_t ;
 #endif
 
 #ifdef  _MSC_VER
-
 #include <windows.h>
 #if     _MSC_VER < 1400
 #define strcpy_s(d,l,s) strcpy(d,s)
@@ -41,341 +40,361 @@ typedef std::vector<std::string> strings_t ;
 #endif
 
 enum
-{	typeUnknown   = 0
-,	typeDirectory = 1
-,	typeImage	  = 2
-,	typeXML		  = 3
-,	typeFile      = 4
-,	typeMax		  = 5
+{   typeUnknown   = 0
+,   typeDirectory = 1
+,   typeImage     = 2
+,   typeXML       = 3
+,   typeFile      = 4
+,   typeMax       = 5
 };
 
-enum                   		// keyword indices
-{	kwHELP = 0
-,	kwARGS
-,	kwVERSION
+enum                        // keyword indices
+{   kwHELP = 0
+,   kwARGS
+,   kwVERSION
 ,   kwNOCR
 ,   kwUNSPACE
 ,   kwCLOSE
-,	kwOPEN
-,	kwEND1
-,	kwEND2
+,   kwOPEN
+,   kwEND1
+,   kwEND2
 ,   kwSLEEP
 ,   kwT1
-,	kwT2
-, 	kwSPEED
-, 	kwSEND
-, 	kwOUTPUT
-,   kwMAX          			// manages keyword array
-,	kwNEEDVALUE				// bogus keywords for error reporting
-,   kwSYNTAX				// -- ditto --
-,   kwNOVALUE = -kwCLOSE	// keywords <= kwNOVALUE are flags (no value needed)
+,   kwT2
+,   kwSPEED
+,   kwSEND
+,   kwOUTPUT
+,   kwMAX                   // manages keyword array
+,   kwNEEDVALUE             // bogus keywords for error reporting
+,   kwSYNTAX                // -- ditto --
+,   kwNOVALUE = -kwCLOSE    // keywords <= kwNOVALUE are flags (no value needed)
 };
 
 enum
-{	resultOK=0
-,	resultSyntaxError
-,	resultSelectFailed
-,	resultOpenFailed
-,	resultTimeout
+{   resultOK=0
+,   resultSyntaxError
+,   resultSelectFailed
+,   resultOpenFailed
+,   resultTimeout
 };
 
 time_t parseTime(const char* arg)
 {
-	time_t result = 0 ;
-	try {
-		//559 rmills at rmills-imac:~/bin $ exiv2 -pa ~/R.jpg | grep -i date
-		//Exif.Image.DateTime                          Ascii      20  2009:08:03 08:58:57
-		//Exif.Photo.DateTimeOriginal                  Ascii      20  2009:08:03 08:58:57
-		//Exif.Photo.DateTimeDigitized                 Ascii      20  2009:08:03 08:58:57
-		//Exif.GPSInfo.GPSDateStamp                    Ascii      21  2009-08-03T15:58:57Z
-
-		// <time>2012-07-14T17:33:16Z</time>
-
-		if ( strstr(arg,":") || strstr(arg,"-") ) {
-			int  YY,MM,DD,HH,mm,SS ;
-			char a,b,c,d,e   ;
-			sscanf(arg,"%d%c%d%c%d%c%d%c%d%c%d",&YY,&a,&MM,&b,&DD,&c,&HH,&d,&mm,&e,&SS);
-			
-			struct tm T;
-	#if 0
-			int tm_sec;     /* seconds (0 - 60) */
-			int tm_min;     /* minutes (0 - 59) */
-			int tm_hour;    /* hours (0 - 23) */
-			int tm_mday;    /* day of month (1 - 31) */
-			int tm_mon;     /* month of year (0 - 11) */
-			int tm_year;    /* year - 1900 */
-			int tm_wday;    /* day of week (Sunday = 0) */
-			int tm_yday;    /* day of year (0 - 365) */
-			int tm_isdst;   /* is summer time in effect? */
-			char *tm_zone;  /* abbreviation of timezone name */
-			long tm_gmtoff; /* offset from UTC in seconds */
-	#endif
-			memset(&T,sizeof(T),0);
-			T.tm_min  = mm  ;
-			T.tm_hour = HH  ;
-			T.tm_sec  = SS  ;
-			T.tm_year = YY -1900 ;
-			T.tm_mon  = MM -1    ;
-			T.tm_mday = DD  ;
-			result = mktime(&T);
-		}
-	} catch ( ... ) {};
-	return result ;
+    time_t result = 0 ;
+    try {
+        //559 rmills at rmills-imac:~/bin $ exiv2 -pa ~/R.jpg | grep -i date
+        //Exif.Image.DateTime                          Ascii      20  2009:08:03 08:58:57
+        //Exif.Photo.DateTimeOriginal                  Ascii      20  2009:08:03 08:58:57
+        //Exif.Photo.DateTimeDigitized                 Ascii      20  2009:08:03 08:58:57
+        //Exif.GPSInfo.GPSDateStamp                    Ascii      21  2009-08-03T15:58:57Z
+
+        // <time>2012-07-14T17:33:16Z</time>
+
+        if ( strstr(arg,":") || strstr(arg,"-") ) {
+            int  YY,MM,DD,HH,mm,SS ;
+            char a,b,c,d,e   ;
+            sscanf(arg,"%d%c%d%c%d%c%d%c%d%c%d",&YY,&a,&MM,&b,&DD,&c,&HH,&d,&mm,&e,&SS);
+
+            struct tm T;
+    #if 0
+            int tm_sec;     /* seconds (0 - 60) */
+            int tm_min;     /* minutes (0 - 59) */
+            int tm_hour;    /* hours (0 - 23) */
+            int tm_mday;    /* day of month (1 - 31) */
+            int tm_mon;     /* month of year (0 - 11) */
+            int tm_year;    /* year - 1900 */
+            int tm_wday;    /* day of week (Sunday = 0) */
+            int tm_yday;    /* day of year (0 - 365) */
+            int tm_isdst;   /* is summer time in effect? */
+            char *tm_zone;  /* abbreviation of timezone name */
+            long tm_gmtoff; /* offset from UTC in seconds */
+    #endif
+            memset(&T,sizeof(T),0);
+            T.tm_min  = mm  ;
+            T.tm_hour = HH  ;
+            T.tm_sec  = SS  ;
+            T.tm_year = YY -1900 ;
+            T.tm_mon  = MM -1    ;
+            T.tm_mday = DD  ;
+            result = mktime(&T);
+        }
+    } catch ( ... ) {};
+    return result ;
+}
+
+// West of GMT is negative (PDT = Pacific Daylight = -07:00 == -25200 seconds
+int timeZoneAdjust()
+{
+    time_t now = time(NULL);
+#if   defined(__CYGWIN__)
+    struct tm loc   ; memcpy(&loc  ,localtime(&now),sizeof(loc  ));
+    time_t gmt = timegm(&loc);
+    int offset = (int) ( ((long signed int) gmt) - ((long signed int) now) ) ;
+#elif defined(_MSC_VER)
+    TIME_ZONE_INFORMATION TimeZoneInfo;
+    GetTimeZoneInformation( &TimeZoneInfo );
+    int offset = - ((int)TimeZoneInfo.Bias + (int)TimeZoneInfo.DaylightBias) * 60;
+#else
+    int offset = local.tm_gmtoff ;
+#endif
+//  struct tm local ; memcpy(&local,localtime(&now),sizeof(local));
+//  struct tm utc   ; memcpy(&utc  ,gmtime   (&now),sizeof(utc  ));
+//  printf("local: offset = %6ld dst = %d time = %s", offset,local.tm_isdst, asctime(&local));
+//  printf("utc  : offset = %6ld dst = %d time = %s", 0     ,utc  .tm_isdst, asctime(&utc  ));
+
+//  printf("timeZoneAdjust = %d
",offset);
+    return offset ;
 }
 
 class UserData
 {
 public:
-	         UserData() : indent(0),count(0),nTrkpt(0),bTime(false),bEle(false)  {};
-	virtual ~UserData() {} ;
+             UserData() : indent(0),count(0),nTrkpt(0),bTime(false),bEle(false)  {};
+    virtual ~UserData() {} ;
 
 //  public data members
-	int    indent;
-	size_t count ;
-	int    nTrkpt;
-	bool   bTime ;
-	bool   bEle  ;
-	double ele;
-	double lat;
-	double lon;
-	time_t t;
+    int    indent;
+    size_t count ;
+    int    nTrkpt;
+    bool   bTime ;
+    bool   bEle  ;
+    double ele;
+    double lat;
+    double lon;
+    time_t t;
 };
 
 static void startElement(void* userData, const char* name, const char** atts )
 {
-	UserData* me = (UserData*) userData;
-	//for ( int i = 0 ; i < me->indent ; i++ ) printf(" ");
-	//printf("begin %s
",name);
-	me->bTime = strcmp(name,"time")==0;
-	me->bEle  = strcmp(name,"ele")==0;
-
-	if ( strcmp(name,"trkpt")==0 ) {
-		me->nTrkpt++;
-		while ( *atts ) {
-			const char* a=atts[0];
-			const char* v=atts[1];
-			if ( !strcmp(a,"lat") ) me->lon = atof(v);
-			if ( !strcmp(a,"lon") ) me->lat = atof(v);
-			atts += 2 ;
-		}
-	}
-	me->count++  ;
-	me->indent++ ;
+    UserData* me = (UserData*) userData;
+    //for ( int i = 0 ; i < me->indent ; i++ ) printf(" ");
+    //printf("begin %s
",name);
+    me->bTime = strcmp(name,"time")==0;
+    me->bEle  = strcmp(name,"ele")==0;
+
+    if ( strcmp(name,"trkpt")==0 ) {
+        me->nTrkpt++;
+        while ( *atts ) {
+            const char* a=atts[0];
+            const char* v=atts[1];
+            if ( !strcmp(a,"lat") ) me->lon = atof(v);
+            if ( !strcmp(a,"lon") ) me->lat = atof(v);
+            atts += 2 ;
+        }
+    }
+    me->count++  ;
+    me->indent++ ;
 }
 
 static void endElement(void* userData, const char* name)
 {
-	UserData* me = (UserData*) userData;
-	me->indent-- ;
-	if ( strcmp(name,"trkpt")==0 ) {
-		me->nTrkpt--;
-		printf("lat,lon = %f,%f ele = %f time = %ld %s",me->lat,me->lon,me->ele,(long int)me->t,"
"); // asctime(localtime(&me->t)) ) ; 
-	}
-	//for ( int i = 0 ; i < me->indent ; i++ ) printf(" ");
-	//printf("end %s
",name);
+    UserData* me = (UserData*) userData;
+    me->indent-- ;
+    if ( strcmp(name,"trkpt")==0 ) {
+        me->nTrkpt--;
+        printf("lat,lon = %f,%f ele = %f time = %ld %s",me->lat,me->lon,me->ele,(long int)me->t,"
"); // asctime(localtime(&me->t)) ) ;
+    }
+    //for ( int i = 0 ; i < me->indent ; i++ ) printf(" ");
+    //printf("end %s
",name);
 }
 
 void charHandler(void* userData,const char* s,int len)
 {
-	UserData* me = (UserData*) userData;
-
-	if ( me->nTrkpt == 1 ) {
-		char buffer[100];
-		int  l_max = 98 ; // lengthof(buffer) -2 ;
-
-		if ( me->bTime && len > 5 ) {
-			if ( len < l_max ) {
-				memcpy(buffer,s,len);
-				buffer[len]=0;
-				char* b = buffer ;
-				while ( *b == ' ' && b < buffer+len ) b++ ;
-				me->t = parseTime(b);
-			}
-			me->bTime=false;
-		}
-		if ( me->bEle && len > 5 ) {
-			if ( len < l_max ) {
-				memcpy(buffer,s,len);
-				buffer[len]=0;
-				char* b = buffer ;
-				while ( *b == ' ' && b < buffer+len ) b++ ;
-				me->ele = atof(b);
-			}
-			me->bEle=false;
-		}
-	}
+    UserData* me = (UserData*) userData;
+
+    if ( me->nTrkpt == 1 ) {
+        char buffer[100];
+        int  l_max = 98 ; // lengthof(buffer) -2 ;
+
+        if ( me->bTime && len > 5 ) {
+            if ( len < l_max ) {
+                memcpy(buffer,s,len);
+                buffer[len]=0;
+                char* b = buffer ;
+                while ( *b == ' ' && b < buffer+len ) b++ ;
+                me->t = parseTime(b);
+            }
+            me->bTime=false;
+        }
+        if ( me->bEle && len > 5 ) {
+            if ( len < l_max ) {
+                memcpy(buffer,s,len);
+                buffer[len]=0;
+                char* b = buffer ;
+                while ( *b == ' ' && b < buffer+len ) b++ ;
+                me->ele = atof(b);
+            }
+            me->bEle=false;
+        }
+    }
 }
 
 bool readDir(const char* path,size_t& count)
 {
-	strings_t files;
-	bool bResult = false;
+    strings_t files;
+    bool bResult = false;
 
 #ifdef _MSC_VER
-	DWORD attrs    =  GetFileAttributes(path);
-	bool  bOKAttrs =  attrs != INVALID_FILE_ATTRIBUTES;
-	bool  bIsDir   = (attrs  & FILE_ATTRIBUTE_DIRECTORY) ? true : false ;
-
-	if( bOKAttrs && bIsDir ) {
-		bResult = true ;
-
-		char     search[_MAX_PATH+10];
-		strcpy_s(search,_MAX_PATH,path);
-		strcat_s(search,_MAX_PATH,"\*");
-
-		WIN32_FIND_DATA ffd;
-		HANDLE  hFind = FindFirstFile(search, &ffd);
-		BOOL    bGo = hFind != INVALID_HANDLE_VALUE;
-
-		if ( bGo ) {
-			while ( bGo ) {
-				if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
-				{
-					// _tprintf(TEXT("  %s   <DIR>
"), ffd.cFileName);
-				}
-				else
-				{
-					files.push_back( std::string(ffd.cFileName));
-					printf("-> %s
",ffd.cFileName);
-				}
-				bGo = FindNextFile(hFind, &ffd) != 0;
-			}
-			CloseHandle(hFind);
-		}
-	}
+    DWORD attrs    =  GetFileAttributes(path);
+    bool  bOKAttrs =  attrs != INVALID_FILE_ATTRIBUTES;
+    bool  bIsDir   = (attrs  & FILE_ATTRIBUTE_DIRECTORY) ? true : false ;
+
+    if( bOKAttrs && bIsDir ) {
+        bResult = true ;
+
+        char     search[_MAX_PATH+10];
+        strcpy_s(search,_MAX_PATH,path);
+        strcat_s(search,_MAX_PATH,"\*");
+
+        WIN32_FIND_DATA ffd;
+        HANDLE  hFind = FindFirstFile(search, &ffd);
+        BOOL    bGo = hFind != INVALID_HANDLE_VALUE;
+
+        if ( bGo ) {
+            while ( bGo ) {
+                if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+                {
+                    // _tprintf(TEXT("  %s   <DIR>
"), ffd.cFileName);
+                }
+                else
+                {
+                    files.push_back( std::string(ffd.cFileName));
+                    printf("-> %s
",ffd.cFileName);
+                }
+                bGo = FindNextFile(hFind, &ffd) != 0;
+            }
+            CloseHandle(hFind);
+        }
+    }
 #else
-	DIR*	dir = opendir (path);
-	if (dir != NULL)
-	{
-		bResult = true;
-		struct dirent*	ent;
-
-		// print all the files and directories within directory
-		while ((ent = readdir (dir)) != NULL)
-		{
-			printf ("%s
", ent->d_name);
-			files.push_back(std::string(ent->d_name)) ;
-		}
-		closedir (dir);
-	}
+    DIR*    dir = opendir (path);
+    if (dir != NULL)
+    {
+        bResult = true;
+        struct dirent*  ent;
+
+        // print all the files and directories within directory
+        while ((ent = readdir (dir)) != NULL)
+        {
+            printf ("%s
", ent->d_name);
+            files.push_back(std::string(ent->d_name)) ;
+        }
+        closedir (dir);
+    }
 #endif
-	count = files.size();
-	return bResult ;
+    count = files.size();
+    return bResult ;
 }
 
 bool readXML(const char* path,size_t& count)
 {
-	FILE*		f		= fopen(path,"r");
-	XML_Parser	parser	= XML_ParserCreate(NULL);
-	bool bResult		= f && parser ;
-	if ( bResult ) {
-		char   buffer[8*1024];
-		UserData me ;
-
-		XML_SetUserData            (parser, &me);
-		XML_SetElementHandler      (parser, startElement, endElement);
-		XML_SetCharacterDataHandler(parser,charHandler);
-
-		// a little sip at the data
-		size_t len = fread(buffer,1,sizeof(buffer),f);
-		const char* lead   = "<?xml" ;
-		bResult = strncmp(lead,buffer,strlen(lead))==0;
-
-		// swallow it
-		if ( bResult ) {
-			bResult = XML_Parse(parser, buffer,(int)len, len == 0 ) == XML_STATUS_OK;
-		}
-
-		// drink the rest of the file
-		while ( bResult && !feof(f) ) {
-			len = fread(buffer,1,sizeof(buffer),f);
-			bResult = XML_Parse(parser, buffer,(int)len, len == 0 ) == XML_STATUS_OK;
-		};
-		count = me.count ;
-	}
-
-	if ( f		) fclose(f);
-	if ( parser ) XML_ParserFree(parser);
-
-	return bResult ;
+    FILE*       f       = fopen(path,"r");
+    XML_Parser  parser  = XML_ParserCreate(NULL);
+    bool bResult        = f && parser ;
+    if ( bResult ) {
+        char   buffer[8*1024];
+        UserData me ;
+
+        XML_SetUserData            (parser, &me);
+        XML_SetElementHandler      (parser, startElement, endElement);
+        XML_SetCharacterDataHandler(parser,charHandler);
+
+        // a little sip at the data
+        size_t len = fread(buffer,1,sizeof(buffer),f);
+        const char* lead   = "<?xml" ;
+        bResult = strncmp(lead,buffer,strlen(lead))==0;
+
+        // swallow it
+        if ( bResult ) {
+            bResult = XML_Parse(parser, buffer,(int)len, len == 0 ) == XML_STATUS_OK;
+        }
+
+        // drink the rest of the file
+        while ( bResult && !feof(f) ) {
+            len = fread(buffer,1,sizeof(buffer),f);
+            bResult = XML_Parse(parser, buffer,(int)len, len == 0 ) == XML_STATUS_OK;
+        };
+        count = me.count ;
+    }
+
+    if ( f      ) fclose(f);
+    if ( parser ) XML_ParserFree(parser);
+
+    return bResult ;
 }
 
 bool readImage(const char* path,size_t& count)
 {
-	using namespace Exiv2;
-	bool bResult = false ;
-	count = 0 ;
-
-	try {
-		Image::AutoPtr image = ImageFactory::open(path);
-		if ( image.get() ) {
-			image->readMetadata();
-			ExifData &exifData = image->exifData();
-			if ( !exifData.empty() ) {
-				bResult = true ;
-				count   = exifData.count();
-			}
-
-		}
-	} catch (Exiv2::Error& ) {};
-	return bResult ;
+    using namespace Exiv2;
+    bool bResult = false ;
+    count = 0 ;
+
+    try {
+        Image::AutoPtr image = ImageFactory::open(path);
+        if ( image.get() ) {
+            image->readMetadata();
+            ExifData &exifData = image->exifData();
+            if ( !exifData.empty() ) {
+                bResult = true ;
+                count   = exifData.count();
+            }
+
+        }
+    } catch (Exiv2::Error& ) {};
+    return bResult ;
 }
 
-// Exif.Image.DateTime                          Ascii      20  2012:07:15 16:51:01
-// Exif.Photo.DateTimeOriginal                  Ascii      20  2012:07:15 12:57:31
-// Exif.Photo.DateTimeDigitized                 Ascii      20  2012:07:15 12:57:31
-
 time_t readImageTime(const char* path)
 {
-	using namespace Exiv2;
-
-	time_t       result       = 0 ;
-	
-	const char* dateStrings[] = 
-	{ "Exif.Photo.DateTimeOriginal"
-	, "Exif.Photo.DateTimeDigitized" 
-	, "Exif.Image.DateTime"
-	, NULL
-	};
-	const char* ds            = dateStrings[0] ;
-
-	while ( !result && ds++  ) {
-		try {
-			Image::AutoPtr image = ImageFactory::open(path);
-			if ( image.get() ) {
-				image->readMetadata();
-				ExifData &exifData = image->exifData();
-			//	printf("%s => %s
",(ds-1), exifData[ds-1].toString().c_str());
-				result = parseTime(exifData[ds-1].toString().c_str());
-			}
-		} catch ( ... ) {};
-	}
-	return result ;
+    using namespace Exiv2;
+
+    time_t       result       = 0 ;
+
+    const char* dateStrings[] =
+    { "Exif.Photo.DateTimeOriginal"
+    , "Exif.Photo.DateTimeDigitized"
+    , "Exif.Image.DateTime"
+    , NULL
+    };
+    const char* ds            = dateStrings[0] ;
+
+    while ( !result && ds++  ) {
+        try {
+            Image::AutoPtr image = ImageFactory::open(path);
+            if ( image.get() ) {
+                image->readMetadata();
+                ExifData &exifData = image->exifData();
+            //  printf("%s => %s
",(ds-1), exifData[ds-1].toString().c_str());
+                result = parseTime(exifData[ds-1].toString().c_str());
+            }
+        } catch ( ... ) {};
+    }
+    return result ;
 }
 
 
 
 bool readFile(const char* path,size_t& count)
 {
-	FILE*		f		= fopen(path,"r");
-	bool bResult		= f ? true : false;
-	if ( bResult ) {
-		fseek(f,0L,SEEK_END);
-		count = ftell(f);
-	}
-	if ( f ) fclose(f) ;
-
-	return bResult ;
+    FILE*       f       = fopen(path,"r");
+    bool bResult        = f ? true : false;
+    if ( bResult ) {
+        fseek(f,0L,SEEK_END);
+        count = ftell(f);
+    }
+    if ( f ) fclose(f) ;
+
+    return bResult ;
 }
 
 int getFileType(const char* path,size_t& count)
 {
-	return readXML  (path,count) ? typeXML
-		:  readDir  (path,count) ? typeDirectory
-		:  readImage(path,count) ? typeImage
-		:  readFile (path,count) ? typeFile
-		:  typeUnknown
-		;
+    return readXML  (path,count) ? typeXML
+        :  readDir  (path,count) ? typeDirectory
+        :  readImage(path,count) ? typeImage
+        :  readFile (path,count) ? typeFile
+        :  typeUnknown
+        ;
 }
 
 int main(int argc, char* const argv[])
@@ -386,90 +405,93 @@ int main(int argc, char* const argv[])
     }
 
 #if 0
-	char const* keywords[kwMAX];
-	memset(keywords,0,sizeof(keywords));
-	keywords[kwHELP] 	= "help";
-	keywords[kwVERSION] = "version";
-	keywords[kwARGS]    = "args";
-	keywords[kwNOCR] 	= "nocr";
-	keywords[kwUNSPACE] = "unspace";
-	keywords[kwCLOSE] 	= "close";
-	keywords[kwOPEN] 	= "open";
-	keywords[kwEND1] 	= "end1";
-	keywords[kwEND2] 	= "end2";
-	keywords[kwSLEEP] 	= "sleep";
-	keywords[kwT1]		= "t1";
-	keywords[kwT2]		= "t2";
-	keywords[kwSPEED] 	= "speed";
-	keywords[kwSEND] 	= "send";
-	keywords[kwOUTPUT] 	= "output";
-
-	if ( argc < 2 ) help(program,keywords,kwMAX) ;
-
-	for ( int a = 0 ; !result && a < 2 ; a++ ) { // a = 0 is a dry run
-		options	options ;
-		for ( int i = 1 ; !result && i < argc ; i++ ) {
-			const char* arg   = argv[i++];
-			const char* value = argv[i  ];
-			int        ivalue = atoi(value?value:"0");
-			int         key   = find(arg,keywords,kwMAX);
-			int         needv = key < kwMAX && key > (-kwNOVALUE);
-
-			if (!needv ) i--;
-			if ( needv && !value ) key = kwNEEDVALUE;
-			if ( arg[0] != '-'   ) key = kwSYNTAX;
-
-			switch ( key ) {
-				case kwHELP 	: if ( a ) { /* help(program,keywords,kwMAX)               ; */ } break;
-				case kwARGS 	: if ( a ) { /* args(argv,argc)							   ; */ } break;
-				case kwVERSION 	: if ( a ) { /* version(program)   			               ; */ } break;
-				case kwNOCR 	: if ( a ) { /* options.bNOCR=true	   			           ; */ } break;
-				case kwUNSPACE 	: if ( a ) { /* options.bUnspace=true			           ; */ } break;
-				case kwCLOSE 	: if ( a ) { /* modem_close(options) 	                   ; */ } break;
-				case kwOPEN 	: if ( a ) { /* options.open = value                       ; }*/  break ;
-				case kwEND1 	: if ( a ) { /* options.end1=value	   			           ; */ } break;
-				case kwEND2 	: if ( a ) { /* options.end2=value	   			           ; */ } break;
-				case kwSLEEP	: if ( a ) { /* sleep(ivalue)                              ; }*/  break ;
-				case kwT1 		: if ( a ) { /* options.t1=ivalue 				           ; }*/  break ;
-				case kwT2		: if ( a ) { /* options.t2=ivalue					       ; */ } break;
-				case kwSPEED	: if ( a ) { /* options.speed=ivalue			           ; }*/  break ;
+    char const* keywords[kwMAX];
+    memset(keywords,0,sizeof(keywords));
+    keywords[kwHELP]    = "help";
+    keywords[kwVERSION] = "version";
+    keywords[kwARGS]    = "args";
+    keywords[kwNOCR]    = "nocr";
+    keywords[kwUNSPACE] = "unspace";
+    keywords[kwCLOSE]   = "close";
+    keywords[kwOPEN]    = "open";
+    keywords[kwEND1]    = "end1";
+    keywords[kwEND2]    = "end2";
+    keywords[kwSLEEP]   = "sleep";
+    keywords[kwT1]      = "t1";
+    keywords[kwT2]      = "t2";
+    keywords[kwSPEED]   = "speed";
+    keywords[kwSEND]    = "send";
+    keywords[kwOUTPUT]  = "output";
+
+    if ( argc < 2 ) help(program,keywords,kwMAX) ;
+
+    for ( int a = 0 ; !result && a < 2 ; a++ ) { // a = 0 is a dry run
+        options options ;
+        for ( int i = 1 ; !result && i < argc ; i++ ) {
+            const char* arg   = argv[i++];
+            const char* value = argv[i  ];
+            int        ivalue = atoi(value?value:"0");
+            int         key   = find(arg,keywords,kwMAX);
+            int         needv = key < kwMAX && key > (-kwNOVALUE);
+
+            if (!needv ) i--;
+            if ( needv && !value ) key = kwNEEDVALUE;
+            if ( arg[0] != '-'   ) key = kwSYNTAX;
+
+            switch ( key ) {
+                case kwHELP     : if ( a ) { /* help(program,keywords,kwMAX)               ; */ } break;
+                case kwARGS     : if ( a ) { /* args(argv,argc)                            ; */ } break;
+                case kwVERSION  : if ( a ) { /* version(program)                           ; */ } break;
+                case kwNOCR     : if ( a ) { /* options.bNOCR=true                         ; */ } break;
+                case kwUNSPACE  : if ( a ) { /* options.bUnspace=true                      ; */ } break;
+                case kwCLOSE    : if ( a ) { /* modem_close(options)                       ; */ } break;
+                case kwOPEN     : if ( a ) { /* options.open = value                       ; }*/  break ;
+                case kwEND1     : if ( a ) { /* options.end1=value                         ; */ } break;
+                case kwEND2     : if ( a ) { /* options.end2=value                         ; */ } break;
+                case kwSLEEP    : if ( a ) { /* sleep(ivalue)                              ; }*/  break ;
+                case kwT1       : if ( a ) { /* options.t1=ivalue                          ; }*/  break ;
+                case kwT2       : if ( a ) { /* options.t2=ivalue                          ; */ } break;
+                case kwSPEED    : if ( a ) { /* options.speed=ivalue                       ; }*/  break ;
 /*
-				case kwSEND 	: if ( a )
-				{
-					result=modem_send(value,options);
-					if ( result == resultTimeout && options.t2 > 0 )
-						result = modem_send(value,options,true);
-				} break ;
-				case kwOUTPUT 	: if ( a ) { printf("%s",value) ;						; } break ;
+                case kwSEND     : if ( a )
+                {
+                    result=modem_send(value,options);
+                    if ( result == resultTimeout && options.t2 > 0 )
+                        result = modem_send(value,options,true);
+                } break ;
+                case kwOUTPUT   : if ( a ) { printf("%s",value) ;                       ; } break ;
 */
-				case kwNEEDVALUE: fprintf(stderr,"error: %s requires a value
",arg); result = resultSyntaxError ; break ;
-				default 		: fprintf(stderr,"error: illegal syntax %s
",arg)  ; result = resultSyntaxError ; break ;
-			}
-			if ( a ) fflush(stdout);
-			// if ( options.fd < -1 ) result = resultOpenFailed ;
-		}
-	}
+                case kwNEEDVALUE: fprintf(stderr,"error: %s requires a value
",arg); result = resultSyntaxError ; break ;
+                default         : fprintf(stderr,"error: illegal syntax %s
",arg)  ; result = resultSyntaxError ; break ;
+            }
+            if ( a ) fflush(stdout);
+            // if ( options.fd < -1 ) result = resultOpenFailed ;
+        }
+    }
 #endif
 
-	const char* types[typeMax];
-	types[typeUnknown  ] = "unknown";
-	types[typeDirectory] = "directory";
-	types[typeImage    ] = "image";
-	types[typeXML      ] = "xml";
-	types[typeFile     ] = "file";
-
-	for ( int i = 1 ; i < argc ; i++ ) {
-		char* arg = argv[i];
-		size_t count = 0   ;
-		time_t t     = 0   ;
-		int   type   = getFileType(arg,count) ;
-		printf("%s %s %d",arg,types[type],count) ;
-		if ( type == typeImage ) {
-			t = readImageTime(arg) ;
-			if ( t ) printf(" %ld ",(long int)t);
-		}
-		puts(t ? asctime(localtime(&t)) : "" );
-	}
+    const char* types[typeMax];
+    types[typeUnknown  ] = "unknown";
+    types[typeDirectory] = "directory";
+    types[typeImage    ] = "image";
+    types[typeXML      ] = "xml";
+    types[typeFile     ] = "file";
+
+    int tzadjust = timeZoneAdjust();
+    printf("tzadjust seconds = %d HH:MM = %c%02d:%02d [-/+ = West/East of UTC]
",tzadjust,tzadjust<0?'-':'+',abs(tzadjust/3600),tzadjust%3600);
+
+    for ( int i = 1 ; i < argc ; i++ ) {
+        char* arg = argv[i];
+        size_t count = 0   ;
+        time_t t     = 0   ;
+        int   type   = getFileType(arg,count) ;
+        printf("%s %s %d",arg,types[type],count) ;
+        if ( type == typeImage ) {
+            t = readImageTime(arg) ;
+            if ( t ) printf(" %ld ",(long int)t);
+        }
+        puts(t ? asctime(localtime(&t)) : "" );
+    }
 
     return 0;
 }

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list