about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--inet/ruserpass.c20
-rw-r--r--misc/getttyent.c4
-rw-r--r--sysdeps/unix/sysv/linux/arm/syscall.S47
-rw-r--r--sysdeps/unix/sysv/linux/arm/syscalls.list1
5 files changed, 28 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index 21297f2958..a6f2797687 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+1998-05-23  Philip Blundell  <Philip.Blundell@pobox.com>
+
+	* sysdeps/unix/sysv/linux/arm/syscalls.list: Add `syscall'.
+	* sysdeps/unix/sysv/linux/arm/syscall.S: Deleted.
+
+1998-07-05  Ulrich Drepper  <drepper@cygnus.com>
+
+	* misc/getttyent.c (getttyent): Explicitly lock the FILE and use
+	_unlocked functions.
+
+	* inet/ruserpass.c (ruserpass): Use _unlocked functions since this
+	is a private FILE.
+
 1998-07-04 17:11 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
 
 	* csu/Makefile: Build crt files in lib pass.
diff --git a/inet/ruserpass.c b/inet/ruserpass.c
index 421bfc5e2d..9c0905132e 100644
--- a/inet/ruserpass.c
+++ b/inet/ruserpass.c
@@ -187,7 +187,8 @@ next:
 				(void) fclose(cfile);
 				return (0);
 			}
-			while ((c=getc(cfile)) != EOF && c == ' ' || c == '\t');
+			while ((c=getc_unlocked(cfile)) != EOF && c == ' '
+			       || c == '\t');
 			if (c == EOF || c == '\n') {
 				printf("Missing macdef name argument.\n");
 				goto bad;
@@ -198,7 +199,7 @@ next:
 			}
 			tmp = macros[macnum].mac_name;
 			*tmp++ = c;
-			for (i=0; i < 8 && (c=getc(cfile)) != EOF &&
+			for (i=0; i < 8 && (c=getc_unlocked(cfile)) != EOF &&
 			    !isspace(c); ++i) {
 				*tmp++ = c;
 			}
@@ -208,7 +209,8 @@ next:
 			}
 			*tmp = '\0';
 			if (c != '\n') {
-				while ((c=getc(cfile)) != EOF && c != '\n');
+				while ((c=getc_unlocked(cfile)) != EOF
+				       && c != '\n');
 			}
 			if (c == EOF) {
 				printf("Macro definition missing null line terminator.\n");
@@ -222,7 +224,7 @@ next:
 			}
 			tmp = macros[macnum].mac_start;
 			while (tmp != macbuf + 4096) {
-				if ((c=getc(cfile)) == EOF) {
+				if ((c=getc_unlocked(cfile)) == EOF) {
 				printf("Macro definition missing null line terminator.\n");
 					goto bad;
 				}
@@ -265,24 +267,24 @@ token()
 
 	if (feof(cfile) || ferror(cfile))
 		return (0);
-	while ((c = getc(cfile)) != EOF &&
+	while ((c = getc_unlocked(cfile)) != EOF &&
 	    (c == '\n' || c == '\t' || c == ' ' || c == ','))
 		continue;
 	if (c == EOF)
 		return (0);
 	cp = tokval;
 	if (c == '"') {
-		while ((c = getc(cfile)) != EOF && c != '"') {
+		while ((c = getc_unlocked(cfile)) != EOF && c != '"') {
 			if (c == '\\')
-				c = getc(cfile);
+				c = getc_unlocked(cfile);
 			*cp++ = c;
 		}
 	} else {
 		*cp++ = c;
-		while ((c = getc(cfile)) != EOF
+		while ((c = getc_unlocked(cfile)) != EOF
 		    && c != '\n' && c != '\t' && c != ' ' && c != ',') {
 			if (c == '\\')
-				c = getc(cfile);
+				c = getc_unlocked(cfile);
 			*cp++ = c;
 		}
 	}
diff --git a/misc/getttyent.c b/misc/getttyent.c
index 6743ac5d7d..f474cdcacf 100644
--- a/misc/getttyent.c
+++ b/misc/getttyent.c
@@ -71,12 +71,13 @@ getttyent()
 
 	if (!tf && !setttyent())
 		return (NULL);
+	flockfile (tf);
 	for (;;) {
 		if (!fgets(p = line, sizeof(line), tf))
 			return (NULL);
 		/* skip lines that are too big */
 		if (!index(p, '\n')) {
-			while ((c = getc(tf)) != '\n' && c != EOF)
+			while ((c = getc_unlocked(tf)) != '\n' && c != EOF)
 				;
 			continue;
 		}
@@ -85,6 +86,7 @@ getttyent()
 		if (*p && *p != '#')
 			break;
 	}
+	funlockfile(tf);
 
 	zapchar = 0;
 	tty.ty_name = p;
diff --git a/sysdeps/unix/sysv/linux/arm/syscall.S b/sysdeps/unix/sysv/linux/arm/syscall.S
deleted file mode 100644
index bc2bc7dbaa..0000000000
--- a/sysdeps/unix/sysv/linux/arm/syscall.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include <sysdep.h>
-
-/* Please consult the file sysdeps/unix/sysv/linux/arm/sysdep.h for
-   more information about the value -4095 used below.*/
-
-	.text
-ENTRY (syscall)
-
-	/* Normally encoding the system call number in the instruction is
-	   good.  But we pay the price here.  */
-
-	sub sp, sp, $0xc		@ get 3 words on the stack
-	orr r0, r0, $0xef000000		@ make up a SWI instruction
-	orr r0, r0, $SWI_BASE
-	str r0, [sp]
-	ldr r0, _reti
-	str r0, [sp, $4]
-	adr r0, _ret
-	str r0, [sp, $8]
-	mov r0, r1
-	mov r1, r2
-	mov r2, r3
-	mov pc, sp
-_ret:	add sp, sp, $0xc
-	RETINSTR(mov, pc, r14)
-
-_reti:	.word	0xe51ff004	@ ldr pc, [pc, $4]
-
-PSEUDO_END (syscall)
diff --git a/sysdeps/unix/sysv/linux/arm/syscalls.list b/sysdeps/unix/sysv/linux/arm/syscalls.list
index 392a257194..a3ecdd7d73 100644
--- a/sysdeps/unix/sysv/linux/arm/syscalls.list
+++ b/sysdeps/unix/sysv/linux/arm/syscalls.list
@@ -4,3 +4,4 @@ s_getgroups	getgroups getgroups	2	__syscall_getgroups
 s_llseek	llseek	_llseek		5	__sys_llseek
 s_setgroups	setgroups setgroups	2	__syscall_setgroups
 vm86		-	vm86		1	__vm86		vm86
+syscall		-	syscall		5	syscall