File logrotate-3.7.8-autoext.patch of Package logrotate

Index: config.c
===================================================================
--- config.c.orig
+++ config.c
@@ -583,6 +583,7 @@ static int readConfigFile(const char *co
     char **scriptDest = NULL;
     struct logInfo *newlog = defConfig;
     char *start, *chptr;
+    char *compresscmd_base;
     char *dirName;
     struct group *group;
     struct passwd *pw = NULL;
@@ -1205,6 +1206,18 @@ static int readConfigFile(const char *co
 					message(MESS_DEBUG, "compress_prog is now %s\n",
 						newlog->compress_prog);
 
+			 		compresscmd_base=strdup(basename(newlog->compress_prog));
+			 		i=0; /* have to check whether we may do this! */
+			 		/* we check whether we changed the compress_cmd. In case we use the apropriate extension
+			 		   as listed in compress_cmd_list */
+			 		while ((i>=0)&&(strcmp(compress_cmd_list[i][0], "EOLIST"))){
+			 		    if (0==strcmp(compress_cmd_list[i][0], compresscmd_base)){
+			 			newlog->compress_ext=strdup((char *)compress_cmd_list[i][1]);
+			 			message(MESS_DEBUG, "compress_ext was changed to %s\n", newlog->compress_ext);
+			 			i=-10; /* terminate loop! */
+			 		    }
+			 		    i++;
+			 		}
 				} else if (!strcmp(key, "uncompresscmd")) {
 					freeLogItem (uncompress_prog);
 
Index: logrotate.c
===================================================================
--- logrotate.c.orig
+++ logrotate.c
@@ -76,6 +76,16 @@ unsigned int hashSize;
 int numLogs = 0;
 int debug = 0;
 char *mailCommand = DEFAULT_MAIL_COMMAND;
+/* This is the declaration. Note the "2" is needed in the definition (logrotate.h), too! */
+const char * compress_cmd_list[][2] = {
+  {"gzip", ".gz"},
+  {"bzip2", ".bz2"},
+  {"xz", ".xz"},
+  {"compress", ".Z"},
+  {"zip", "zip"},
+  {"EOLIST", "EOLIST"} /* end-marker */
+};
+
 time_t nowSecs = 0;
 static uid_t save_euid;
 static gid_t save_egid;
Index: logrotate.h
===================================================================
--- logrotate.h.orig
+++ logrotate.h
@@ -66,6 +66,9 @@ TAILQ_HEAD(logInfoHead, logInfo) logs;
 extern int numLogs;
 extern int debug;
 
+/* This is the definition. Note we have to carry the "2" within the declaration (logrotate.c), too! */
+extern const char * compress_cmd_list[][2];
+
 int readAllConfigPaths(const char **paths);
 #if !defined(asprintf)
 int asprintf(char **string_ptr, const char *format, ...);
openSUSE Build Service is sponsored by