Esempio n. 1
0
static void expand_argument(char * arg)
{
    char * p;

    for (p = arg; *p != 0; p++) {
        if (*p == '*' || *p == '?') {
            expand_pattern(arg);
            return;
        }
    }
    store_argument(arg);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
/** 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__);
        }
    }
}