Generate built-in OIDs from oid.csv.
[yaz-moved-to-github.git] / client / client.c
index 59a70c2..d8edfe1 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2007, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: client.c,v 1.332 2007-04-12 13:52:57 adam Exp $
+ * $Id: client.c,v 1.334 2007-04-16 21:53:08 adam Exp $
  */
 /** \file client.c
  *  \brief yaz-client program
@@ -339,9 +339,7 @@ static void send_initRequest(const char* type_and_host)
 
     if (yazProxy && type_and_host)
     {
-        const int *oid_proxy = yaz_string_to_oid(yaz_oid_std(),
-                                                 CLASS_USERINFO, OID_STR_PROXY);
-        yaz_oi_set_string_oid(&req->otherInfo, out, oid_proxy,
+        yaz_oi_set_string_oid(&req->otherInfo, out, yaz_oid_userinfo_proxy,
                               1, type_and_host);
     }
     
@@ -859,10 +857,7 @@ static void print_record(const unsigned char *buf, size_t len)
 
 static void display_record(Z_External *r)
 {
-    char oid_name_buf[OID_STR_MAX];
-    int oclass;
     const int *oid = r->direct_reference;
-    const char *oid_name = 0;
     
     record_last = r;
     /*
@@ -870,7 +865,10 @@ static void display_record(Z_External *r)
      */
     if (oid)
     {
-        oid_name = yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
+        int oclass;
+        char oid_name_buf[OID_STR_MAX];
+        const char *oid_name
+            =  yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
         printf("Record type: ");
         if (oid_name)
             printf("%s\n", oid_name);
@@ -908,7 +906,7 @@ static void display_record(Z_External *r)
             }
         }
     }
-    if (oid_name && !yaz_matchstr(oid_name, OID_STR_SOIF))
+    if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_soif))
     {
         print_record((const unsigned char *) r->u.octet_aligned->buf,
                      r->u.octet_aligned->len);
@@ -918,14 +916,14 @@ static void display_record(Z_External *r)
     else if (oid && r->which == Z_External_octet)
     {
         const char *octet_buf = (char*)r->u.octet_aligned->buf;
-        if (oid_name && (!yaz_matchstr(oid_name, OID_STR_XML)
-                         || !yaz_matchstr(oid_name, OID_STR_APPLICATION_XML)
-                         || !yaz_matchstr(oid_name, OID_STR_HTML)))
+        if (oid && (!oid_oidcmp(oid, yaz_oid_recsyn_xml)
+                    || !oid_oidcmp(oid, yaz_oid_recsyn_xml)
+                    || !oid_oidcmp(oid, yaz_oid_recsyn_html)))
         {
             print_record((const unsigned char *) octet_buf,
                          r->u.octet_aligned->len);
         }
-        else if (oid_name && !yaz_matchstr(oid_name, OID_STR_POSTSCRIPT))
+        else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_postscript))
         {
             int size = r->u.octet_aligned->len;
             if (size > 100)
@@ -953,7 +951,7 @@ static void display_record(Z_External *r)
 
                 if (marcCharset && !strcmp(marcCharset, "auto"))
                 {
-                    if (!yaz_matchstr(oid_name, OID_STR_USMARC))
+                    if (!oid_oidcmp(oid, yaz_oid_recsyn_usmarc))
                     {
                         if (octet_buf[9] == 'a')
                             from = "UTF-8";
@@ -1003,7 +1001,7 @@ static void display_record(Z_External *r)
         if (marc_file)
             fwrite (octet_buf, 1, r->u.octet_aligned->len, marc_file);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_SUTRS))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_sutrs))
     {
         if (r->which != Z_External_sutrs)
         {
@@ -1014,7 +1012,7 @@ static void display_record(Z_External *r)
         if (marc_file)
             fwrite (r->u.sutrs->buf, 1, r->u.sutrs->len, marc_file);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_GRS1))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_grs_1))
     {
         WRBUF w;
         if (r->which != Z_External_grs1)
@@ -1027,7 +1025,7 @@ static void display_record(Z_External *r)
         puts (wrbuf_cstr(w));
         wrbuf_destroy(w);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_OPAC))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_opac))
     {
         int i;
         if (r->u.opac->bibliographicRecord)
@@ -1166,7 +1164,7 @@ static void display_diagrecs(Z_DiagRec **pp, int num)
             const char *diag_name = 0;
             diag_name = yaz_oid_to_string_buf
                 (r->diagnosticSetId, &oclass, diag_name_buf);
-            if (yaz_matchstr(diag_name, OID_STR_BIB1))
+            if (oid_oidcmp(r->diagnosticSetId, yaz_oid_diagset_bib_1))
                 printf("Unknown diagset: %s\n", diag_name);
         }
         printf("    [%d] %s", *r->condition, diagbib1_str(*r->condition));
@@ -3607,7 +3605,6 @@ int cmd_set_marcdump(const char* arg)
     return 1;
 }
 
-#if 0
 /* 
    this command takes 3 arge {name class oid} 
 */
@@ -3634,12 +3631,10 @@ int cmd_register_oid(const char* args) {
         {0,(enum oid_class) 0}
     };
     char oname_str[101], oclass_str[101], oid_str[101];  
-    char* name;
     int i;
-    oid_class oidclass = CLASS_GENERAL;
-    int val = 0, oid[OID_SIZE];
-    struct oident * new_oident=NULL;
-    
+    int oidclass = CLASS_GENERAL;
+    int oid[OID_SIZE];
+
     if (sscanf (args, "%100[^ ] %100[^ ] %100s",
                 oname_str,oclass_str, oid_str) < 1) {
         printf("Error in register command \n");
@@ -3659,35 +3654,15 @@ int cmd_register_oid(const char* args) {
         return 0;
     }
     
-    i = 0;
-    name = oid_str;
-    val = 0;
-    
-    while (isdigit (*(unsigned char *) name))
-    {
-        val = val*10 + (*name - '0');
-        name++;
-        if (*name == '.')
-        {
-            if (i < OID_SIZE-1)
-                oid[i++] = val;
-            val = 0;
-            name++;
-        }
-    }
-    oid[i] = val;
-    oid[i+1] = -1;
-    
-    new_oident = oid_addent (oid, PROTO_GENERAL, oidclass, oname_str,
-                             VAL_DYNAMIC);  
-    if(strcmp(new_oident->desc,oname_str))
+    oid_dotstring_to_oid(oid_str, oid);
+
+    if (yaz_oid_add(yaz_oid_std(), oidclass, oname_str, oid))
     {
-        fprintf(stderr,"oid is already named as %s, registration failed\n",
-                new_oident->desc);
+        printf("oid %s already exists, registration failed\n",
+               oname_str);
     }
     return 1;  
 }
-#endif
 
 int cmd_push_command(const char* arg) 
 {
@@ -4421,9 +4396,7 @@ static struct {
     {"set_auto_wait", cmd_set_auto_wait," on|off",complete_auto_reconnect,1,NULL},
     {"set_otherinfo", cmd_set_otherinfo,"<otherinfoinddex> <oid> <string>",NULL,0,NULL},
     {"sleep", cmd_sleep,"<seconds>",NULL,0,NULL},
-#if 0
     {"register_oid", cmd_register_oid,"<name> <class> <oid>",NULL,0,NULL},
-#endif
     {"push_command", cmd_push_command,"<command>",command_generator,0,NULL},
     {"register_tab", cmd_register_tab,"<commandname> <tab>",command_generator,0,NULL},
     {"cclparse", cmd_cclparse,"<ccl find command>",NULL,0,NULL},