File unix_intrins.patch of Package ftnchek
--- ftnchek/symtab.h.orig 2020-09-10 10:41:56.801853900 +0200
+++ ftnchek/symtab.h 2020-10-11 16:12:58.368738058 +0200
@@ -619,6 +619,7 @@ typedef struct MVHead { /* ModVarListHea
#define I_1to4 (-5) /* 1 to 4 arguments */
#define I_2or3 (-6) /* 2 or 3 arguments */
#define I_2to4 (-7) /* 2 to 4 arguments */
+#define I_3or4 (-8) /* 3 or 4 arguments */
/* for intrins_flags field */
--- ftnchek/symtab.c.orig 2020-09-10 10:41:58.317890638 +0200
+++ ftnchek/symtab.c 2020-10-11 16:12:12.355649242 +0200
@@ -707,6 +707,14 @@ check_intrins_args(id, arg)
}
numargs_ok = (args_given >= 2 && args_given <= (opt_kind_allowed? 5: 4));
break;
+ case I_3or4: /* 3 or 4 arguments allowed */
+ if (opt_kind_index == -1) { /* no KIND keyword found */
+ if (opt_kind_allowed && args_given == 5) /* last arg, no keyword */
+ opt_kind_index = 1;
+ }
+ numargs_ok = (args_given == 3 || args_given == 4 ||
+ (opt_kind_index != -1 && args_given == 5));
+ break;
default: /* positive numargs: must agree */
if (opt_kind_index == -1) { /* no KIND keyword found */
if (opt_kind_allowed && args_given == (unsigned)(numargs+1)) /* last arg, no keyword */
--- ftnchek/intrins.c.2 2020-10-11 12:03:37.736445877 +0200
+++ ftnchek/intrins.c 2020-10-11 15:40:12.870234001 +0200
@@ -638,20 +638,46 @@ SYSTEM_CLOCK ([COUNT, Obtai
{"LOC", 1,I|R|D|C|Z|L|STR,type_INTEGER, I_NONSTD|I_EXTRA,NULL},
/* Utility routines */
-{"EXIT", I_0or1, I, type_SUBROUTINE,I_NONSTD|I_EXTRA,NULL},
+{"EXIT", I_0or1, I, type_SUBROUTINE,I_NONSTD|I_EXTRA,NULL},
+{"LNBLNK", 1, STR, type_INTEGER, I_NONSTD|I_EXTRA,NULL},
#endif
/* Unix only. These are a selected subset of the F77
library routines listed in the USENIX manual section 3F.
*/
#ifdef UNIX_INTRINSICS
+{"ACCESS", 2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"ABORT", 1, STR, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"ALARM", I_2or3, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
{"AND", 2, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"BACKTRACE", 0, 0, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"CHDIR", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"CHMOD", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"COMPLEX", 2, I|R|D, type_COMPLEX, I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"CTIME", I_1or2, I|STR, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"DTIME", I_1or2, R, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"ETIME", I_1or2, R, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FDATE", I_0or1, STR, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FGET", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"FGETC", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"FLUSH", I_0or1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FNUM", 1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FPUT", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"FPUTC", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"FREE", 1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FSEEK", I_3or4, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FSTAT", I_2or3, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"FTELL", I_1or2, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"GETCWD", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
/* I, then STR not enforced in GETARG. */
{"GETARG", 2, I|STR, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"GETENV", 2, STR, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"GETGID", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"GETLOG", 1, STR, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"GETPID", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"GETUID", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
{"GMTIME", 2, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},/*2nd arg array(9)*/
+{"HOSTNM", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
#ifdef IARGC_NO_ARG
{"IARGC", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
#else
@@ -661,9 +687,24 @@ SYSTEM_CLOCK ([COUNT, Obtai
{"IARGC", I_0or1, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
#endif
#endif
+{"IERRNO", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"INT2", 1, I|R|D|C|Z,type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"INT8", 1, I|R|D|C|Z,type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"ITIME", 1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"LONG", 1, I|R|D|C|Z,type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"ISATTY", 1, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"ISNAN", 1, R, type_LOGICAL, I_NONSTD|I_UNIX,NULL},
+{"KILL", I_2or3, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"LINK", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"LSHIFT", 2, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"LSTAT", I_2or3, I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"LTIME", 2, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},/*2nd arg array(9)*/
+{"MALLOC", 1, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"MCLOCK", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"MCLOCK8", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
{"OR", 2, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"PERROR", 1, STR, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"RENAME", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
#ifdef RAND_NO_ARG /*RAND() form*/
{"IRAND", 0, 0, type_INTEGER, I_NONSTD|I_UNIX,NULL},
{"RAND", 0, 0, type_REAL, I_NONSTD|I_UNIX,NULL},
@@ -677,9 +718,18 @@ SYSTEM_CLOCK ([COUNT, Obtai
#endif
#endif
{"RSHIFT", 2, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"SECOND", I_0or1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"SIGNAL", I_2or3, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"SLEEP", 1, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
{"SRAND", 1, I|R, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},/*AIX has this*/
+{"STAT", I_2or3, I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"SYMLNK", I_2or3, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"SYSTEM", 1, STR, type_INTEGER, I_NONSTD|I_UNIX,NULL},
{"TIME", I_0or1, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"TIME8", I_0or1, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
+{"TTYNAM", I_1or2, I|STR, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
+{"UMASK", I_1or2, I, type_SUBROUTINE,I_NONSTD|I_UNIX,NULL},
+{"UNLINK", I_1or2, STR|I, type_SUBROUTINE,I_MIXED_ARGS|I_NONSTD|I_UNIX,NULL},
{"XOR", 2, I, type_INTEGER, I_NONSTD|I_UNIX,NULL},
#endif