diff --git a/src/osdef.sh b/src/osdef.sh
index 6f9fea2..59ef55d 100755
--- a/src/osdef.sh
+++ b/src/osdef.sh
@@ -53,11 +53,11 @@
 # start of the line is matched with "[)*, 	]\1[ 	(]"
 sed < osdef0.cc -e '/\(..*\)/s// \1/' > osdef0.ccc
 
-sed < $srcdir/osdef1.h.in -n -e '/^extern/s@.*[)* 	][)* 	]*\([a-zA-Z_][a-zA-Z0-9_]*\) __ARGS.*@/[)*, 	][(]*\1[)]*[ 	(]/i\\\
-\\/\\[^a-zA-Z_\\]\1 __ARGS\\/d@p' > osdef11.sed
+sed < $srcdir/osdef1.h.in -n -e '/^extern/s@.*[)* 	][)* 	]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, 	][(]*\1[)]*[ 	(]/i\\\
+\\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef11.sed
 
-sed < $srcdir/osdef2.h.in -n -e '/^extern/s@.*[)* 	][)* 	]*\([a-zA-Z_][a-zA-Z0-9_]*\) __ARGS.*@/[)*, 	][(]*\1[)]*[ 	(]/i\\\
-\\/\\[^a-zA-Z_\\]\1 __ARGS\\/d@p' > osdef21.sed
+sed < $srcdir/osdef2.h.in -n -e '/^extern/s@.*[)* 	][)* 	]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, 	][(]*\1[)]*[ 	(]/i\\\
+\\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef21.sed
 
 cat << EOF > osdef2.sed
 1i\\
diff --git a/src/osdef1.h.in b/src/osdef1.h.in
index 8190c9b..a11e6ea 100644
--- a/src/osdef1.h.in
+++ b/src/osdef1.h.in
@@ -12,130 +12,130 @@
  * sed cannot always handle so many commands, this is file 1 of 2
  */
 
-extern int	printf __ARGS((char *, ...));
-extern int	fprintf __ARGS((FILE *, char *, ...));
-extern int	sprintf __ARGS((char *, char *, ...));
-extern int	sscanf __ARGS((char *, char *, ...));
+extern int	printf(char *, ...);
+extern int	fprintf(FILE *, char *, ...);
+extern int	sprintf(char *, char *, ...);
+extern int	sscanf(char *, char *, ...);
 #ifndef fopen	/* could be redefined to fopen64() */
-extern FILE	*fopen __ARGS((const char *, const char *));
+extern FILE	*fopen(const char *, const char *);
 #endif
-extern int	fclose __ARGS((FILE *));
-extern int	fseek __ARGS((FILE *, long, int));
+extern int	fclose(FILE *);
+extern int	fseek(FILE *, long, int);
 #ifdef HAVE_FSEEKO
-extern int	fseeko __ARGS((FILE *, off_t, int));
+extern int	fseeko(FILE *, off_t, int);
 #endif
-extern long	ftell __ARGS((FILE *));
+extern long	ftell(FILE *);
 #ifdef HAVE_FSEEKO
-extern off_t	ftello __ARGS((FILE *));
+extern off_t	ftello(FILE *);
 #endif
-extern void	rewind __ARGS((FILE *));
-extern int	fread __ARGS((char *, int, int, FILE *));
-extern int	fwrite __ARGS((char *, int, int, FILE *));
-extern int	fputs __ARGS((char *, FILE *));
+extern void	rewind(FILE *);
+extern int	fread(char *, int, int, FILE *);
+extern int	fwrite(char *, int, int, FILE *);
+extern int	fputs(char *, FILE *);
 #ifndef ferror	/* let me say it again: "macros should never have prototypes" */
-extern int	ferror __ARGS((FILE *));
+extern int	ferror(FILE *);
 #endif
-extern int	fflush __ARGS((FILE *));
+extern int	fflush(FILE *);
 #if defined(sun) || defined(_SEQUENT_)
 /* used inside of stdio macros getc(), puts(), putchar()... */
-extern int	_flsbuf __ARGS((int, FILE *));
-extern int	_filbuf __ARGS((FILE *));
+extern int	_flsbuf(int, FILE *);
+extern int	_filbuf(FILE *);
 #endif
 
 #if !defined(HAVE_SELECT)
