Log Message:
-----------
Lose the PID column that we can no longer get from the logfilename, and error if the 
filename is not in the standard format.

Modified Files:
--------------
    pgadmin-tools/support:
        admin.sql.in (r1.3 -> r1.4)
        misc.c (r1.6 -> r1.7)

Index: admin.sql.in
===================================================================
RCS file: /projects/pgadmin-tools/support/admin.sql.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lsupport/admin.sql.in -Lsupport/admin.sql.in -u -w -r1.3 -r1.4
--- support/admin.sql.in
+++ support/admin.sql.in
@@ -79,4 +79,4 @@
 CREATE VIEW pg_logdir_ls AS
        SELECT *
        FROM pg_logdir_ls() AS A
-       (filetime timestamp, pid int4, filename text);
+       (filetime timestamp, filename text);
Index: misc.c
===================================================================
RCS file: /projects/pgadmin-tools/support/misc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lsupport/misc.c -Lsupport/misc.c -u -w -r1.6 -r1.7
--- support/misc.c
+++ support/misc.c
@@ -30,7 +30,7 @@
 
 extern DLLIMPORT char *DataDir;
 extern DLLIMPORT char *Log_directory;
-extern DLLIMPORT char *Log_filename_prefix;
+extern DLLIMPORT char *Log_filename;
 extern DLLIMPORT pid_t PostmasterPid;
 
 Datum pg_reload_conf(PG_FUNCTION_ARGS);
@@ -98,6 +98,11 @@
                                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
                                 (errmsg("only superuser can list the log 
directory"))));
 
+       if (memcmp(Log_filename, "postgresql-%Y-%m-%d_%H%M%S.log", 30) != 0)
+               ereport(ERROR,
+                               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+                                (errmsg("the log_filename parameter must equal 
'postgresql-%%Y-%%m-%%d_%%H%%M%%S.log'"))));
+
        if (SRF_IS_FIRSTCALL())
        {
                MemoryContext oldcontext;
@@ -114,12 +119,10 @@
                        fctx->location = palloc(strlen(DataDir) + 
strlen(Log_directory) +2);
                        sprintf(fctx->location, "%s/%s", DataDir, Log_directory);
                }
-               tupdesc = CreateTemplateTupleDesc(3, false);
+               tupdesc = CreateTemplateTupleDesc(2, false);
                TupleDescInitEntry(tupdesc, (AttrNumber) 1, "starttime",
                                                   TIMESTAMPOID, -1, 0);
-               TupleDescInitEntry(tupdesc, (AttrNumber) 2, "pid",
-                                                  INT4OID, -1, 0);
-               TupleDescInitEntry(tupdesc, (AttrNumber) 3, "filename",
+               TupleDescInitEntry(tupdesc, (AttrNumber) 2, "filename",
                                                   TEXTOID, -1, 0);
 
                funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
@@ -143,9 +146,8 @@
 
        while ((de = readdir(fctx->dirdesc)) != NULL)
        {
-           char *values[3];
+               char *values[2];
                HeapTuple tuple;
-               int prefixLen=strlen(Log_filename_prefix);
             
                char       *field[MAXDATEFIELDS];
                char            lowstr[MAXDATELEN + 1];
@@ -154,35 +156,23 @@
                fsec_t          fsec;
                int                     tz = 0;
                struct pg_tm date;
-               int         i;
 
                /*
-                * format as created in logfile_getname():
-                *        prefix_PPPPP_YYYY-MM-DD_HHMMSS.log
-                *   prefixLen   ^
-                *       prefixLen+5   ^
-                *                       prefixLen+23   ^
+                * Default format:
+                *        postgresql-YYYY-MM-DD_HHMMSS.log
                 */
-               if (strlen(de->d_name) != prefixLen + 27
-                   || memcmp(de->d_name, Log_filename_prefix, prefixLen)
-                       || de->d_name[prefixLen + 5] != '_'
-                       || strcmp(de->d_name + prefixLen + 23, ".log"))
+               if (strlen(de->d_name) != 32
+                   || memcmp(de->d_name, "postgresql-", 11)
+                       || de->d_name[21] != '_'
+                       || strcmp(de->d_name + 28, ".log"))
                      continue;
 
-               values[2] = palloc(strlen(fctx->location) + strlen(de->d_name) + 2);
-               sprintf(values[2], "%s/%s", fctx->location, de->d_name);
+               values[1] = palloc(strlen(fctx->location) + strlen(de->d_name) + 2);
+               sprintf(values[1], "%s/%s", fctx->location, de->d_name);
 
-               values[0] = de->d_name + prefixLen+6;       /* timestamp */
+               values[0] = de->d_name + 11;       /* timestamp */
                values[0][17] = 0;
 
-               values[1] = de->d_name + prefixLen;          /* pid */
-               values[1][5] = 0;
-
-               /* check if pid is purely numeric as expected */
-               for (i = 0 ; i < 5 ; i++)
-                   if (!isdigit(values[0][i]))
-                               continue;
-
                     /* parse and decode expected timestamp */
                if (ParseDateTime(values[0], lowstr, field, ftype, MAXDATEFIELDS, &nf))
                    continue;
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to