Revision: 41366
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41366&view=rev
Author:   brlcad
Date:     2010-11-16 00:00:27 +0000 (Tue, 16 Nov 2010)

Log Message:
-----------
reorder functions to avoid forward decls, cleanup ws, and partially eliminate 
MAXARGS.

Modified Paths:
--------------
    brlcad/trunk/src/libged/killtree.c

Modified: brlcad/trunk/src/libged/killtree.c
===================================================================
--- brlcad/trunk/src/libged/killtree.c  2010-11-15 23:27:58 UTC (rev 41365)
+++ brlcad/trunk/src/libged/killtree.c  2010-11-16 00:00:27 UTC (rev 41366)
@@ -38,14 +38,57 @@
     int killrefs;
     int nflag;
     int ac;
-    char *av[MAXARGS];
+    char *av[99999];
 };
 
-static void
-ged_killtree_callback(struct db_i              *dbip,
-                     struct directory *dp,
-                     genptr_t                  ptr);
 
+/*
+ * K I L L T R E E
+ */
+HIDDEN void
+killtree_callback(struct db_i *dbip, struct directory *dp, genptr_t ptr)
+{
+    struct ged_killtree_data *gktdp = (struct ged_killtree_data *)ptr;
+
+    if (dbip == DBI_NULL)
+       return;
+
+    if (gktdp->nflag) {
+       if (!gktdp->killrefs) 
+           bu_vls_printf(&gktdp->gedp->ged_result_str, "%s ", dp->d_namep);
+       else {
+           gktdp->av[gktdp->ac++] = bu_strdup(dp->d_namep);
+           gktdp->av[gktdp->ac] = (char *)0;
+
+           bu_vls_printf(&gktdp->gedp->ged_result_str, "%s ", dp->d_namep);
+       }
+    } else {
+       _ged_eraseAllNamesFromDisplay(gktdp->gedp, dp->d_namep, 0);
+
+       bu_vls_printf(&gktdp->gedp->ged_result_str, "KILL %s:  %s\n",
+                     (dp->d_flags & DIR_COMB) ? "COMB" : "Solid",
+                     dp->d_namep);
+
+       if (!gktdp->killrefs) {
+           if (db_delete(dbip, dp) != 0 || db_dirdelete(dbip, dp) != 0) {
+               bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred 
while deleting %s\n", dp->d_namep);
+           }
+       } else {
+           gktdp->av[gktdp->ac++] = bu_strdup(dp->d_namep);
+           gktdp->av[gktdp->ac] = (char *)0;
+
+           if (db_delete(dbip, dp) != 0 || db_dirdelete(dbip, dp) != 0) {
+               bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred 
while deleting %s\n", dp->d_namep);
+
+               /* Remove from list */
+               bu_free((genptr_t)gktdp->av[--gktdp->ac], "killtree_callback");
+               gktdp->av[gktdp->ac] = (char *)0;
+           }
+       }
+    }
+}
+
+
 int
 ged_killtree(struct ged *gedp, int argc, const char *argv[])
 {
@@ -77,7 +120,7 @@
 
     bu_optind = 1;
     while ((c = bu_getopt(argc, (char * const *)argv, "an")) != EOF) {
-       switch( c ) {
+       switch(c) {
            case 'a':
                gktd.killrefs = 1;
                break;
@@ -108,7 +151,7 @@
            continue;
 
        db_functree(gedp->ged_wdbp->dbip, dp,
-                   ged_killtree_callback, ged_killtree_callback,
+                   killtree_callback, killtree_callback,
                    gedp->ged_wdbp->wdb_resp, (genptr_t)&gktd);
     }
 
@@ -136,67 +179,7 @@
     return GED_OK;
 }
 
-/*
- *                     K I L L T R E E
- */
-static void
-ged_killtree_callback(struct db_i              *dbip,
-                     struct directory *dp,
-                     genptr_t                  ptr)
-{
-    struct ged_killtree_data *gktdp = (struct ged_killtree_data *)ptr;
 
-    if (dbip == DBI_NULL)
-       return;
-
-    if (gktdp->nflag) {
-       if (!gktdp->killrefs) 
-           bu_vls_printf(&gktdp->gedp->ged_result_str, "%s ", dp->d_namep);
-       else {
-           if (gktdp->ac < MAXARGS-1) {
-               gktdp->av[gktdp->ac++] = bu_strdup(dp->d_namep);
-               gktdp->av[gktdp->ac] = (char *)0;
-
-               bu_vls_printf(&gktdp->gedp->ged_result_str, "%s ", dp->d_namep);
-           } else {
-               bu_vls_printf(&gktdp->gedp->ged_result_str, "MAXARGS exceeded 
while scheduling %s for a killrefs\n", dp->d_namep);
-           }
-       }
-    } else {
-       _ged_eraseAllNamesFromDisplay(gktdp->gedp, dp->d_namep, 0);
-
-       bu_vls_printf(&gktdp->gedp->ged_result_str, "KILL %s:  %s\n",
-                     (dp->d_flags & DIR_COMB) ? "COMB" : "Solid",
-                     dp->d_namep);
-
-       if (!gktdp->killrefs) {
-           if (db_delete(dbip, dp) != 0 || db_dirdelete(dbip, dp) != 0) {
-               bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred 
while deleting %s\n", dp->d_namep);
-           }
-       } else {
-           if (gktdp->ac < MAXARGS-1) {
-               gktdp->av[gktdp->ac++] = bu_strdup(dp->d_namep);
-               gktdp->av[gktdp->ac] = (char *)0;
-
-               if (db_delete(dbip, dp) != 0 || db_dirdelete(dbip, dp) != 0) {
-                   bu_vls_printf(&gktdp->gedp->ged_result_str, "an error 
occurred while deleting %s\n", dp->d_namep);
-
-                   /* Remove from list */
-                   bu_free((genptr_t)gktdp->av[--gktdp->ac], 
"ged_killtree_callback");
-                   gktdp->av[gktdp->ac] = (char *)0;
-               }
-           } else {
-               bu_vls_printf(&gktdp->gedp->ged_result_str, "MAXARGS exceeded 
while scheduling %s for a killrefs\n", dp->d_namep);
-
-               if (db_delete(dbip, dp) != 0 || db_dirdelete(dbip, dp) != 0) {
-                   bu_vls_printf(&gktdp->gedp->ged_result_str, "an error 
occurred while deleting %s\n", dp->d_namep);
-               }
-           }
-       }
-    }
-}
-
-
 /*
  * Local Variables:
  * tab-width: 8


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to