]> git.ipfire.org Git - thirdparty/newt.git/commitdiff
added newtButtonBarv()
authorewt <ewt>
Mon, 16 Feb 1998 23:03:21 +0000 (23:03 +0000)
committerewt <ewt>
Mon, 16 Feb 1998 23:03:21 +0000 (23:03 +0000)
buttonbar.c

index 905829d1ec5469e464e2ed1b2bdc14389b4afba2..45473c9d2724eb96c58945e31c17d69ffcb661cb 100644 (file)
@@ -2,38 +2,45 @@
 
 #include "newt.h"
 
-newtGrid newtButtonBar(char * button1, newtComponent * b1comp, ...) {
-    va_list args;
-    char * name;
+/* if they try and pack more then 50 buttons, screw 'em */
+newtGrid newtButtonBarv(char * button1, newtComponent * b1comp, va_list args) {
     newtGrid grid;
-    newtComponent * compPtr;
+    struct buttonInfo {
+       char * name;
+       newtComponent * compPtr;
+    } buttons[50];
     int num;
+    int i;
 
-    va_start(args, b1comp);
-
-    name = button1, num = 0;
-    while (name) {
-       name = va_arg(args, char *);
-       compPtr = va_arg(args, newtComponent *);
+    buttons[0].name = button1, buttons[0].compPtr = b1comp, num = 1;
+    while (1) {
+       buttons[num].name = va_arg(args, char *);
+       if (!buttons[num].name) break;
+       buttons[num].compPtr = va_arg(args, newtComponent *);
        num++;
     }
 
-    va_end(args);
-
     grid = newtCreateGrid(num, 1);
 
-    va_start(args, b1comp);
-
-    name = button1, compPtr = b1comp, num = 0;
-    while (name) {
-       *compPtr = newtButton(-1, -1, name);
-       newtGridSetField(grid, num, 0, NEWT_GRID_COMPONENT, *compPtr, 
+    for (i = 0; i < num; i++) {
+       *buttons[i].compPtr = newtButton(-1, -1, buttons[i].name);
+       newtGridSetField(grid, i, 0, NEWT_GRID_COMPONENT, 
+                        *buttons[i].compPtr,
                         num ? 1 : 0, 0, 0, 0, 0, 0);
-
-       name = va_arg(args, char *);
-       compPtr = va_arg(args, newtComponent *);
-       num++;
     }
 
     return grid;
 }
+
+newtGrid newtButtonBar(char * button1, newtComponent * b1comp, ...) {
+    va_list args;
+    newtGrid grid;
+
+    va_start(args, b1comp);
+
+    grid = newtButtonBarv(button1, b1comp, args);
+
+    va_end(args);
+    return grid;
+}