summaryrefslogtreecommitdiffstats
path: root/src/os_vms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_vms.c')
-rw-r--r--src/os_vms.c193
1 files changed, 96 insertions, 97 deletions
diff --git a/src/os_vms.c b/src/os_vms.c
index 8845b28a9f..96fbc172f9 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -11,19 +11,19 @@
#include "vim.h"
-/* define _generic_64 for use in time functions */
+// define _generic_64 for use in time functions
#if !defined(VAX) && !defined(PROTO)
# include <gen64def.h>
#else
-/* based on Alpha's gen64def.h; the file is absent on VAX */
+// based on Alpha's gen64def.h; the file is absent on VAX
typedef struct _generic_64 {
# pragma __nomember_alignment
- __union { /* You can treat me as... */
- /* long long is not available on VAXen */
- /* unsigned __int64 gen64$q_quadword; ...a single 64-bit value, or */
+ __union { // You can treat me as...
+ // long long is not available on VAXen
+ // unsigned __int64 gen64$q_quadword; ...a single 64-bit value, or
- unsigned int gen64$l_longword [2]; /* ...two 32-bit values, or */
- unsigned short int gen64$w_word [4]; /* ...four 16-bit values */
+ unsigned int gen64$l_longword [2]; // ...two 32-bit values, or
+ unsigned short int gen64$w_word [4]; // ...four 16-bit values
} gen64$r_quad_overlay;
} GENERIC_64;
#endif
@@ -67,13 +67,13 @@ typedef struct
} ITMLST2;
static TT_MODE orgmode;
-static short iochan; /* TTY I/O channel */
-static short iosb[4]; /* IO status block */
+static short iochan; // TTY I/O channel
+static short iosb[4]; // IO status block
static int vms_match_num = 0;
static int vms_match_free = 0;
static char_u **vms_fmatch = NULL;
-static char *Fspec_Rms; /* rms file spec, passed implicitly between routines */
+static char *Fspec_Rms; // rms file spec, passed implicitly between routines
@@ -139,7 +139,7 @@ mch_settmode(int tmode)
set_tty(int row, int col)
{
int status;
- TT_MODE newmode; /* New TTY mode bits */
+ TT_MODE newmode; // New TTY mode bits
static short first_time = TRUE;
if (first_time)
@@ -165,7 +165,7 @@ set_tty(int row, int col)
get_tty(void)
{
- static $DESCRIPTOR(odsc,"SYS$OUTPUT"); /* output descriptor */
+ static $DESCRIPTOR(odsc,"SYS$OUTPUT"); // output descriptor
int status;
TT_MODE tt_mode;
@@ -195,7 +195,7 @@ mch_get_shellsize(void)
{
TT_MODE tmode;
- tmode = get_tty(); /* get size from VMS */
+ tmode = get_tty(); // get size from VMS
Columns = tmode.width;
Rows = tmode.x.y.length;
return OK;
@@ -262,7 +262,7 @@ mch_setenv(char *var, char *value, int x)
{
int res, dum;
long attrib = 0L;
- char acmode = PSL$C_SUPER; /* needs SYSNAM privilege */
+ char acmode = PSL$C_SUPER; // needs SYSNAM privilege
DESC tabnam, lognam;
ITMLST1 itmlst;
@@ -288,9 +288,9 @@ vms_sys(char *cmd, char *out, char *inp)
if (inp)
vul_desc(&idsc, inp);
- lib$spawn(cmd ? &cdsc : NULL, /* command string */
- inp ? &idsc : NULL, /* input file */
- out ? &odsc : NULL, /* output file */
+ lib$spawn(cmd ? &cdsc : NULL, // command string
+ inp ? &idsc : NULL, // input file
+ out ? &odsc : NULL, // output file
0, 0, 0, &status, 0, 0, 0, 0, 0, 0);
return status;
}
@@ -314,7 +314,7 @@ vms_tolower( char *name )
vms_sys_status(int status)
{
if (status != SS$_NORMAL && (status & STS$M_SUCCESS) == 0)
- return status; /* Command failed. */
+ return status; // Command failed.
return 0;
}
@@ -329,35 +329,35 @@ vms_read(char *inbuf, size_t nbytes)
{
int status, function, len;
TT_MODE tt_mode;
- ITEM itmlst[2]; /* terminates on everything */
+ ITEM itmlst[2]; // terminates on everything
static long trm_mask[8] = {-1, -1, -1, -1, -1, -1, -1, -1};
- /* whatever happened earlier we need an iochan here */
+ // whatever happened earlier we need an iochan here
if (!iochan)
tt_mode = get_tty();
- /* important: clean the inbuf */
+ // important: clean the inbuf
memset(inbuf, 0, nbytes);
- /* set up the itemlist for the first read */
+ // set up the itemlist for the first read
vul_item(&itmlst[0], 0, TRM$_MODIFIERS,
(char *)( TRM$M_TM_NOECHO | TRM$M_TM_NOEDIT |
TRM$M_TM_NOFILTR | TRM$M_TM_TRMNOECHO |
TRM$M_TM_NORECALL) , 0);
vul_item(&itmlst[1], sizeof(trm_mask), TRM$_TERM, (char *)&trm_mask, 0);
- /* wait forever for a char */
+ // wait forever for a char
function = (IO$_READLBLK | IO$M_EXTEND);
status = sys$qiow(0, iochan, function, &iosb, 0, 0,
inbuf, nbytes-1, 0, 0, &itmlst, sizeof(itmlst));
- len = strlen(inbuf); /* how many chars we got? */
+ len = strlen(inbuf); // how many chars we got?
- /* read immediately the rest in the IO queue */
+ // read immediately the rest in the IO queue
function = (IO$_READLBLK | IO$M_TIMED | IO$M_ESCAPE | IO$M_NOECHO | IO$M_NOFILTR);
status = sys$qiow(0, iochan, function, &iosb, 0, 0,
inbuf+len, nbytes-1-len, 0, 0, 0, 0);
- len = strlen(inbuf); /* return the total length */
+ len = strlen(inbuf); // return the total length
return len;
}
@@ -375,12 +375,12 @@ vms_wproc(char *name, int val)
int i;
static int vms_match_alloced = 0;
- if (val == DECC$K_FOREIGN ) /* foreign non VMS files are not counting */
+ if (val == DECC$K_FOREIGN ) // foreign non VMS files are not counting
return 1;
- /* accept all DECC$K_FILE and DECC$K_DIRECTORY */
+ // accept all DECC$K_FILE and DECC$K_DIRECTORY
if (vms_match_num == 0) {
- /* first time through, setup some things */
+ // first time through, setup some things
if (NULL == vms_fmatch) {
vms_fmatch = ALLOC_MULT(char_u *, EXPL_ALLOC_INC);
if (!vms_fmatch)
@@ -389,16 +389,16 @@ vms_wproc(char *name, int val)
vms_match_free = EXPL_ALLOC_INC;
}
else {
- /* re-use existing space */
+ // re-use existing space
vms_match_free = vms_match_alloced;
}
}
- /* make matches look uniform */
+ // make matches look uniform
vms_remove_version(name);
name=vms_tolower(name);
- /* if name already exists, don't add it */
+ // if name already exists, don't add it
for (i = 0; i<vms_match_num; i++) {
if (0 == STRCMP((char_u *)name,vms_fmatch[i]))
return 1;
@@ -406,7 +406,7 @@ vms_wproc(char *name, int val)
if (--vms_match_free == 0) {
char_u **old_vms_fmatch = vms_fmatch;
- /* add more space to store matches */
+ // add more space to store matches
vms_match_alloced += EXPL_ALLOC_INC;
vms_fmatch = vim_realloc(old_vms_fmatch,
sizeof(char **) * vms_match_alloced);
@@ -445,7 +445,7 @@ mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, i
int dir;
int files_alloced, files_free;
- *num_file = 0; /* default: no files found */
+ *num_file = 0; // default: no files found
files_alloced = EXPL_ALLOC_INC;
files_free = EXPL_ALLOC_INC;
*file = ALLOC_MULT(char_u *, files_alloced);
@@ -456,13 +456,13 @@ mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, i
}
for (i = 0; i < num_pat; i++)
{
- /* expand environment var or home dir */
+ // expand environment var or home dir
if (vim_strchr(pat[i],'$') || vim_strchr(pat[i],'~'))
expand_env(pat[i],buf,MAXPATHL);
else
STRCPY(buf,pat[i]);
- vms_match_num = 0; /* reset collection counter */
+ vms_match_num = 0; // reset collection counter
result = decc$translate_vms(vms_fixfilename(buf));
if ( (int) result == 0 || (int) result == -1 ) {
cnt = 0;
@@ -477,21 +477,21 @@ mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, i
for (i = 0; i < cnt; i++)
{
- /* files should exist if expanding interactively */
+ // files should exist if expanding interactively
if (!(flags & EW_NOTFOUND) && mch_getperm(vms_fmatch[i]) < 0)
continue;
- /* do not include directories */
+ // do not include directories
dir = (mch_isdir(vms_fmatch[i]));
if (( dir && !(flags & EW_DIR)) || (!dir && !(flags & EW_FILE)))
continue;
- /* Skip files that are not executable if we check for that. */
+ // Skip files that are not executable if we check for that.
if (!dir && (flags & EW_EXEC)
&& !mch_can_exe(vms_fmatch[i], NULL, !(flags & EW_SHELLCMD)))
continue;
- /* allocate memory for pointers */
+ // allocate memory for pointers
if (--files_free < 1)
{
char_u **old_file = *file;
@@ -521,8 +521,8 @@ mch_expandpath(garray_T *gap, char_u *path, int flags)
char *result;
vms_match_num = 0;
- /* the result from the decc$translate_vms needs to be handled */
- /* otherwise it might create ACCVIO error in decc$to_vms */
+ // the result from the decc$translate_vms needs to be handled
+ // otherwise it might create ACCVIO error in decc$to_vms
result = decc$translate_vms(vms_fixfilename(path));
if ( (int) result == 0 || (int) result == -1 ) {
cnt = 0;
@@ -533,7 +533,7 @@ mch_expandpath(garray_T *gap, char_u *path, int flags)
cnt = vms_match_num;
for (i = 0; i < cnt; i++)
{
- if (mch_getperm(vms_fmatch[i]) >= 0) /* add existing file */
+ if (mch_getperm(vms_fmatch[i]) >= 0) // add existing file
addfile(gap, vms_fmatch[i], flags);
}
return cnt;
@@ -551,10 +551,9 @@ vms_unix_mixed_filespec(char *in, char *out)
int len;
char *out_str=out;
- /* copy vms filename portion up to last colon
- * (node and/or disk)
- */
- lastcolon = strrchr(in, ':'); /* find last colon */
+ // copy vms filename portion up to last colon
+ // (node and/or disk)
+ lastcolon = strrchr(in, ':'); // find last colon
if (lastcolon != NULL) {
len = lastcolon - in + 1;
strncpy(out, in, len);
@@ -562,49 +561,49 @@ vms_unix_mixed_filespec(char *in, char *out)
in += len;
}
- end_of_dir = NULL; /* default: no directory */
+ end_of_dir = NULL; // default: no directory
- /* start of directory portion */
+ // start of directory portion
ch = *in;
- if ((ch == '[') || (ch == '/') || (ch == '<')) { /* start of directory(s) ? */
+ if ((ch == '[') || (ch == '/') || (ch == '<')) { // start of directory(s) ?
ch = '[';
SKIP_FOLLOWING_SLASHES(in);
- } else if (EQN(in, "../", 3)) { /* Unix parent directory? */
+ } else if (EQN(in, "../", 3)) { // Unix parent directory?
*out++ = '[';
*out++ = '-';
end_of_dir = out;
ch = '.';
in += 2;
SKIP_FOLLOWING_SLASHES(in);
- } else { /* not a special character */
- while (EQN(in, "./", 2)) { /* Ignore Unix "current dir" */
+ } else { // not a special character
+ while (EQN(in, "./", 2)) { // Ignore Unix "current dir"
in += 2;
SKIP_FOLLOWING_SLASHES(in);
}
- if (strchr(in, '/') == NULL) { /* any more Unix directories ? */
- strcpy(out, in); /* No - get rest of the spec */
+ if (strchr(in, '/') == NULL) { // any more Unix directories ?
+ strcpy(out, in); // No - get rest of the spec
return;
} else {
- *out++ = '['; /* Yes, denote a Vms subdirectory */
+ *out++ = '['; // Yes, denote a Vms subdirectory
ch = '.';
--in;
}
}
- /* if we get here, there is a directory part of the filename */
+ // if we get here, there is a directory part of the filename
- /* initialize output file spec */
+ // initialize output file spec
*out++ = ch;
++in;
while (*in != '\0') {
ch = *in;
- if ((ch == ']') || (ch == '/') || (ch == '>') ) { /* end of (sub)directory ? */
+ if ((ch == ']') || (ch == '/') || (ch == '>') ) { // end of (sub)directory ?
end_of_dir = out;
ch = '.';
SKIP_FOLLOWING_SLASHES(in);
}
- else if (EQN(in, "../", 3)) { /* Unix parent directory? */
+ else if (EQN(in, "../", 3)) { // Unix parent directory?
*out++ = '-';
end_of_dir = out;
ch = '.';
@@ -612,7 +611,7 @@ vms_unix_mixed_filespec(char *in, char *out)
SKIP_FOLLOWING_SLASHES(in);
}
else {
- while (EQN(in, "./", 2)) { /* Ignore Unix "current dir" */
+ while (EQN(in, "./", 2)) { // Ignore Unix "current dir"
end_of_dir = out;
in += 2;
SKIP_FOLLOWING_SLASHES(in);
@@ -620,14 +619,14 @@ vms_unix_mixed_filespec(char *in, char *out)
}
}
- /* Place next character into output file spec */
+ // Place next character into output file spec
*out++ = ch;
++in;
}
- *out = '\0'; /* Terminate output file spec */
+ *out = '\0'; // Terminate output file spec
- if (end_of_dir != NULL) /* Terminate directory portion */
+ if (end_of_dir != NULL) // Terminate directory portion
*end_of_dir = ']';
}
@@ -651,7 +650,7 @@ vms_fixfilename(void *instring)
static size_t buflen = 0;
size_t len;
- /* get a big-enough buffer */
+ // get a big-enough buffer
len = strlen(instring) + 1;
if (len > buflen)
{
@@ -665,22 +664,22 @@ vms_fixfilename(void *instring)
strcpy(tmpbuf, instring);
#endif
- Fspec_Rms = buf; /* for decc$to_vms */
+ Fspec_Rms = buf; // for decc$to_vms
if (strchr(instring,'/') == NULL)
- /* It is already a VMS file spec */
+ // It is already a VMS file spec
strcpy(buf, instring);
- else if (strchr(instring,'"') == NULL) /* password in the path? */
+ else if (strchr(instring,'"') == NULL) // password in the path?
{
- /* Seems it is a regular file, let guess that it is pure Unix fspec */
+ // Seems it is a regular file, let guess that it is pure Unix fspec
if (decc$to_vms(instring, vms_fspec_proc, 0, 0) <= 0)
- /* No... it must be mixed */
+ // No... it must be mixed
vms_unix_mixed_filespec(instring, buf);
}
else
- /* we have a password in the path */
- /* decc$ functions can not handle */
- /* this is our only hope to resolv */
+ // we have a password in the path
+ // decc$ functions can not handle
+ // this is our only hope to resolv
vms_unix_mixed_filespec(instring, buf);
return buf;
@@ -697,7 +696,7 @@ vms_remove_version(void * fname)
char_u *cp;
char_u *fp;
- if ((cp = vim_strchr( fname, ';')) != NULL) /* remove version */
+ if ((cp = vim_strchr( fname, ';')) != NULL) // remove version
*cp = '\0';
else if ((cp = vim_strrchr( fname, '.')) != NULL )
{
@@ -726,7 +725,7 @@ struct typeahead_st {
*/
int
RealWaitForChar(
- int fd UNUSED, /* always read from iochan */
+ int fd UNUSED, // always read from iochan
long msec,
int *check_for_gpm UNUSED,
int *interrupted)
@@ -738,71 +737,71 @@ RealWaitForChar(
unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
float sec =(float) msec/1000;
- /* make sure the iochan is set */
+ // make sure the iochan is set
if (!iochan)
get_tty();
if (sec > 0) {
- /* time-out specified; convert it to absolute time */
- /* sec>0 requirement of lib$cvtf_to_internal_time()*/
+ // time-out specified; convert it to absolute time
+ // sec>0 requirement of lib$cvtf_to_internal_time()
- /* get current time (number of 100ns ticks since the VMS Epoch) */
+ // get current time (number of 100ns ticks since the VMS Epoch)
status = sys$gettim(&time_curr);
if (status != SS$_NORMAL)
- return 0; /* error */
- /* construct the delta time */
+ return 0; // error
+ // construct the delta time
#if __G_FLOAT==0
# ifndef VAX
- /* IEEE is default on IA64, but can be used on Alpha too - but not on VAX */
+ // IEEE is default on IA64, but can be used on Alpha too - but not on VAX
status = lib$cvts_to_internal_time(
&convert_operation, &sec, &time_diff);
# endif
-#else /* default on Alpha and VAX */
+#else // default on Alpha and VAX
status = lib$cvtf_to_internal_time(
&convert_operation, &sec, &time_diff);
#endif
if (status != LIB$_NORMAL)
- return 0; /* error */
- /* add them up */
+ return 0; // error
+ // add them up
status = lib$add_times(
&time_curr,
&time_diff,
&time_out);
if (status != LIB$_NORMAL)
- return 0; /* error */
+ return 0; // error
}
while (TRUE) {
- /* select() */
+ // select()
status = sys$qiow(0, iochan, IO$_SENSEMODE | IO$M_TYPEAHDCNT, iosb,
0, 0, &typeahead, 8, 0, 0, 0, 0);
if (status != SS$_NORMAL || (iosb[0] & 0xFFFF) != SS$_NORMAL)
- return 0; /* error */
+ return 0; // error
if (typeahead.numchars)
- return 1; /* ready to read */
+ return 1; // ready to read
- /* there's nothing to read; what now? */
+ // there's nothing to read; what now?
if (msec == 0) {
- /* immediate time-out; return impatiently */
+ // immediate time-out; return impatiently
return 0;
} else if (msec < 0) {
- /* no time-out; wait on indefinitely */
- return 1; /* fakeout to force a wait in vms_read() */
+ // no time-out; wait on indefinitely
+ return 1; // fakeout to force a wait in vms_read()
} else {
- /* time-out needs to be checked */
+ // time-out needs to be checked
status = sys$gettim(&time_curr);
if (status != SS$_NORMAL)
- return 0; /* error */
+ return 0; // error
status = lib$sub_times(
&time_out,
&time_curr,
&time_diff);
if (status != LIB$_NORMAL)
- return 0; /* error, incl. time_diff < 0 (i.e. time-out) */
+ return 0; // error, incl. time_diff < 0 (i.e. time-out)
- /* otherwise wait some more */
+ // otherwise wait some more
}
}
}