-struct pollfd;			/* for poll __ARGS */
-extern int	poll __ARGS((struct pollfd *, long, int));
+struct pollfd;			/* for poll() */
+extern int	poll(struct pollfd *, long, int);
 #endif
 
 #ifdef HAVE_MEMSET
-extern void	*memset __ARGS((void *, int, size_t));
+extern void	*memset(void *, int, size_t);
 #endif
 #ifdef HAVE_BCMP
-extern int	bcmp __ARGS((void *, void *, size_t));
+extern int	bcmp(void *, void *, size_t);
 #endif
 #ifdef HAVE_MEMCMP
-extern int	memcmp __ARGS((const void *, const void *, size_t));
+extern int	memcmp(const void *, const void *, size_t);
 #endif
 #ifdef HAVE_STRPBRK
-extern char	*strpbrk __ARGS((const char *, const char *));
+extern char	*strpbrk(const char *, const char *);
 #endif
 #ifdef USEBCOPY
-extern void	bcopy __ARGS((char *, char *, int));
+extern void	bcopy(char *, char *, int);
 #else
 # ifdef USEMEMCPY
-extern void	memcpy __ARGS((char *, char *, int));
+extern void	memcpy(char *, char *, int);
 # else
 #  ifdef USEMEMMOVE
-extern void	memmove __ARGS((char *, char *, int));
+extern void	memmove(char *, char *, int);
 #  endif
 # endif
 #endif
 /* used inside of FD_ZERO macro: */
-extern void	bzero __ARGS((void *, size_t));
+extern void	bzero(void *, size_t);
 #ifdef HAVE_SETSID
-extern pid_t	setsid __ARGS((void));
+extern pid_t	setsid(void);
 #endif
 #ifdef HAVE_SETPGID
-extern int	setpgid __ARGS((pid_t, pid_t));
+extern int	setpgid(pid_t, pid_t);
 #endif
 #ifdef HAVE_STRTOL
-extern int	strtol __ARGS((char *, char **, int));
+extern int	strtol(char *, char **, int);
 #endif
 #ifdef HAVE_STRFTIME
-extern size_t	strftime __ARGS((char *, size_t, char *, struct tm *));
+extern size_t	strftime(char *, size_t, char *, struct tm *);
 #endif
 #ifdef HAVE_STRCASECMP
-extern int	strcasecmp __ARGS((char *, char *));
+extern int	strcasecmp(char *, char *);
 #endif
 #ifdef HAVE_STRNCASECMP
-extern int	strncasecmp __ARGS((char *, char *, size_t));
+extern int	strncasecmp(char *, char *, size_t);
 #endif
 #ifndef strdup
-extern char	*strdup __ARGS((const char *));
+extern char	*strdup(const char *);
 #endif
-extern int	atoi __ARGS((char *));
-extern int	atol __ARGS((char *));
+extern int	atoi(char *);
+extern int	atol(char *);
 
 #ifndef USE_SYSTEM
-extern int	fork __ARGS((void));
+extern int	fork(void);
 # ifndef __TANDEM
-extern int	execvp __ARGS((const char *, const char **));
+extern int	execvp(const char *, const char **);
 # endif
-extern int	wait __ARGS((int *)); /* will this break things ...? */
-extern int	waitpid __ARGS((pid_t, int *, int));
+extern int	wait(int *); /* will this break things ...? */
+extern int	waitpid(pid_t, int *, int);
 #endif
 
-extern int	toupper __ARGS((int));
-extern int	tolower __ARGS((int));
+extern int	toupper(int);
+extern int	tolower(int);
 
-extern RETSIGTYPE (*signal __ARGS((int, RETSIGTYPE (*func) SIGPROTOARG))) __ARGS(SIGPROTOARG);
+extern RETSIGTYPE (*signal(int, RETSIGTYPE (*func) SIGPROTOARG)) SIGPROTOARG;
 #ifdef HAVE_SIGSET
