nulib2/nulib2/State.h

158 lines
6.0 KiB
C

/*
* NuLib2
* Copyright (C) 2000-2007 by Andy McFadden, All Rights Reserved.
* This is free software; you can redistribute it and/or modify it under the
* terms of the BSD License, see the file COPYING.
*/
#ifndef NULIB2_STATE_H
#define NULIB2_STATE_H
#include "MiscStuff.h"
#include "NufxLib.h"
/*
* Things you can tell NuLib2 to do.
*
* (Some debug code in NState_DebugDump() is sensitive to the order here.)
*/
typedef enum Command {
kCommandUnknown = 0,
kCommandAdd,
kCommandDelete,
kCommandExtract,
kCommandExtractToPipe,
kCommandListShort,
kCommandListVerbose,
kCommandListDebug,
kCommandTest,
kCommandHelp
} Command;
/*
* Program-wide state.
*/
typedef struct NulibState {
/* global goodness */
const char* programVersion;
/* system-specific values */
char systemPathSeparator;
char altSystemPathSeparator;
/* pointer to archive we're working with */
NuArchive* pArchive;
/* misc state */
Boolean suppressOutput;
Boolean inputUnavailable;
NuRecordIdx renameFromIdx;
char* renameToStr;
NuDataSink* pPipeSink;
NuDataSink* pCommentSink;
long matchCount;
long totalLen;
long totalCompLen;
/* temp storage */
long tempPathnameAlloc;
char* tempPathnameBuf;
/* command-line options */
Command command;
Boolean modUpdate;
Boolean modFreshen;
Boolean modRecurse;
Boolean modJunkPaths;
Boolean modNoCompression;
Boolean modCompressDeflate;
Boolean modCompressBzip2;
Boolean modComments;
Boolean modBinaryII;
Boolean modConvertText;
Boolean modConvertAll;
Boolean modOverwriteExisting;
Boolean modAddAsDisk;
Boolean modPreserveType;
Boolean modPreserveTypeExtended;
const char* archiveFilename;
char* const* filespecPointer;
long filespecCount;
} NulibState;
NuError NState_Init(NulibState** ppState);
NuError NState_ExtraInit(NulibState* pState);
void NState_Free(NulibState* pState);
#ifdef DEBUG_MSGS
void NState_DebugDump(const NulibState* pState);
#endif
char NState_GetSystemPathSeparator(const NulibState* pState);
char NState_GetAltSystemPathSeparator(const NulibState* pState);
const char* NState_GetProgramVersion(const NulibState* pState);
NuArchive* NState_GetNuArchive(const NulibState* pState);
void NState_SetNuArchive(NulibState* pState, NuArchive* pArchive);
Boolean NState_GetSuppressOutput(const NulibState* pState);
void NState_SetSuppressOutput(NulibState* pState, Boolean doSuppress);
Boolean NState_GetInputUnavailable(const NulibState* pState);
void NState_SetInputUnavailable(NulibState* pState, Boolean isUnavailable);
NuRecordIdx NState_GetRenameFromIdx(const NulibState* pState);
void NState_SetRenameFromIdx(NulibState* pState, NuRecordIdx recordIdx);
char* NState_GetRenameToStr(const NulibState* pState);
void NState_SetRenameToStr(NulibState* pState, char* str);
NuDataSink* NState_GetPipeSink(const NulibState* pState);
NuDataSink* NState_GetCommentSink(const NulibState* pState);
long NState_GetMatchCount(const NulibState* pState);
void NState_SetMatchCount(NulibState* pState, long count);
void NState_IncMatchCount(NulibState* pState);
void NState_AddToTotals(NulibState* pState, long len, long compLen);
void NState_GetTotals(NulibState* pState, long* pTotalLen, long* pTotalCompLen);
long NState_GetTempPathnameLen(NulibState* pState);
void NState_SetTempPathnameLen(NulibState* pState, long len);
char* NState_GetTempPathnameBuf(NulibState* pState);
Command NState_GetCommand(const NulibState* pState);
void NState_SetCommand(NulibState* pState, Command cmd);
const char* NState_GetArchiveFilename(const NulibState* pState);
void NState_SetArchiveFilename(NulibState* pState, const char* archiveFilename);
char* const* NState_GetFilespecPointer(const NulibState* pState);
void NState_SetFilespecPointer(NulibState* pState, char* const* filespec);
long NState_GetFilespecCount(const NulibState* pState);
void NState_SetFilespecCount(NulibState* pState, long filespecCount);
Boolean NState_GetModUpdate(const NulibState* pState);
void NState_SetModUpdate(NulibState* pState, Boolean val);
Boolean NState_GetModFreshen(const NulibState* pState);
void NState_SetModFreshen(NulibState* pState, Boolean val);
Boolean NState_GetModRecurse(const NulibState* pState);
void NState_SetModRecurse(NulibState* pState, Boolean val);
Boolean NState_GetModJunkPaths(const NulibState* pState);
void NState_SetModJunkPaths(NulibState* pState, Boolean val);
Boolean NState_GetModNoCompression(const NulibState* pState);
void NState_SetModNoCompression(NulibState* pState, Boolean val);
Boolean NState_GetModCompressDeflate(const NulibState* pState);
void NState_SetModCompressDeflate(NulibState* pState, Boolean val);
Boolean NState_GetModCompressBzip2(const NulibState* pState);
void NState_SetModCompressBzip2(NulibState* pState, Boolean val);
Boolean NState_GetModComments(const NulibState* pState);
void NState_SetModComments(NulibState* pState, Boolean val);
Boolean NState_GetModBinaryII(const NulibState* pState);
void NState_SetModBinaryII(NulibState* pState, Boolean val);
Boolean NState_GetModConvertText(const NulibState* pState);
void NState_SetModConvertText(NulibState* pState, Boolean val);
Boolean NState_GetModConvertAll(const NulibState* pState);
void NState_SetModConvertAll(NulibState* pState, Boolean val);
Boolean NState_GetModOverwriteExisting(const NulibState* pState);
void NState_SetModOverwriteExisting(NulibState* pState, Boolean val);
Boolean NState_GetModAddAsDisk(const NulibState* pState);
void NState_SetModAddAsDisk(NulibState* pState, Boolean val);
Boolean NState_GetModPreserveType(const NulibState* pState);
void NState_SetModPreserveType(NulibState* pState, Boolean val);
Boolean NState_GetModPreserveTypeExtended(const NulibState* pState);
void NState_SetModPreserveTypeExtended(NulibState* pState, Boolean val);
#endif /*NULIB2_STATE_H*/