void _wildcard (int *argcp, char ***argvp) { int i, old_argc, new_argc, new_alloc; char **old_argv, **new_argv; char line[256], *p, *q; struct find_t find; old_argc = *argcp; old_argv = *argvp; for (i = 1; i < old_argc; ++i) if (old_argv[i] != NULL && strpbrk (old_argv[i], "?*") != NULL) break; if (i >= old_argc) return; /* do nothing */ new_argv = NULL; new_alloc = 0; new_argc = 0; for (i = 0; i < old_argc; ++i) { if (i == 0 || old_argv[i] == NULL || strpbrk (old_argv[i], "?*") == NULL || _dos_findfirst (old_argv[i], _A_NORMAL, &find) != 0) { WPUT (old_argv[i]); } else { strcpy (line, old_argv[i]); p = q = line; while (*q != 0) { if (*q == ':' || *q == '\\' || *q == '/') p = q + 1; ++q; } do { if (strcmp (find.name, ".") != 0 && strcmp (find.name, "..") != 0) { strcpy (p, find.name); q = xstrdup (line); WPUT (q); } } while (_dos_findnext (&find) == 0); } } WPUT (NULL); --new_argc; *argcp = new_argc; *argvp = new_argv; return; }
static void putelfsyment(int off, vlong addr, vlong size, int info, int shndx, int other) { switch(thechar) { case '6': LPUT(off); cput(info); cput(other); WPUT(shndx); VPUT(addr); VPUT(size); symsize += ELF64SYMSIZE; break; default: LPUT(off); LPUT(addr); LPUT(size); cput(info); cput(other); WPUT(shndx); symsize += ELF32SYMSIZE; break; } }
uint32 elf32writehdr(void) { int i; for (i = 0; i < EI_NIDENT; i++) cput(hdr.ident[i]); WPUT(hdr.type); WPUT(hdr.machine); LPUT(hdr.version); LPUT(hdr.entry); LPUT(hdr.phoff); LPUT(hdr.shoff); LPUT(hdr.flags); WPUT(hdr.ehsize); WPUT(hdr.phentsize); WPUT(hdr.phnum); WPUT(hdr.shentsize); WPUT(hdr.shnum); WPUT(hdr.shstrndx); return ELF32HDRSIZE; }