]> andersk Git - moira.git/blobdiff - gen/letter.dc
make it work with current database (db & field names changed)
[moira.git] / gen / letter.dc
index 10d01c7cf4d33686e0aa491639aa63e30ba06ae4..adb9044c54ab7903351aefd62b66e61ce2b0a288 100644 (file)
@@ -33,8 +33,9 @@ char **argv;
     char *outf = NULL, outft[64];
     struct stat sb;
     int flag;
+    struct timeval tv;
     EXEC SQL BEGIN DECLARE SECTION;
-    char login[10], fullname[34], addr[84];
+    char login[10], first[17], last[17], fullname[34], addr[84];
     int lastrun, when;
     EXEC SQL END DECLARE SECTION;
 
@@ -72,20 +73,29 @@ char **argv;
 
     EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
 
-    lastrun = sb.st_mtime;
+    EXEC SQL SELECT secure INTO :lastrun FROM users WHERE users_id = 0;
+
+    gettimeofday(&tv, NULL);
+
     EXEC SQL DECLARE x CURSOR FOR SELECT 
-      login, fullname, xaddress, secure
+      login, first, last, xaddress, secure
        FROM users WHERE secure > :lastrun;
     EXEC SQL OPEN x;
     while (1) {
-       EXEC SQL FETCH x INTO :login, :fullname, :addr, :when;
+       EXEC SQL FETCH x INTO :login, :first, :last, :addr, :when;
        if (sqlca.sqlcode != 0) break;
        strtrim(login);
-       strtrim(fullname);
+       strtrim(first);
+       strtrim(last);
+       sprintf(fullname, "%s %s", first, last);
        print_letter(out, login, fullname, strtrim(addr), when);
     }
 
     EXEC SQL CLOSE x;
+
+    lastrun = tv.tv_sec;
+    EXEC SQL UPDATE users SET secure = :lastrun WHERE users_id = 0;
+
 #ifsql INGRES
     EXEC SQL DISCONNECT;
 #endsql
@@ -150,7 +160,7 @@ char *login, *fullname, *addr;
 int when;
 {
     register char *p;
-    char buf[256], *a1, *a2;
+    char buf[256], *a1, *a2, *d;
     char *rindex();
 
     /* split address into two lines.
@@ -169,6 +179,7 @@ int when;
        for (p = a2; *p; p++);          /* find end of string */
        for (p--; isdigit(*p); p--)
          p[2] = p[1];
+       p[2] = p[1];
        p[1] = ' ';
        /* Backup to previous space, start of state */
        for (; *a2 != ' '; a2--);
@@ -180,8 +191,8 @@ int when;
        /* Must be interdepartmental */
        a2 = "MIT INTERDEPARTMENTAL MAIL";
     }
-
-    com_err(whoami, 0, "addr = \"%s\", a1 = \"%s\", a2 = \"%s\"", addr, a1, a2);
+    d = ctime(&when);
+    d[strlen(d)-1] = 0;
 
     for (p = letter_text; *p; p++) {
        if (*p == '%') {
@@ -210,10 +221,7 @@ int when;
                }
                break;
            case 'd':
-               fputs(ctime(&when), out);
-               break;
-           case '%':
-               putc('%', out);
+               fputs(d, out);
                break;
            default:
                putc('%', out);
This page took 0.115478 seconds and 4 git commands to generate.