OSSP CVS Repository

ossp - Difference in ossp-pkg/l2/l2_channel.c versions 1.1 and 1.2
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/l2/l2_channel.c 1.1 -> 1.2

--- l2_channel.c 2001/05/10 19:46:01     1.1
+++ l2_channel.c 2001/05/22 18:47:31     1.2
@@ -134,3 +134,71 @@
     return rv;
 }
 
+int l2_channel_setparams(l2_param_t pa[], const char *fmt, va_list ap)
+{
+    const char *cpB, *cpE;
+    const char *cpC, *cpG;
+    int ok;
+    int i; 
+
+    cpE = fmt;
+    while (*cpE != '\0') {
+        /* determine begin of parameter name */
+        cpB = cpE;
+        while (*cpB == ',')
+            cpB++;
+
+        /* determine end of parameter name */
+        cpE = cpB;
+        while (*cpE != ',' && *cpE != '\0')
+            cpE++;
+
+        /* try to match with configured parameters */
+        ok = FALSE;
+        for (i = 0; pa[i].name != NULL; i++) {
+            cpC = pa[i].name;
+            cpG = cpB;
+            while (*cpC != '\0' && cpG < cpE) {
+                if (*cpC != *cpG)
+                    break;
+                cpC++;
+                cpG++;
+            }
+            if (*cpC == '\0' && cpG == cpE) {
+                /* parameter matched, so store value */
+                switch (pa[i].type) {
+                    case L2_TYPE_CHAR:
+                        *(char *)(pa[i].store) = va_get(ap, char); 
+                        break;
+                    case L2_TYPE_SHORT:
+                        *(short *)(pa[i].store) = va_get(ap, short); 
+                        break;
+                    case L2_TYPE_INT:
+                        *(int *)(pa[i].store) = va_get(ap, int); 
+                        break;
+                    case L2_TYPE_LONG:
+                        *(long *)(pa[i].store) = va_get(ap, long); 
+                        break;
+                    case L2_TYPE_FLOAT:
+                        *(float *)(pa[i].store) = va_get(ap, float); 
+                        break;
+                    case L2_TYPE_DOUBLE:
+                        *(double *)(pa[i].store) = va_get(ap, double); 
+                        break;
+                    case L2_TYPE_CHARPTR:
+                        *(char **)(pa[i].store) = va_get(ap, charptr); 
+                        break;
+                    case L2_TYPE_VOIDPTR:
+                        *(void **)(pa[i].store) = va_get(ap, voidptr); 
+                        break;
+                }
+                ok = TRUE;
+                break;
+            }
+        }
+        if (!ok)
+            return L2_ERROR;
+    }
+    return L2_OK;
+}
+

CVSTrac 2.0.1