Timothe Litt 66e00b9900 Backlog of work since 2016
Too much to list all, but includes (in no particular order):
 - Cleanup for 64-bit builds, MSVC warnings.
 - Structured help
 - Help file compiler.
 - Supports volsets, writes/create work.
 - Support for I18n in messages, help.
 - Makefiles.
 - Initialize volume/volset
 - Command line editing/history

Builds and works on Linux and Windows (VS).
Not recently built or tested on other platforms, but
not intentinonally broken.
2022-10-10 11:00:20 -04:00

89 lines
2.3 KiB
C

/* This is part of ODS2 written by Paul Nankervis,
* email address: Paulnank@au1.ibm.com
*
* ODS2 is distributed freely for all members of the
* VMS community to use. However all derived works
* must maintain comments in their source to acknowledge
* the contributions of the original author and
* subsequent contributors. This is free software; no
* warranty is offered, and while we believe it to be useful,
* you use it at your own risk.
*/
#if !defined( DEBUG ) && defined( DEBUG_EXTENDCMD )
#define DEBUG DEBUG_EXTENDCMD
#else
#ifndef DEBUG
#define DEBUG 0
#endif
#endif
#include "cmddef.h"
/***************************************************************** doextend() */
static uint32_t alq;
#define xtnd_truncate OPT_GENERIC_1
#define xtnd_allocate OPT_GENERIC_2
qual_t
extendquals[] = { {"allocate", xtnd_allocate, 0, DV(&alq),
"commands extend qual_allocate"},
{"truncate", xtnd_truncate, 0, NV,
"commands extend qual_truncate"},
{NULL, 0, 0, NV, NULL }
};
param_t
extendpars[] = { {"filespec", REQ, FSPEC, NOPA, "commands extend filespec"},
{NULL, 0, 0, NOPA, NULL}
};
DECL_CMD(extend) {
vmscond_t sts;
options_t options;
struct FAB fab;
UNUSED(argc);
fab = cc$rms_fab;
alq = 0;
if( $FAILS(sts = checkquals( &options, 0, extendquals, qualc, qualv )) ) {
return sts;
}
if( !(~options & (xtnd_allocate|xtnd_truncate)) )
return printmsg( EXTEND_CONFLQUAL, 0, qstyle_s, qstyle_s );
fab.fab$l_fna = argv[1];
fab.fab$b_fns = (uint8_t)strlen(fab.fab$l_fna);
fab.fab$b_fac = FAB$M_UPD;
if( options & xtnd_truncate )
fab.fab$l_fop |= FAB$M_TEF;
if( $SUCCESSFUL(sts = sys_open( &fab )) ) {
if( alq ) {
fab.fab$l_alq = alq;
sts = sys_extend(&fab);
}
sys_close( &fab );
fab.fab$l_alq = 0;
if( $SUCCESSFUL(sts) ) {
sts = sys_open( &fab );
sys_close( &fab );
}
}
if( $FAILED(sts) ) {
sts = printmsg(sts, 0);
} else {
sts = printmsg( EXTEND_NEWSIZE, 0, fab.fab$l_alq );
}
return sts;
}