[brlcad-commits] SF.net SVN: brlcad:[32594] brlcad/trunk/src/libged
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <sta...@us...> - 2008-09-07 02:54:26
|
Revision: 32594 http://brlcad.svn.sourceforge.net/brlcad/?rev=32594&view=rev Author: starseeker Date: 2008-09-07 02:54:36 +0000 (Sun, 07 Sep 2008) Log Message: ----------- Revert nattr and stdattr commands - the former should be handled with not and the latter needs a bit of rethinking. Modified Paths: -------------- brlcad/trunk/src/libged/nfind.c brlcad/trunk/src/libged/nfind.h Modified: brlcad/trunk/src/libged/nfind.c =================================================================== --- brlcad/trunk/src/libged/nfind.c 2008-09-07 00:03:07 UTC (rev 32593) +++ brlcad/trunk/src/libged/nfind.c 2008-09-07 02:54:36 UTC (rev 32594) @@ -72,11 +72,9 @@ { ")", N_CLOSEPAREN, c_closeparen, O_ZERO }, { "-attr", N_ATTR, c_attr, O_ARGV }, { "-name", N_NAME, c_name, O_ARGV }, - { "-nattr", N_NATTR, c_nattr, O_ARGV }, { "-o", N_OR, c_or, O_ZERO }, { "-print", N_PRINT, c_print, O_ZERO }, { "-print0", N_PRINT0, c_print0, O_ZERO }, - { "-stdattr", N_STDATTR, c_stdattr, O_ARGV }, }; static PLAN * @@ -290,168 +288,8 @@ return BRLCAD_OK; } -/* - * -nattr functions -- - * - * True if the database object being examined does not have - * the attribute supplied to the nattr option - */ -int -f_nattr(PLAN *plan, struct db_full_path *entry, struct db_i *dbip) -{ - struct bu_vls attribname; - struct bu_vls value; - struct bu_attribute_value_set avs; - struct bu_attribute_value_pair *avpp; - int equalpos = 0; - int checkval = 0; - int i; - bu_vls_init(&attribname); - bu_vls_init(&value); - - - /* Check for unescaped equal sign - if present, the - * attribute may be present but must not have the - * value indicated. Escaping is done with the "/" - * character. - */ - while ((equalpos < strlen(plan->nattr_data)) && (plan->nattr_data[equalpos] != '=')) { - if ((plan->nattr_data[equalpos] == '/') && (plan->nattr_data[equalpos + 1] == '=')) {equalpos++;} - equalpos++; - } - - if (equalpos == strlen(plan->nattr_data)){ - bu_vls_strcpy(&attribname, plan->nattr_data); - } else { - checkval = 1; - bu_vls_strncpy(&attribname, plan->nattr_data, equalpos); - bu_vls_strncpy(&value, &(plan->nattr_data[equalpos+1]), strlen(plan->nattr_data) - equalpos - 1); - } - - /* Get attributes for object and check all of - * them to see if there is not a match to the requested - * attribute. If a value is supplied, check the - * value of any matches to the attribute name before - * returning failure. - */ - - bu_avs_init_empty(&avs); - db5_get_attributes( dbip, &avs, DB_FULL_PATH_CUR_DIR(entry)); - avpp = avs.avp; - for (i = 0; i < avs.count; i++, avpp++) { - if (!fnmatch(bu_vls_addr(&attribname), avpp->name, 0)) { - if ( checkval == 1 ) { - if (!fnmatch(bu_vls_addr(&value), avpp->value, 0)) { - bu_avs_free( &avs); - bu_vls_free( &attribname); - bu_vls_free( &value); - return (0); - } - } else { - bu_avs_free( &avs); - bu_vls_free( &attribname); - bu_vls_free( &value); - return (0); - } - } - } - bu_avs_free( &avs); - bu_vls_free( &attribname); - bu_vls_free( &value); - return (1); -} - -int -c_nattr(char *pattern, char ***ignored, int unused, PLAN **resultplan) -{ - PLAN *new; - - new = palloc(N_ATTR, f_nattr); - new->nattr_data = pattern; - (*resultplan) = new; - return BRLCAD_OK; -} - /* - * -stdattr function -- - * - * Report based on the presence or absence of the - * "standard" attributes - supply a "1" argument and - * objects with ONLY "standard" attribute flags - * and NO non-standard flags are reported. - * Supply a "0" and only objects with - * one or more non-standard flags are reported. - * stdattr also accepts a "-1" value which enables a - * special purpose table reporting of all non standard - * attributes and disables normal find behavior - e.g. - * a stdattr -1 option will cause find to not match any - * other options. - */ -int -f_stdattr(PLAN *plan, struct db_full_path *entry, struct db_i *dbip) -{ - struct bu_attribute_value_set avs; - struct bu_attribute_value_pair *avpp; - int i; - int found_nonstd_attr = 0; - int found_attr = 0; - - /* Get attributes for object and check all of - * them to see if there is not a match to the - * standard attributes. If any is found return - * failure, otherwise success. - */ - - bu_avs_init_empty(&avs); - db5_get_attributes( dbip, &avs, DB_FULL_PATH_CUR_DIR(entry)); - avpp = avs.avp; - for (i = 0; i < avs.count; i++, avpp++) { - found_attr = 1; - if (strcmp(avpp->name, "GIFTmater") != 0 && - strcmp(avpp->name, "aircode") != 0 && - strcmp(avpp->name, "inherit") != 0 && - strcmp(avpp->name, "los") != 0 && - strcmp(avpp->name, "material_id") != 0 && - strcmp(avpp->name, "oshader") != 0 && - strcmp(avpp->name, "region") != 0 && - strcmp(avpp->name, "region_id") != 0 && - strcmp(avpp->name, "rgb") != 0){ - - found_nonstd_attr = 1; - if ((plan->stdflag == -1) && !(printed_attr_header) ) { - bu_log("Object\t\tAttribute\t\tValue\n"); - printed_attr_header = 1; - } - if (plan->stdflag == -1) bu_log("%s\t\t%s\t\t%s\n",DB_FULL_PATH_CUR_DIR(entry)->d_namep, avpp->name, avpp->value); - } - } - - bu_avs_free( &avs); - - if ((plan->stdflag == 1) && found_nonstd_attr) return 0; - if ((plan->stdflag == 1) && !found_nonstd_attr && found_attr) return 1; - if ((plan->stdflag == 0) && !found_nonstd_attr) return 0; - if ((plan->stdflag == 0) && found_nonstd_attr) return 1; - if (plan->stdflag == -1) return 0; - return 0; -} - -int -c_stdattr(char *pattern, char ***ignored, int unused, PLAN **resultplan) -{ - PLAN *new; - - new = palloc(N_STDATTR, f_stdattr); - new->stdflag = atoi(pattern); - (*resultplan) = new; - return BRLCAD_OK; -} - - - - -/* * -print functions -- * * Always true, causes the current pathame to be written to @@ -915,8 +753,7 @@ int isoutput; -int printed_attr_header; - + int wdb_nfind_cmd(struct rt_wdb *wdbp, Tcl_Interp *interp, @@ -931,8 +768,7 @@ int aflag = 0; /* look at all objects */ PLAN *dbplan; struct db_full_path dfp; - - printed_attr_header = 0; + if (argc < 3) { Tcl_AppendResult(interp, "nfind [path] [expressions...]\n", (char *)NULL); } else { Modified: brlcad/trunk/src/libged/nfind.h =================================================================== --- brlcad/trunk/src/libged/nfind.h 2008-09-07 00:03:07 UTC (rev 32593) +++ brlcad/trunk/src/libged/nfind.h 2008-09-07 02:54:36 UTC (rev 32594) @@ -60,8 +60,8 @@ N_ATTR, N_CLOSEPAREN, N_DEPTH, N_EMPTY, N_EXEC, N_EXECDIR, N_EXPR, N_FLAGS, N_INAME, N_LS, N_MAXDEPTH, - N_MINDEPTH, N_NAME, N_NATTR, N_NOT, N_OK, N_OPENPAREN, N_OR, N_PATH, - N_PRINT, N_PRINT0, N_PRUNE, N_STDATTR, N_TYPE + N_MINDEPTH, N_NAME, N_NOT, N_OK, N_OPENPAREN, N_OR, N_PATH, + N_PRINT, N_PRINT0, N_PRUNE, N_TYPE }; @@ -94,8 +94,6 @@ char *_a_data[2]; /* array of char pointers */ char *_c_data; /* char pointer */ char *_attr_data; /* char pointer */ - char *_nattr_data; /* char pointer */ - int _stdflag; /* t/f flag for std reporting */ int _max_data; /* tree depth */ int _min_data; /* tree depth */ } p_un; @@ -103,7 +101,6 @@ #define a_data p_un._a_data #define c_data p_un._c_data #define attr_data p_un._attr_data -#define nattr_data p_un._nattr_data #define fl_flags p_un.fl._f_flags #define fl_mask p_un.fl._f_mask #define g_data p_un._g_data @@ -113,7 +110,6 @@ #define e_argv p_un.ex._e_argv #define e_orig p_un.ex._e_orig #define e_len p_un.ex._e_len -#define stdflag p_un._stdflag typedef struct _option { char *name; /* option name */ @@ -151,8 +147,6 @@ PLAN *c_maxdepth(char *, char ***, int); PLAN *c_mindepth(char *, char ***, int); int c_name(char *, char ***, int, PLAN **); -int c_nattr(char *, char ***, int, PLAN **); -int c_stdattr(char *, char ***, int, PLAN **); PLAN *c_path(char *, char ***, int); int c_print(char *, char ***, int, PLAN **); int c_print0(char *, char ***, int, PLAN **); @@ -163,4 +157,4 @@ int c_not(char *, char ***, int, PLAN **); int c_or(char *, char ***, int, PLAN **); -extern int isdepth, isoutput, printed_attr_header; +extern int isdepth, isoutput; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |