Archive-Unzip-Burst
view release on metacpan or search on metacpan
unzip-6.0/vms/cmdline.c view on Meta::CPAN
** 02-000 Hunter Goatley 12-JUL-1994 00:00
** Original UnZip version (v5.11).
** 01-000 Hunter Goatley 30-JUL-1993 07:54
** Original version (for Zip v1.9p1).
**
*/
/* Stand-alone test procedure:
*
* cc /define = TEST=1 [.vms]cmdline.c /include = [] /object = [.vms]
* set command /object = [.vms]unz_cli.obj [.vms]unz_cli.cld
* link /executable = [] [.vms]cmdline.obj, [.vms]unz_cli.obj
* EXEC*UTE == "$SYS$DISK:[]'"
* exec cmdline [ /qualifiers ...] [parameters ...]
*/
/* 2004-12-13 SMS.
* Disabled the module name macro to accommodate old GNU C which didn't
* obey the directive, and thus confused MMS/MMK where the object
* library dependencies need to have the correct module name.
*/
#if 0
#if defined(__DECC) || defined(__GNUC__)
#pragma module module_name module_ident
#else
#module module_name module_ident
#endif
#endif /* 0 */
#define UNZIP_INTERNAL
#include "unzip.h"
#ifndef TEST
# include "unzvers.h" /* for VMSCLI_usage() */
#endif /* !TEST */
/* Workaround for broken header files of older DECC distributions
* that are incompatible with the /NAMES=AS_IS qualifier. */
/* - lib$routines.h definitions: */
#define lib$establish LIB$ESTABLISH
#define lib$get_foreign LIB$GET_FOREIGN
#define lib$get_input LIB$GET_INPUT
#define lib$sig_to_ret LIB$SIG_TO_RET
/* - str$routines.h definitions: */
#define str$concat STR$CONCAT
#define str$find_first_substring STR$FIND_FIRST_SUBSTRING
#include <ssdef.h>
#include <descrip.h>
#include <climsgdef.h>
#include <clidef.h>
#include <lib$routines.h>
#include <str$routines.h>
#ifndef CLI$_COMMA
globalvalue CLI$_COMMA;
#endif
/*
** "Macro" to initialize a dynamic string descriptor.
*/
#define init_dyndesc(dsc) {\
dsc.dsc$w_length = 0;\
dsc.dsc$b_dtype = DSC$K_DTYPE_T;\
dsc.dsc$b_class = DSC$K_CLASS_D;\
dsc.dsc$a_pointer = NULL;}
/*
** Memory allocation step for argv string buffer.
*/
#define ARGBSIZE_UNIT 256
/*
** Memory reallocation macro for argv string buffer.
*/
#define CHECK_BUFFER_ALLOCATION(buf, reserved, requested) { \
if ((requested) > (reserved)) { \
char *save_buf = (buf); \
(reserved) += ARGBSIZE_UNIT; \
if (((buf) = (char *) realloc((buf), (reserved))) == NULL) { \
if (save_buf != NULL) free(save_buf); \
return (SS$_INSFMEM); \
} \
} \
}
/*
** Define descriptors for all of the CLI parameters and qualifiers.
*/
#if 0
$DESCRIPTOR(cli_extract, "EXTRACT"); /* obsolete */
#endif
$DESCRIPTOR(cli_text, "TEXT"); /* -a[a] */
$DESCRIPTOR(cli_text_auto, "TEXT.AUTO"); /* -a */
$DESCRIPTOR(cli_text_all, "TEXT.ALL"); /* -aa */
$DESCRIPTOR(cli_text_none, "TEXT.NONE"); /* ---a */
$DESCRIPTOR(cli_text_stmlf, "TEXT.STMLF"); /* -S */
$DESCRIPTOR(cli_binary, "BINARY"); /* -b[b] */
$DESCRIPTOR(cli_binary_auto, "BINARY.AUTO"); /* -b */
$DESCRIPTOR(cli_binary_all, "BINARY.ALL"); /* -bb */
$DESCRIPTOR(cli_binary_none, "BINARY.NONE"); /* ---b */
$DESCRIPTOR(cli_case_insensitive,"CASE_INSENSITIVE"); /* -C */
$DESCRIPTOR(cli_screen, "SCREEN"); /* -c */
$DESCRIPTOR(cli_directory, "DIRECTORY"); /* -d */
$DESCRIPTOR(cli_freshen, "FRESHEN"); /* -f */
$DESCRIPTOR(cli_help, "HELP"); /* -h */
$DESCRIPTOR(cli_junk, "JUNK"); /* -j */
$DESCRIPTOR(cli_lowercase, "LOWERCASE"); /* -L */
$DESCRIPTOR(cli_list, "LIST"); /* -l */
$DESCRIPTOR(cli_brief, "BRIEF"); /* -l */
$DESCRIPTOR(cli_full, "FULL"); /* -v */
$DESCRIPTOR(cli_full_diags, "FULL.DIAGNOSTICS"); /* -vv */
$DESCRIPTOR(cli_existing, "EXISTING"); /* -o, -oo, -n */
$DESCRIPTOR(cli_exist_newver, "EXISTING.NEW_VERSION"); /* -o */
$DESCRIPTOR(cli_exist_over, "EXISTING.OVERWRITE"); /* -oo */
$DESCRIPTOR(cli_exist_noext, "EXISTING.NOEXTRACT"); /* -n */
$DESCRIPTOR(cli_overwrite, "OVERWRITE"); /* -o, -n */
$DESCRIPTOR(cli_quiet, "QUIET"); /* -q */
$DESCRIPTOR(cli_super_quiet, "QUIET.SUPER"); /* -qq */
$DESCRIPTOR(cli_test, "TEST"); /* -t */
( run in 0.530 second using v1.01-cache-2.11-cpan-5b529ec07f3 )