static void expand_argument(char * arg) { char * p; for (p = arg; *p != 0; p++) { if (*p == '*' || *p == '?') { expand_pattern(arg); return; } } store_argument(arg); }
static void expand_argument(char * arg) { char * p; if (arg[0] == '@') { expand_diversion(arg + 1); return; } for (p = arg; *p != 0; p++) { if (*p == '*' || *p == '?') { expand_pattern(arg); return; } } store_argument(arg); }
static bool find_needle_in_pattern_fn(void *pattern, void *needle_) { t_token *needle; t_token *pattern_expanded; bool ret; if (shenv_singleton()->last_exit_code != 0) return (false); needle = needle_; pattern_expanded = expand_pattern(pattern); if (shenv_singleton()->shenv_shall_quit_curr_ast) return (false); ret = match_found(needle->text, pattern_expanded->text); token_del(pattern_expanded); return (ret); }
/** Fügt die auslösende Harmonien, Taste bzw. das Midiereignis der Logik in die * entsprechenede lokale Liste eines Instrumentes ein. * \param instrument Instrument, für das das Ereignis eingefügt werden soll. * \param lauf Anweisung, deren Auslöser eingefügt werden soll. * \param name_der_logik Name der Logik, zu der die Anweisung gehört. */ void insert_in_lokale_liste (int instrument, struct anweisung * lauf, char * name_der_logik) { struct harmonie_ereignis ** temp_harmonie; struct keyboard_ereignis ** temp_keyboard; struct midi_ereignis ** temp_midi; if (lauf->ausloeser) { switch ((lauf->ausloeser)->ausloeser_typ) { case ausloeser_harmonie: if (lauf->ausloeser->u.ausloeser_harmonie.vortaste == -2) /* Dann unmöglicher Harmonieauslöser */ break; /* Neuen Eintrag erzeugen */ for (temp_harmonie = & first_lokal_harmonie[instrument]; *temp_harmonie; temp_harmonie = & (*temp_harmonie)->next) ; *temp_harmonie = (struct harmonie_ereignis*) xmalloc( (size_t)sizeof(struct harmonie_ereignis)); (*temp_harmonie) -> pattern =expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie.name) ; (*temp_harmonie) -> ist_harmonieform=0; (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie.vortaste ; (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie.nachtaste ; (*temp_harmonie) -> name=name_der_logik; (*temp_harmonie) -> aktion= expand_aktions_liste (lauf->aktion, start_parameter_liste); (*temp_harmonie) -> next=NULL; break; case ausloeser_harmonie_form: if (lauf->ausloeser->u.ausloeser_harmonie_form.vortaste == -2) /* Dann unmöglicher Harmonieauslöser */ break; /* Neuen Eintrag erzeugen */ for (temp_harmonie = & first_lokal_harmonie[instrument]; *temp_harmonie; temp_harmonie = & (*temp_harmonie)->next) ; *temp_harmonie = (struct harmonie_ereignis*) xmalloc((size_t)sizeof(struct harmonie_ereignis)); (*temp_harmonie) -> pattern=expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie_form.name) ; (*temp_harmonie) -> ist_harmonieform=1; (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.vortaste ; (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.nachtaste ; (*temp_harmonie) -> name=name_der_logik; (*temp_harmonie) -> aktion= expand_aktions_liste (lauf->aktion, start_parameter_liste); (*temp_harmonie) -> next=NULL; break; case ausloeser_default: /* Neuen Eintrag erzeugen */ for (temp_harmonie = & first_lokal_harmonie[instrument]; *temp_harmonie; temp_harmonie = & (*temp_harmonie)->next) ; *temp_harmonie = (struct harmonie_ereignis*) xmalloc((size_t)sizeof(struct harmonie_ereignis)); (*temp_harmonie) -> pattern=NULL ; (*temp_harmonie) -> ist_harmonieform=2; /* 2 als Wert für ANSONSTEN */ (*temp_harmonie) -> vortaste=0 ; (*temp_harmonie) -> nachtaste=0 ; (*temp_harmonie) -> name=name_der_logik; (*temp_harmonie) -> aktion= expand_aktions_liste (lauf->aktion, start_parameter_liste); (*temp_harmonie) -> next=NULL; break; case ausloeser_taste: /* Neuen Eintrag erzeugen */ for (temp_keyboard = & first_lokal_keyboard[instrument]; *temp_keyboard; temp_keyboard = & (*temp_keyboard)->next) ; *temp_keyboard = (struct keyboard_ereignis*) xmalloc((size_t)sizeof(struct keyboard_ereignis)); (*temp_keyboard) -> taste= (*((lauf->ausloeser)->u.ausloeser_taste.taste)) ; (*temp_keyboard) -> name=name_der_logik; (*temp_keyboard) -> aktion= expand_aktions_liste (lauf->aktion, start_parameter_liste); (*temp_keyboard) -> next=NULL; break; case ausloeser_midi_in: /* Neuen Eintrag erzeugen */ for (temp_midi = & first_lokal_midi[instrument]; *temp_midi; temp_midi = & (*temp_midi)->next) ; *temp_midi = (struct midi_ereignis*) xmalloc((size_t)sizeof(struct midi_ereignis)); /* Werte eintragen */ (*temp_midi) -> first_pos = (*temp_midi) -> scan_pos = create_midi_scan_liste (lauf->ausloeser->u.ausloeser_midi_in.midi_code); (*temp_midi) -> name=name_der_logik; (*temp_midi) -> aktion= expand_aktions_liste (lauf->aktion, start_parameter_liste); (*temp_midi) -> next = NULL; break; default: fatal_error(0, __FILE__, __LINE__); } } }