-extern RETSIGTYPE (*sigset __ARGS((int, RETSIGTYPE (*func) SIGPROTOARG))) __ARGS(SIGPROTOARG);
+extern RETSIGTYPE (*sigset(int, RETSIGTYPE (*func) SIGPROTOARG)) SIGPROTOARG;
 #endif
 
 #if defined(HAVE_SETJMP_H)
 # ifdef HAVE_SIGSETJMP
-extern int	sigsetjmp __ARGS((sigjmp_buf, int));
-extern void	siglongjmp __ARGS((sigjmp_buf, int));
+extern int	sigsetjmp(sigjmp_buf, int);
+extern void	siglongjmp(sigjmp_buf, int);
 # else
-extern int	setjmp __ARGS((jmp_buf));
-extern void	longjmp __ARGS((jmp_buf, int));
+extern int	setjmp(jmp_buf);
+extern void	longjmp(jmp_buf, int);
 # endif
 #endif
 
-extern int	kill __ARGS((int, int));
+extern int	kill(int, int);
 
 #ifndef __TANDEM
-extern int	access __ARGS((char *, int));
+extern int	access(char *, int);
 #endif
-extern int	fsync __ARGS((int));
-extern int	fchown __ARGS((int, int, int));
+extern int	fsync(int);
+extern int	fchown(int, int, int);
 #if defined(HAVE_GETCWD) && !defined(sun) && !defined(__TANDEM)
-extern char	*getcwd __ARGS((char *, int));
+extern char	*getcwd(char *, int);
 #else
-extern char	*getwd __ARGS((char *));
+extern char	*getwd(char *);
 #endif
 #ifndef __alpha	/* suggested by Campbell */
-extern int	ioctl __ARGS((int, int, ...));
+extern int	ioctl(int, int, ...);
 #endif
-extern int	chmod __ARGS((const char *, mode_t));
+extern int	chmod(const char *, mode_t);
diff --git a/src/osdef2.h.in b/src/osdef2.h.in
index f2f9776..330a5a4 100644
--- a/src/osdef2.h.in
+++ b/src/osdef2.h.in
@@ -2,95 +2,95 @@
  * osdef2.h.in - See osdef1.h.in for a description.
  */
 
-extern int	remove __ARGS((const char *));
-extern int	rename __ARGS((const char *, const char *));
-extern int	free __ARGS((char *));
-extern char	*malloc __ARGS((unsigned int));
-extern char	*realloc __ARGS((char *, int));
-extern char	*getenv __ARGS((char *));
-extern int	setenv __ARGS((char *, char *, int));
-extern int	putenv __ARGS((const char *));
+extern int	remove(const char *);
+extern int	rename(const char *, const char *);
+extern int	free(char *);
+extern char	*malloc(unsigned int);
+extern char	*realloc(char *, int);
+extern char	*getenv(char *);
+extern int	setenv(char *, char *, int);
+extern int	putenv(const char *);
 
 #ifndef __TANDEM
-extern int	gethostname __ARGS((char *, int));
+extern int	gethostname(char *, int);
 #endif
-extern void	perror __ARGS((char *));
+extern void	perror(char *);
 
 #ifndef __TANDEM
-extern int	sleep __ARGS((int));
+extern int	sleep(int);
 #endif
-extern int	usleep __ARGS((unsigned int));
-extern unsigned int	alarm __ARGS((unsigned int));
+extern int	usleep(unsigned int);
+extern unsigned int	alarm(unsigned int);
 #ifndef __TANDEM
-extern int	chdir __ARGS((char *));
+extern int	chdir(char *);
 #endif
-extern int	fchdir __ARGS((int));
+extern int	fchdir(int);
 #ifndef stat	/* could be redefined to stat64() */
-extern int	stat __ARGS((const char *, struct stat *));
+extern int	stat(const char *, struct stat *);
 #endif
 #ifndef lstat	/* could be redefined to lstat64() */
-extern int	lstat __ARGS((const char *, struct stat *));
+extern int	lstat(const char *, struct stat *);
 #endif
-extern int	fstat __ARGS((int, struct stat *));
-extern int	open __ARGS((const char *, int, ...));
-extern int	close __ARGS((int));
+extern int	fstat(int, struct stat *);
+extern int	open(const char *, int, ...);
+extern int	close(int);
 #ifndef __TANDEM
