diff options
| -rw-r--r-- | cmd.c | 11 | ||||
| -rw-r--r-- | cmd2.c | 18 | ||||
| -rw-r--r-- | main.c | 5 | ||||
| -rw-r--r-- | main.h | 3 | ||||
| -rw-r--r-- | utils.c | 7 | 
5 files changed, 32 insertions, 12 deletions
@@ -62,7 +62,7 @@ static void cmd_help _, cmd_shell _,    cmd_record _, cmd_request _, cmd_reset _, cmd_retrace _,    cmd_save _, cmd_send _, cmd_setvar _, cmd_snoop _, cmd_spawn _, cmd_stop _,    cmd_time _, cmd_var _, cmd_ver _, cmd_while _, cmd_write _, -  cmd_eval _, cmd_zap _, cmd_module _, cmd_group _, cmd_speedwalk _; +  cmd_eval _, cmd_zap _, cmd_module _, cmd_group _, cmd_speedwalk _, cmd_groupdelim _;  #ifdef BUG_TELNET  static void cmd_color _; @@ -103,6 +103,7 @@ cmdstruct default_commands[] =      {NULL,"file", "[=[filename]]\t\tset/show powwow definition file", cmd_file,NULL},      {NULL,"for", "([init];check;[loop]) command\twhile \"check\" is true exec \"command\"", cmd_for,NULL},      {NULL,"group", "[name] [on|off|list]\tgroup alias/action manipulation", cmd_group,NULL}, +    {NULL,"groupdelim", "[delimiter]\tchange delimiter for action/alias groups", cmd_groupdelim,NULL},      {NULL,"hilite", "[attr]\t\t\thighlight your input line", cmd_hilite,NULL},      {NULL,"history", "[{number|(expr)}]\tlist/execute commands in history", cmd_history,NULL},      {NULL,"host", "[hostname port]]\tset/show address of default host", cmd_host,NULL}, @@ -324,6 +325,14 @@ static void cmd_group __P1 (char *,arg) {      }  } +static void cmd_groupdelim __P1 (char *,arg) { +    if( *arg != 0 ) { +        free( group_delim ); +        group_delim = my_strdup( arg ); +	    PRINTF( "#group delimiter is now '%s'\n", group_delim ); +    } +} +  static void cmd_help __P1 (char *,arg)  {      int i, size; @@ -64,9 +64,9 @@ void show_aliases __P0 (void)      reverse_sortedlist((sortednode **)&sortedaliases);      for (p = sortedaliases; p; p = p->snext) {  	escape_specials(buf, p->name); -	tty_printf("#alias %s%s@%s=%s\n",  +	tty_printf("#alias %s%s%s%s=%s\n",   			p->active ? "" : "(disabled) ", -			buf,p->group == NULL ? "*" : p->group, p->subst); +			buf, group_delim, p->group == NULL ? "*" : p->group, p->subst);      }      reverse_sortedlist((sortednode **)&sortedaliases);  } @@ -161,10 +161,10 @@ void parse_alias __P1 (char *,str)          unescape(left);      	/* break out group name (if present) */ -        group = strchr( left, '@' ); +        group = strstr( left, group_delim );  	if( group ) {  	    *group = 0; -	    group++; +	    group += strlen( group_delim );  	}  	if (check_alias(left)) @@ -216,8 +216,9 @@ void parse_alias __P1 (char *,str)          if (*np) {  	    char buf[BUFSIZE];              escape_specials(buf, left); -            snprintf(inserted_next, BUFSIZE, "#alias %s@%s=%s", +            snprintf(inserted_next, BUFSIZE, "#alias %s%s%s=%s",                  buf,  +                group_delim,                  (*np)->group == NULL ? "*" : (*np)->group,  		        (*np)->subst);          } else { @@ -334,9 +335,10 @@ void show_actions __P0 (void)      PRINTF("#%s action%s defined%c\n", actions ? "the following" : "no",  	       (actions && !actions->next) ? " is" : "s are", actions ? ':' : '.');      for (p = actions; p; p = p->next) -	tty_printf("#action %c%c%s@%s %s=%s\n", +	tty_printf("#action %c%c%s%s%s %s=%s\n",  		   action_chars[p->type],  		   p->active ? '+' : '-', p->label, +           group_delim,  		   p->group == NULL ? "*" : p->group,   		   p->pattern,  		   p->command); @@ -415,10 +417,10 @@ void parse_action __P2 (char *,str, int,onprompt)  	    *p = '\0';          /* break out group name (if present) */ -	group = strchr( str, '@' ); +	group = strstr( str, group_delim );  	if( group ) {  		*group = 0; -		group++; +		group += strlen( group_delim );  	}  	my_strncpy(label, str, BUFSIZE-1); @@ -235,6 +235,8 @@ int   delim_len [] = {   2 ,                     21 , 0 };  char *delim_name[] = { "normal",    "program", "custom" };  int   delim_mode = DELIM_NORMAL; +/* Group delimiter */ +char *group_delim;  int main __P2 (int,argc, char **,argv)  { @@ -252,7 +254,8 @@ int main __P2 (int,argc, char **,argv)      /* initializations */      initstr[0] = 0;      memzero(conn_list, sizeof(conn_list)); -     +    group_delim = my_strdup( "@" ); +      update_now();      ref_time = start_time = movie_last = now; @@ -112,6 +112,9 @@ extern int   delim_len[];  extern char *delim_name[];  extern int   delim_mode; +/* Group delimiter for actions/aliases, defaults to @ */ +extern char *group_delim; +  extern char action_chars[];  #endif /* _MAIN_H_ */ @@ -1074,6 +1074,9 @@ int save_settings __P0 (void)  			     delim_mode == DELIM_CUSTOM ? ptrdata(pp) : "" );      } +	if (failed > 0) +	    failed = fprintf(f, "#groupdelim %s\n", group_delim); +      if (failed > 0 && *initstr)  	failed = fprintf(f, "#init =%s\n", initstr); @@ -1089,7 +1092,7 @@ int save_settings __P0 (void)  	    pp = ptrmescape(pp, alp->name, strlen(alp->name), 0);  	    if (MEM_ERROR) { failed = -1; break; }  	    failed = fprintf(f, "#alias %s%s%s=%s\n", ptrdata(pp), -		alp -> group == NULL ? "" : "@", +		alp -> group == NULL ? "" : group_delim,  		alp -> group == NULL ? "" : alp -> group,   		alp->subst);  	} @@ -1100,7 +1103,7 @@ int save_settings __P0 (void)  	failed = fprintf(f, "#action %c%c%s%s%s %s=%s\n",  			 action_chars[acp->type], acp->active ? '+' : '-',  			 acp->label,  -		acp -> group == NULL ? "" : "@", +		acp -> group == NULL ? "" : group_delim,  		acp -> group == NULL ? "" : acp -> group,   			 acp->pattern, acp->command);      }  | 
