extern void addTagXcmd (const langType language, vString* pathvstr) { #ifdef HAVE_COPROC pathSet* set; xcmdPath *path; Assert (path != NULL); if (language > SetUpper) { int i; Sets = xRealloc (Sets, (language + 1), pathSet); for (i = SetUpper + 1 ; i <= language ; ++i) { Sets [i].paths = NULL; Sets [i].count = 0; } SetUpper = language; } set = Sets + language; set->paths = xRealloc (set->paths, (set->count + 1), xcmdPath); path = &set->paths [set->count]; path->path = pathvstr; path->kinds = NULL; path->kount = 0; path->id = set->count; set->count += 1; path->available = (loadPathKinds (path, language)); useXcmdMethod (language); if (path->available) notifyAvailabilityXcmdMethod (language); #endif }
extern void addTagXcmd (const langType language, vString* pathvstr, const char* flags) { #ifdef HAVE_COPROC pathSet* set; xcmdPath *path; #define COUNT(D) (sizeof(D)/sizeof(D[0])) flagDefinition xcmdFlagDefs[] = { { '\0', "notAvailableStatus", NULL, xcmd_flag_not_avaible_status_long }, }; Assert (pathvstr != NULL); if (language > SetUpper) { int i; Sets = xRealloc (Sets, (language + 1), pathSet); for (i = SetUpper + 1 ; i <= language ; ++i) { Sets [i].paths = NULL; Sets [i].count = 0; } SetUpper = language; } set = Sets + language; set->paths = xRealloc (set->paths, (set->count + 1), xcmdPath); path = &set->paths [set->count]; path->path = pathvstr; path->kinds = NULL; path->n_kinds = 0; path->id = set->count; path->not_available_status = XCMD_NOT_AVAILABLE_STATUS; set->count += 1; flagsEval (flags, xcmdFlagDefs, COUNT(xcmdFlagDefs), path); path->available = (loadPathKinds (path, language)); useXcmdMethod (language); if (path->available) notifyAvailabilityXcmdMethod (language); #endif }