-extern int	read __ARGS((int, char *, size_t));
-extern int	write __ARGS((int, char *, size_t));
+extern int	read(int, char *, size_t);
+extern int	write(int, char *, size_t);
 #endif
-extern int	pipe __ARGS((int *));
-extern off_t	lseek __ARGS((int, off_t, int));
-extern void	sync __ARGS((void));
-extern uid_t	getuid __ARGS((void));
-extern gid_t	getgid __ARGS((void));
-extern void	qsort __ARGS((void *, size_t, size_t, int (*)(const void *, const void *)));
+extern int	pipe(int *);
+extern off_t	lseek(int, off_t, int);
+extern void	sync(void);
+extern uid_t	getuid(void);
+extern gid_t	getgid(void);
+extern void	qsort(void *, size_t, size_t, int (*)(const void *, const void *));
 
-extern int	isatty __ARGS((int));
-extern int	getpid __ARGS((void));
-extern int	dup __ARGS((int));
-extern int	unlink __ARGS((const char *));
-extern int	link __ARGS((const char *, const char *));
-extern int	mkdir __ARGS((const char *, mode_t));
-extern int	rmdir __ARGS((const char *));
+extern int	isatty(int);
+extern int	getpid(void);
+extern int	dup(int);
+extern int	unlink(const char *);
+extern int	link(const char *, const char *);
+extern int	mkdir(const char *, mode_t);
+extern int	rmdir(const char *);
 
-extern int	tgetent __ARGS((char *, char *));
-extern int	tgetnum __ARGS((char *));
-extern int	tgetflag __ARGS((char *));
-extern char	*tgoto __ARGS((char *, int, int));
-extern int	tputs __ARGS((char *, int, int (*)(int)));
+extern int	tgetent(char *, char *);
+extern int	tgetnum(char *);
+extern int	tgetflag(char *);
+extern char	*tgoto(char *, int, int);
+extern int	tputs(char *, int, int (*)(int));
 
 #ifdef HAVE_TERMIOS_H
-struct termios;		/* for tcgetattr __ARGS */
-extern int	tcgetattr __ARGS((int, struct termios *));
-extern int	tcsetattr __ARGS((int, int, const struct termios *));
+struct termios;		/* for tcgetattr() */
+extern int	tcgetattr(int, struct termios *);
+extern int	tcsetattr(int, int, const struct termios *);
 #endif
 
 #ifdef HAVE_SYS_STATFS_H
-struct statfs;		/* for fstatfs __ARGS */
-extern int	fstatfs __ARGS((int, struct statfs *, int, int));
+struct statfs;		/* for fstatfs() */
+extern int	fstatfs(int, struct statfs *, int, int);
 #endif
 
 #ifdef HAVE_GETTIMEOFDAY
-struct timeval;		/* for gettimeofday __ARGS */
-struct timezone;	/* for gettimeofday __ARGS */
-extern int	gettimeofday __ARGS((struct timeval *tp, struct timezone *tzp));
-extern time_t	time __ARGS((time_t *));
+struct timeval;		/* for gettimeofday() */
+struct timezone;	/* for gettimeofday() */
+extern int	gettimeofday(struct timeval *tp, struct timezone *tzp);
+extern time_t	time(time_t *);
 #endif
 
 #ifdef HAVE_GETPWNAM
-struct passwd;		/* for getpwnam __ARGS */
-extern struct passwd *getpwnam __ARGS((const char *));
+struct passwd;		/* for getpwnam() */
+extern struct passwd *getpwnam(const char *);
 #endif
 
 #ifdef USE_TMPNAM
-extern char	*tmpnam __ARGS((char *));
+extern char	*tmpnam(char *);
 #else
-extern char	*mktemp __ARGS((char *));
+extern char	*mktemp(char *);
 #endif
 
 #ifdef ISC
-extern int	_Xmblen __ARGS((char const *, size_t));
+extern int	_Xmblen(char const *, size_t);
 #else
 		/* This is different from the header but matches mblen() */
-extern int	_Xmblen __ARGS((char *, size_t));
+extern int	_Xmblen(char *, size_t);
 #endif
diff --git a/src/version.c b/src/version.c
index 2f4ab06..e9d5c19 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1159,
+/**/
     1158,
 /**/
     1157,
