- /* Lazy programming here. Call this function as a ForEachUser backend
- * in order to queue up the room names, or call it with a null user
- * to make it do the processing.
- */
- if (usbuf != NULL) {
- ptr = (struct ubnlist *) malloc(sizeof (struct ubnlist));
- if (ptr == NULL) return;
-
- ptr->usernum = usbuf->usernum;
- safestrncpy(ptr->username, usbuf->fullname, sizeof ptr->username);
- ptr->next = u;
- u = ptr;
- return;
- }
-
- while (u != NULL) {
- syslog(LOG_DEBUG, "user_ops: rebuilding usersbynumber index %10ld : %s", u->usernum, u->username);
- cdb_store(CDB_USERSBYNUMBER, &u->usernum, sizeof(long), u->username, strlen(u->username)+1);
- ptr = u;
- u = u->next;
- free(ptr);
+ syslog(LOG_DEBUG, "user_ops: rebuilding usersbynumber index for %s", username);
+ if (CtdlGetUser(&u, username) == 0) {
+ cdb_store(CDB_USERSBYNUMBER, &(u.usernum), sizeof(long), u.fullname, strlen(u.fullname)+1);