⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gfile.cc

📁 swf文件查看工具,能够看flash文件的格式
💻 CC
📖 第 1 页 / 共 2 页
字号:
//========================================================================//// gfile.cc//// Miscellaneous file and directory name manipulation.//// Copyright 1996-2003 Glyph & Cog, LLC////========================================================================#include <aconf.h>#ifdef WIN32#  include <time.h>#else#  if defined(MACOS)#    include <sys/stat.h>#  elif !defined(ACORN)#    include <sys/types.h>#    include <sys/stat.h>#    include <fcntl.h>#  endif#  include <limits.h>#  include <string.h>#  if !defined(VMS) && !defined(ACORN) && !defined(MACOS)#    include <pwd.h>#  endif#  if defined(VMS) && (__DECCXX_VER < 50200000)#    include <unixlib.h>#  endif#endif // WIN32#include "GString.h"#include "gfile.h"// Some systems don't define this, so just make it something reasonably// large.#ifndef PATH_MAX#define PATH_MAX 1024#endif//------------------------------------------------------------------------GString *getHomeDir() {#ifdef VMS  //---------- VMS ----------  return new GString("SYS$LOGIN:");#elif defined(__EMX__) || defined(WIN32)  //---------- OS/2+EMX and Win32 ----------  char *s;  GString *ret;  if ((s = getenv("HOME")))    ret = new GString(s);  else    ret = new GString(".");  return ret;#elif defined(ACORN)  //---------- RISCOS ----------  return new GString("@");#elif defined(MACOS)  //---------- MacOS ----------  return new GString(":");#else  //---------- Unix ----------  char *s;  struct passwd *pw;  GString *ret;  if ((s = getenv("HOME"))) {    ret = new GString(s);  } else {    if ((s = getenv("USER")))      pw = getpwnam(s);    else      pw = getpwuid(getuid());    if (pw)      ret = new GString(pw->pw_dir);    else      ret = new GString(".");  }  return ret;#endif}GString *getCurrentDir() {  char buf[PATH_MAX+1];#if defined(__EMX__)  if (_getcwd2(buf, sizeof(buf)))#elif defined(WIN32)  if (GetCurrentDirectory(sizeof(buf), buf))#elif defined(ACORN)  if (strcpy(buf, "@"))#elif defined(MACOS)  if (strcpy(buf, ":"))#else  if (getcwd(buf, sizeof(buf)))#endif    return new GString(buf);  return new GString();}GString *appendToPath(GString *path, char *fileName) {#if defined(VMS)  //---------- VMS ----------  //~ this should handle everything necessary for file  //~ requesters, but it's certainly not complete  char *p0, *p1, *p2;  char *q1;  p0 = path->getCString();  p1 = p0 + path->getLength() - 1;  if (!strcmp(fileName, "-")) {    if (*p1 == ']') {      for (p2 = p1; p2 > p0 && *p2 != '.' && *p2 != '['; --p2) ;      if (*p2 == '[')	++p2;      path->del(p2 - p0, p1 - p2);    } else if (*p1 == ':') {      path->append("[-]");    } else {      path->clear();      path->append("[-]");    }  } else if ((q1 = strrchr(fileName, '.')) && !strncmp(q1, ".DIR;", 5)) {    if (*p1 == ']') {      path->insert(p1 - p0, '.');      path->insert(p1 - p0 + 1, fileName, q1 - fileName);    } else if (*p1 == ':') {      path->append('[');      path->append(']');      path->append(fileName, q1 - fileName);    } else {      path->clear();      path->append(fileName, q1 - fileName);    }  } else {    if (*p1 != ']' && *p1 != ':')      path->clear();    path->append(fileName);  }  return path;#elif defined(WIN32)  //---------- Win32 ----------  GString *tmp;  char buf[256];  char *fp;  tmp = new GString(path);  tmp->append('/');  tmp->append(fileName);  GetFullPathName(tmp->getCString(), sizeof(buf), buf, &fp);  delete tmp;  path->clear();  path->append(buf);  return path;#elif defined(ACORN)  //---------- RISCOS ----------  char *p;  int i;  path->append(".");  i = path->getLength();  path->append(fileName);  for (p = path->getCString() + i; *p; ++p) {    if (*p == '/') {      *p = '.';    } else if (*p == '.') {      *p = '/';    }  }  return path;#elif defined(MACOS)  //---------- MacOS ----------  char *p;  int i;  path->append(":");  i = path->getLength();  path->append(fileName);  for (p = path->getCString() + i; *p; ++p) {    if (*p == '/') {      *p = ':';    } else if (*p == '.') {      *p = ':';    }  }  return path;#elif defined(__EMX__)  //---------- OS/2+EMX ----------  int i;  // appending "." does nothing  if (!strcmp(fileName, "."))    return path;  // appending ".." goes up one directory  if (!strcmp(fileName, "..")) {    for (i = path->getLength() - 2; i >= 0; --i) {      if (path->getChar(i) == '/' || path->getChar(i) == '\\' ||	  path->getChar(i) == ':')	break;    }    if (i <= 0) {      if (path->getChar(0) == '/' || path->getChar(0) == '\\') {	path->del(1, path->getLength() - 1);      } else if (path->getLength() >= 2 && path->getChar(1) == ':') {	path->del(2, path->getLength() - 2);      } else {	path->clear();	path->append("..");      }    } else {      if (path->getChar(i-1) == ':')	++i;      path->del(i, path->getLength() - i);    }    return path;  }  // otherwise, append "/" and new path component  if (path->getLength() > 0 &&      path->getChar(path->getLength() - 1) != '/' &&      path->getChar(path->getLength() - 1) != '\\')    path->append('/');  path->append(fileName);  return path;#else  //---------- Unix ----------  int i;  // appending "." does nothing  if (!strcmp(fileName, "."))    return path;  // appending ".." goes up one directory  if (!strcmp(fileName, "..")) {    for (i = path->getLength() - 2; i >= 0; --i) {      if (path->getChar(i) == '/')	break;    }    if (i <= 0) {      if (path->getChar(0) == '/') {	path->del(1, path->getLength() - 1);      } else {	path->clear();	path->append("..");      }    } else {      path->del(i, path->getLength() - i);    }    return path;  }  // otherwise, append "/" and new path component  if (path->getLength() > 0 &&      path->getChar(path->getLength() - 1) != '/')    path->append('/');  path->append(fileName);  return path;#endif}GString *grabPath(char *fileName) {#ifdef VMS  //---------- VMS ----------  char *p;  if ((p = strrchr(fileName, ']')))    return new GString(fileName, p + 1 - fileName);  if ((p = strrchr(fileName, ':')))    return new GString(fileName, p + 1 - fileName);  return new GString();#elif defined(__EMX__) || defined(WIN32)  //---------- OS/2+EMX and Win32 ----------  char *p;  if ((p = strrchr(fileName, '/')))    return new GString(fileName, p - fileName);  if ((p = strrchr(fileName, '\\')))    return new GString(fileName, p - fileName);  if ((p = strrchr(fileName, ':')))    return new GString(fileName, p + 1 - fileName);  return new GString();#elif defined(ACORN)  //---------- RISCOS ----------  char *p;  if ((p = strrchr(fileName, '.')))    return new GString(fileName, p - fileName);  return new GString();#elif defined(MACOS)  //---------- MacOS ----------  char *p;  if ((p = strrchr(fileName, ':')))    return new GString(fileName, p - fileName);  return new GString();#else  //---------- Unix ----------  char *p;  if ((p = strrchr(fileName, '/')))    return new GString(fileName, p - fileName);  return new GString();#endif}GBool isAbsolutePath(char *path) {#ifdef VMS  //---------- VMS ----------  return strchr(path, ':') ||	 (path[0] == '[' && path[1] != '.' && path[1] != '-');#elif defined(__EMX__) || defined(WIN32)  //---------- OS/2+EMX and Win32 ----------  return path[0] == '/' || path[0] == '\\' || path[1] == ':';#elif defined(ACORN)  //---------- RISCOS ----------  return path[0] == '$';#elif defined(MACOS)  //---------- MacOS ----------  return path[0] != ':';#else  //---------- Unix ----------  return path[0] == '/';#endif}GString *makePathAbsolute(GString *path) {#ifdef VMS  //---------- VMS ----------  char buf[PATH_MAX+1];  if (!isAbsolutePath(path->getCString())) {    if (getcwd(buf, sizeof(buf))) {      path->insert(0, buf);    }  }  return path;#elif defined(WIN32)  //---------- Win32 ----------  char buf[_MAX_PATH];  char *fp;  buf[0] = '\0';  if (!GetFullPathName(path->getCString(), _MAX_PATH, buf, &fp)) {    path->clear();    return path;  }  path->clear();  path->append(buf);  return path;#elif defined(ACORN)  //---------- RISCOS ----------  path->insert(0, '@');  return path;#elif defined(MACOS)  //---------- MacOS ----------  path->del(0, 1);  return path;#else  //---------- Unix and OS/2+EMX ----------  struct passwd *pw;  char buf[PATH_MAX+1];  GString *s;  char *p1, *p2;  int n;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -