static int docrclist (const TCHAR *src) { WIN32_FIND_DATA ffd; HANDLE h; TCHAR path[MAX_DPATH]; _tcscpy (path, src); _tcscat (path, _T("\\*.*")); h = FindFirstFile (path, &ffd); while (h) { if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (!_tcscmp (ffd.cFileName, _T(".")) || !_tcscmp (ffd.cFileName, _T(".."))) goto next; _tcscpy (path, src); _tcscat (path, _T("\\")); _tcscat (path, ffd.cFileName); docrclist (path); } else { TCHAR path2[MAX_DPATH]; _tcscpy (path, src); _tcscat (path, _T("\\")); _tcscat (path, ffd.cFileName); GetFullPathName (path, MAX_DPATH, path2, NULL); resetlist (); unlist (path2, 1); } next: if (!FindNextFile (h, &ffd)) { FindClose (h); break; } } return 1; }
int mark(MRIS *surf, int vno, int m, bool b_overwrite) { // HISTORY // 18 November 2004 // o Added b_overwrite to force marking irrespective // of current value. Needed in the case of a "HUP" // signal. // VERTEX *v; int rv; v = &surf->vertices[vno]; if (!b_overwrite) { if (v->marked == DIJK_IN_PLAY) { unlist(vno); } if (m == DIJK_IN_PLAY) { rv = addToList(surf, vno); if (rv != NO_ERROR) return(rv); } } v->marked = m; return(NO_ERROR); } /* end mark() */
static DefNode *unlist(DefNode *pdn, char *def) { if (pdn) { if (strcmp(pdn->def, def) == 0) { //fprintf(stderr, "free %s\n", pdn->def); // when found, remove this node, and return its 'next' DefNode *pnext; free(pdn->def); free(pdn->val); pnext = pdn->next; free(pdn); return pnext; } else { pdn->next = unlist(pdn->next, def); return pdn; } } else { return 0; } }
int __cdecl wmain (int argc, wchar_t *argv[], wchar_t *envp[]) { int ok = 0, i; int list = 0, xtract = 0, extract = 0; int out = 0, all = 0, crclist = 0; TCHAR path[MAX_DPATH] = { 0 }, pathx[MAX_DPATH] = { 0 }; #if 0 TCHAR tmppath[MAX_DPATH]; #endif int used[32] = { 0 }; TCHAR *parm2 = NULL; TCHAR *parm3 = NULL; TCHAR *match = NULL; resetlist (); for (i = 0; i < argc && i < 32; i++) { if (!_tcsicmp (argv[i], _T("-crclist"))) { crclist = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("o"))) { out = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("-o"))) { out = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("l"))) { list = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("-l"))) { list = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("x"))) { xtract = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("-x"))) { xtract = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("e"))) { extract = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("-e"))) { extract = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("*"))) { all = 1; used[i] = 1; } if (!_tcsicmp (argv[i], _T("**"))) { all = -1; used[i] = 1; } if (!used[i] && (_tcschr (argv[i], '*') || _tcschr (argv[i], '?'))) { extract = 1; match = argv[i]; used[i] = 1; } } for (i = 1; i < argc && i < 32; i++) { if (!used[i]) { _tcscpy (pathx, argv[i]); GetFullPathName (argv[i], MAX_DPATH, path, NULL); used[i] = 1; break; } } for (i = 1; i < argc && i < 32; i++) { if (!used[i]) { parm2 = argv[i]; used[i] = 1; break; } } for (i = 1; i < argc && i < 32; i++) { if (!used[i]) { parm3 = argv[i]; used[i] = 1; break; } } // _tcscpy (tmppath, path); // scanpath (tmppath, path); if (crclist) { docrclist (_T(".")); ok = 1; } else if (!list && match) { unpack2 (path, match, 0); ok = 1; } else if (!list && !parm2 && all > 0) { unpack2 (path, _T("*"), 0); ok = 1; } else if (!list && extract && parm2) { unpack2 (path, parm2, 0); ok = 1; } else if (argc == 2 || (argc > 2 && list)) { unlist (path, all); ok = 1; } else if (((xtract && parm2) || all || (argc >= 3 && parm2)) && !out) { unpack (path, parm2, parm3, 0, all, 0); ok = 1; } else if (parm2 && (argc >= 4 && out)) { unpack (path, parm2, parm3, 1, all, 0); ok = 1; } if (!ok) { _tprintf (_T("UAE unpacker uaeunp 0.8f by Toni Wilen (c)2012\n")); _tprintf (_T("\n")); _tprintf (_T("List: \"uaeunp (-l) <path>\"\n")); _tprintf (_T("List all recursively: \"uaeunp -l <path> **\"\n")); _tprintf (_T("Extract to file: \"uaeunp (-x) <path> <filename> [<dst name>]\"\n")); _tprintf (_T("Extract all (single directory): \"uaeunp (-x) <path> *\"\n")); _tprintf (_T("Extract all (recursively): \"uaeunp (-x) <path> **\"\n")); _tprintf (_T("Extract all (recursively, current dir): \"uaeunp -e <path> <match string>\"\n")); _tprintf (_T("Output to console: \"uaeunp (-x) -o <path> <filename>\"\n")); _tprintf (_T("\n")); _tprintf (_T("Supported disk image formats:\n")); _tprintf (_T(" ADF, HDF (VHD), DMS, encrypted DMS, IPF, FDI, DSQ, WRP\n")); _tprintf (_T("Supported filesystems:\n")); _tprintf (_T(" OFS, FFS, SFS, SFS2 and FAT12\n")); _tprintf (_T("Supported archive formats:\n")); _tprintf (_T(" 7ZIP, LHA, LZX, RAR (unrar.dll), TAR, ZIP, ArchiveAccess.DLL\n")); _tprintf (_T("Miscellaneous formats:\n")); _tprintf (_T(" RDB partition table, GZIP, XZ\n")); } return 0; }
void uninstall(char *def) { int hashval; hashval = hash(def); tab[hashval] = unlist(tab[hashval], def); }