- for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
- zsui; zsui=zsui->next)
- if (zsui->info.index_type == index_type &&
- zsui->info.which == ZEB_SU_STR && !strcmp(zsui->info.u.str, str))
- return zsui->info.ordinal;
+ for (zsui = &zei->curDatabaseInfo->attributeDetails->SUInfo;
+ *zsui; zsui = &(*zsui)->next)
+ if ((*zsui)->info.index_type == index_type
+ && (*zsui)->info.which == ZEB_SU_STR
+ && !strcmp((*zsui)->info.u.str, str))
+ {
+ struct zebSUInfoB *zsui_this = *zsui;
+
+ /* take it out of the list and move to front */
+ *zsui = (*zsui)->next;
+ zsui_this->next = zei->curDatabaseInfo->attributeDetails->SUInfo;
+ zei->curDatabaseInfo->attributeDetails->SUInfo = zsui_this;
+
+ return zsui_this->info.ordinal;
+ }