* List
* String
* Machine
+ * Subnet
* Cluster
* Filesystem
* then we will have to rework the code that only looks at the first
char *iname;
int j, rowcount;
EXEC SQL END DECLARE SECTION;
+ char key;
int h, ctr;
h = hashname(name, type);
cachemisses++;
iname = name;
+ key = *type;
- switch (*type) {
+ if (!strcasecmp(type, "subnet"))
+ key = 'N';
+
+ switch (key) {
case 'U':
case 'u':
+ if (index(iname, '@') || (strlen(iname) > 8)) {
+ sqlca.sqlcode = 100;
+ break;
+ }
EXEC SQL SELECT users_id INTO :j FROM users WHERE login=:iname;
break;
case 'L':
break;
case 'M':
case 'm':
- EXEC SQL SELECT mach_id INTO :j FROM machine WHERE name=uppercase(:iname);
+ EXEC SQL SELECT mach_id INTO :j FROM machine WHERE name=UPPERCASE(:iname);
+ break;
+ case 'N':
+ case 'n':
+ EXEC SQL SELECT snet_id INTO :j FROM subnet WHERE name=UPPERCASE(:iname);
break;
case 'C':
case 'c':
char iname[NAMESZ];
int j, rowcount;
EXEC SQL END DECLARE SECTION;
+ char key;
int ctr;
for (i = cachehead.next; i != &cachehead; i = i->next) {
cachemisses++;
j = id;
+ key = *type;
+ if (!strcasecmp(type, "subnet"))
+ key = 'N';
- switch (*type) {
+ switch (key) {
case 'U':
case 'u':
- EXEC SQL SELECT login INTO :iname FROM users WHERE users_id=:j;
+ EXEC SQL SELECT CHAR(login) INTO :iname FROM users WHERE users_id=:j;
break;
case 'L':
case 'l':
- EXEC SQL SELECT name INTO :iname FROM list WHERE list_id=:j;
+ EXEC SQL SELECT CHAR(name) INTO :iname FROM list WHERE list_id=:j;
break;
case 'M':
case 'm':
- EXEC SQL SELECT name INTO :iname FROM machine WHERE mach_id=:j;
+ EXEC SQL SELECT CHAR(name) INTO :iname FROM machine WHERE mach_id=:j;
+ break;
+ case 'N':
+ case 'n':
+ EXEC SQL SELECT CHAR(name) INTO :iname FROM subnet WHERE snet_id=:j;
break;
case 'C':
case 'c':
- EXEC SQL SELECT name INTO :iname FROM cluster WHERE clu_id=:j;
+ EXEC SQL SELECT CHAR(name) INTO :iname FROM cluster WHERE clu_id=:j;
break;
case 'F':
case 'f':
- EXEC SQL SELECT label INTO :iname FROM filesys WHERE filsys_id=:j;
+ EXEC SQL SELECT CHAR(label) INTO :iname FROM filesys WHERE filsys_id=:j;
break;
case 'S':
case 's':
- EXEC SQL SELECT string INTO :iname FROM strings WHERE string_id=:j;
+ EXEC SQL SELECT CHAR(string) INTO :iname FROM strings WHERE string_id=:j;
break;
default:
return(MR_INTERNAL);