Example #1
0
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;
}
Example #2
0
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() */
Example #3
0
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;
  }
}
Example #4
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;
}
Example #5
0
void uninstall(char *def) {
  int hashval;
  hashval = hash(def);
  tab[hashval] = unlist(tab[hashval], def);
}