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;
#ifsql INGRES
- EXEC SQL CONNECT sms;
+ EXEC SQL CONNECT moira;
#endsql
#ifsql INFORMIX
- EXEC SQL DATABASE sms;
+ EXEC SQL DATABASE moira;
#endsql
if (argc == 2) {
init_letter();
+ /* The following is declarative, not executed,
+ * and so is dependent on where it is in the file,
+ * not in the order of execution of statements.
+ */
EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
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);
}
int when;
{
register char *p;
- char buf[256], *a1, *a2;
+ char buf[256], *a1, *a2, *d;
char *rindex();
/* split address into two lines.
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--);
/* Must be interdepartmental */
a2 = "MIT INTERDEPARTMENTAL MAIL";
}
+ d = ctime(&when);
+ d[strlen(d)-1] = 0;
for (p = letter_text; *p; p++) {
if (*p == '%') {
}
break;
case 'd':
- fputs(ctime(&when), out);
- break;
- case '%':
- putc('%', out);
+ fputs(d, out);
break;
default:
putc('%', out);