Exemple #1
0
void make_argument_var( stack_frame_t *frame, int lastopt, int argc, char *argv[] ){
	int i;
	token_t *arglist = NULL;

	if ( lastopt ){
		token_t *move;
		token_t *temp;
		for ( i = lastopt + 1; i < argc; i++ ){
			temp = gc_alloc_token( get_current_gc( frame ));
			char *arg = argv[i];

			temp->type = TYPE_STRING;
			temp->flags |= T_FLAG_HAS_SHARED;
			temp->data = shared_new( strdup( arg ), free_string );

			if ( !arglist ){
				arglist = move = temp;

			} else {
				move->next = temp;
				move = temp;
			}
		}
	}

	token_t *argvar = gc_alloc_token( get_current_gc( frame ));
	argvar->type = TYPE_LIST;
	argvar->down = arglist;
	env_add_var( frame->env, "*arguments*", argvar, NO_RECURSE, VAR_MUTABLE_BUILTIN );
}
Exemple #2
0
int pa_shared_set(pa_core *c, const char *name, void *data) {
    pa_shared *p;

    pa_assert(c);
    pa_assert(name);
    pa_assert(data);
    pa_assert(c->shared);

    if (pa_hashmap_get(c->shared, name))
        return -1;

    p = shared_new(name, data);
    pa_hashmap_put(c->shared, p->name, p);
    return 0;
}