📄 amiga.c
字号:
/* Copyright (c) 1990-2006 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2005-Feb-10 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html*//* OS specific routines for AMIGA platform. * * John Bush <John.Bush@east.sun.com> BIX: jbush * Paul Kienitz <kie@pacbell.net> * * History: * * Date DoBee Comments * ------- -------- ----------------------------------------------- * 21Jan93 JBush Original coding. * Incorporated filedate.c (existing routine). * * 31Jan93 JBush Made filedate.c include unconditional. * * 18Jul93 PaulK Moved Aztec _abort() here from stat.c because we * can't share the same one between Zip and UnZip. * Added close_leftover_open_dirs() call to it. * * 17Apr95 PaulK Added Amiga internal version string so that * installer programs can compare the version being * installed to see if the copy the user already has * is older or newer. Added Prestart_Hook to support * debug tracing in deflate.a. * * 6May95 PaulK Added GetComment() for filenote support. * * 12Nov95 PaulK Added #define ZIP in front of filedate.c, for * new options in there; removed declare of set_con() * since echon() no longer expands to it (or anything). * * 12Feb96 PaulK Removed call of echon() entirely. * * 12Jul97 PaulK Made both Aztec and SAS define USE_TIME_LIB for filedate.c * * 26Aug97 PaulK Added ClearIOErr_exit() * * 2Jan98 HWalt Adapted for SAS/C using stat.c replacement functions * * 6Jun00 PaulK Removed references to time_lib, since new filedate.c * supercedes it */#include <exec/memory.h>#ifdef AZTEC_C# include <libraries/dos.h># include <libraries/dosextens.h># include <clib/exec_protos.h># include <clib/dos_protos.h># include <pragmas/exec_lib.h># include <pragmas/dos_lib.h>#else# include <proto/exec.h># include <proto/dos.h>#endif#include <stdlib.h>#ifndef ZCONST# define ZCONST const#endif#include "ziperr.h"void ziperr(int c, ZCONST char *h);#define ZIP#if !defined(UTIL)# define NO_MKTIME#endif#ifdef AZTEC_C/* ============================================================= *//* filedate.c is an external file, since it's shared with UnZip. *//* Aztec includes it here, but SAS/C now compiles it separately. */# include "amiga/filedate.c"/* the same applies to stat.c */# include "amiga/stat.c"# define setenv BOGUS_INCOMPATIBLE_setenv# include <fcntl.h># undef setenv# ifdef DEBUG# define PRESTART_HOOK# endif#endifextern void close_leftover_open_dirs(void);/* the following handles cleanup when a ^C interrupt happens: */void _abort(void) /* called when ^C is pressed */{ close_leftover_open_dirs(); ziperr(ZE_ABORT, "^C");}void ClearIOErr_exit(int e) /* EXIT is defined as this */{ if (!e) ((struct Process *) FindTask(NULL))->pr_Result2 = 0; /* we clear IoErr() since we are successful, in a 1.x-compatible way */ exit(e);}/* Make sure the version number here matches the number in revision.h *//* as closely as possible in strict decimal "#.#" form: */const char version_id[] = "\0$VER: Zip 2.3 ("# include "env:VersionDate"")\r\n";/* call this with an arg of NULL to free storage: */char *GetComment(char *filename){ BPTR lk; static struct FileInfoBlock *fib = NULL; if (!filename) { if (fib) FreeMem(fib, sizeof(*fib)); fib = NULL; return NULL; } if (!fib) { if (!(fib = AllocMem(sizeof(*fib), MEMF_PUBLIC))) ziperr(ZE_MEM, "was checking filenotes"); } if (!(lk = Lock(filename, ACCESS_READ))) return NULL; if (!Examine(lk, fib)) fib->fib_Comment[0] = '\0'; UnLock(lk); return fib->fib_Comment[0] ? &fib->fib_Comment[0] : NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -