dbase_fd = open(argv[1], O_RDWR|O_CREAT|O_TRUNC, 0660);
if (dbase_fd < 0) {
- perror("opening file %s", argv[1]);
+ perror("opening data file");
exit(1);
}
{
EXEC SQL BEGIN DECLARE SECTION;
char name[33], string[129];
- int gid, id, lid, hide, ustatus;
+ int gid, id, lid, hide, ustatus, root_flag;
EXEC SQL END DECLARE SECTION;
long status, pos;
FROM strings WHERE string_id = :id;
aid = 0;
+ root_flag = 0;
+ ustatus = NULL;
strtrim(string);
- if (p = (char *)index(string, '@')) {
+ if (p = strchr(string, '@'))
+ {
*p = 0;
- if (strcmp(p+1, "ATHENA.MIT.EDU")) aid = -1;
- } else aid = -1;
-
- if ((p = (char *)index(string, '.')) && (p-string) < 9 &&
- !strcmp(p+1, "root"))
- {
+ if (strcmp(p+1, "ATHENA.MIT.EDU"))
+ aid = -1;
+ }
+ else aid = -1;
+
+ p = strchr(string, '.');
+ if ((!p) && (strlen(string) < 9))
+ strcpy(name, string);
+ else if ((p-string) < 9 && !strcmp(p+1, "root"))
+ {
strncpy(name, string, p-string);
name[p-string] = 0;
- } else aid = -1;
+ root_flag = 1;
+ }
+ else
+ aid = -1;
if (aid == 0) {
EXEC SQL DECLARE k_cursor2 CURSOR FOR
WHERE login = :name
ORDER BY unix_uid;
EXEC SQL OPEN k_cursor2;
- while (1) {
- if (sqlca.sqlcode) break;
- EXEC SQL FETCH k_cursor2 INTO :lid, :ustatus;
- if (ustatus==1 || ustatus==2) aid = lid+65536;
+ while (1)
+ {
+ if (sqlca.sqlcode)
+ break;
+ EXEC SQL FETCH k_cursor2 INTO :lid, :ustatus;
+ if (ustatus==1 || ustatus==2)
+ {
+ if (root_flag == 1)
+ aid = lid+65536;
+ else
+ aid = lid;
+ }
}
EXEC SQL CLOSE k_cursor2;
}