static void handle_globl(char *s) { char *name; symbol *sym; for (;;) { if (!(name = parse_identifier(&s))) { syntax_error(10); /* identifier expected */ return; } sym = new_import(name); myfree(name); if (sym->flags & EXPORT) general_error(62,sym->name,get_bind_name(sym)); /* binding already set */ sym->flags |= EXPORT; s = skip(s); if (*s == ',') s = skip(s+1); else break; } eol(s); }
static void do_binding(char *s,int bind) { symbol *sym; char *name; while(1){ if(!(name=parse_identifier(&s))){ syntax_error(10); /* identifier expected */ return; } sym=new_import(name); myfree(name); if(sym->flags&(EXPORT|WEAK|LOCAL)!=0 && sym->flags&(EXPORT|WEAK|LOCAL)!=bind) syntax_error(20,sym->name,get_bind_name(sym)); /* binding already set */ else sym->flags|=bind; s=skip(s); if(*s!=',') break; s=skip(s+1); } eol(s); }