- EXEC SQL BEGIN DECLARE SECTION;
- int who, status;
- char *login, *entity, *name;
- char fullname[129];
- EXEC SQL END DECLARE SECTION;
-#ifdef GDSS
- char databuf[32], *kname_unparse();
- EXEC SQL BEGIN DECLARE SECTION;
- char rawsig[128];
- int sigwho, timestamp;
- EXEC SQL END DECLARE SECTION;
- SigInfo si;
-#endif /* GDSS */
-
- /* build fullname */
- if (strlen(argv[4]) && strlen(argv[5]))
- sprintf(fullname, "%s %s %s", argv[4], argv[5], argv[3]);
- else if (strlen(argv[4]))
- sprintf(fullname, "%s %s", argv[4], argv[3]);
- else
- sprintf(fullname, "%s", argv[3]);
-
-#ifdef GDSS
- if (q->vcnt == U_END && *argv[U_SIGNATURE]) {
- sprintf(databuf, "%s:%s", argv[U_NAME], argv[U_MITID]);
- /* skip bytes for timestamp & kname */
- si.rawsig = (unsigned char *) rawsig;
- status = GDSS_Verify(databuf, strlen(databuf), argv[U_SIGNATURE], &si);
- if (strlen(rawsig) > mr_sig_length) {
- com_err(whoami, 0, "GDSS signature would be truncated."); /** untested **/
- return(MR_INTERNAL);
- }
- if (status == 0) {
- name = kname_unparse(si.pname, si.pinst, si.prealm);
- status = name_to_id(name, STRINGS_TABLE, &sigwho);
- if (status == MR_NO_MATCH) {
- sigwho=add_string(name);
- } else if (status)
- return(status);
- timestamp = si.timestamp;
- } else {
- if (log_flags & LOG_GDSS)
- hex_dump(argv[U_SIGNATURE]);
- return(gdss2et(status));
- }
- } else {
- rawsig[0] = 0;
- sigwho = 0;
- timestamp = 0;
- }
-#endif /* GDSS */
-
- login = argv[0];
- who = cl->client_id;
- entity = cl->entity;
-
- /* create finger entry, pobox & set modtime on user */
-#ifdef GDSS
- EXEC SQL UPDATE users
- SET modtime=SYSDATE, modby=:who, modwith = :entity,
- fullname = NVL(:fullname,CHR(0)), affiliation = type,
- signature = NVL(:rawsig,CHR(0)), sigdate = :timestamp,
- sigwho = :sigwho, fmodtime=SYSDATE, fmodby = :who,
- fmodwith = :entity, potype='NONE', pmodtime=SYSDATE,
- pmodby = :who, pmodwith = :entity
- WHERE login = :login;
-#else /* GDSS */
- EXEC SQL UPDATE users
- SET modtime=SYSDATE, modby=:who, modwith = :entity,
- fullname = NVL(:fullname,CHR(0)), affiliation = type,
- fmodtime=SYSDATE, fmodby = :who, fmodwith = :entity,
- potype='NONE', pmodtime=SYSDATE, pmodby = :who, pmodwith = :entity
- WHERE login = :login;
-#endif /* GDSS */
-
- return(MR_SUCCESS);
+ EXEC SQL BEGIN DECLARE SECTION;
+ int who, status;
+ char *login, *entity, *name;
+ char fullname[USERS_FIRST_SIZE + USERS_MIDDLE_SIZE + USERS_LAST_SIZE];
+ EXEC SQL END DECLARE SECTION;
+
+ /* build fullname */
+ if (strlen(argv[U_FIRST]) && strlen(argv[U_MIDDLE]))
+ sprintf(fullname, "%s %s %s", argv[U_FIRST], argv[U_MIDDLE],
+ argv[U_LAST]);
+ else if (strlen(argv[U_FIRST]))
+ sprintf(fullname, "%s %s", argv[U_FIRST], argv[U_LAST]);
+ else
+ sprintf(fullname, "%s", argv[U_LAST]);
+
+ login = argv[0];
+ who = cl->client_id;
+ entity = cl->entity;
+
+ /* create finger entry, pobox & set modtime on user */
+ EXEC SQL UPDATE users
+ SET modtime = SYSDATE, modby = :who, modwith = :entity,
+ fullname = NVL(:fullname, CHR(0)), affiliation = type,
+ fmodtime = SYSDATE, fmodby = :who, fmodwith = :entity,
+ potype = 'NONE', pmodtime = SYSDATE, pmodby = :who, pmodwith = :entity
+ WHERE login = :login;
+
+ return MR_SUCCESS;