aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--initscripts.spec2
-rw-r--r--rc.d/init.d/functions65
-rw-r--r--src/Makefile9
-rw-r--r--src/fstab-decode.846
-rw-r--r--src/fstab-decode.c86
-rw-r--r--src/getkey.180
-rw-r--r--src/getkey.c141
7 files changed, 1 insertions, 428 deletions
diff --git a/initscripts.spec b/initscripts.spec
index a9f9d8b6..39ccc868 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -182,9 +182,7 @@ rm -rf $RPM_BUILD_ROOT
/bin/usleep
%attr(4755,root,root) /usr/sbin/usernetctl
/sbin/consoletype
-/sbin/fstab-decode
/sbin/genhostid
-/sbin/getkey
/sbin/sushell
%attr(2755,root,root) /sbin/netreport
/lib/udev/rules.d/*
diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions
index e9892b42..24447249 100644
--- a/rc.d/init.d/functions
+++ b/rc.d/init.d/functions
@@ -93,11 +93,6 @@ if [ -z "${BOOTUP:-}" ]; then
fi
fi
-# Interpret escape sequences in an fstab entry
-fstab_decode_str() {
- fstab-decode echo "$1"
-}
-
# Check if any of $pid (could be plural) are running
checkpid() {
local i
@@ -124,66 +119,6 @@ __fgrep() {
return 1
}
-# __umount_loop awk_program fstab_file first_msg retry_msg retry_umount_args
-# awk_program should process fstab_file and return a list of fstab-encoded
-# paths; it doesn't have to handle comments in fstab_file.
-__umount_loop() {
- local remaining sig=-15
- local retry=3 count
-
- remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
- while [ -n "$remaining" -a "$retry" -gt 0 ]; do
- if [ "$retry" -eq 3 ]; then
- action "$3" fstab-decode umount $remaining
- else
- action "$4" fstab-decode umount $5 $remaining
- fi
- count=4
- remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
- while [ "$count" -gt 0 ]; do
- [ -z "$remaining" ] && break
- count=$(($count-1))
- usleep 500000
- remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
- done
- [ -z "$remaining" ] && break
- fstab-decode /sbin/fuser -k -m $sig $remaining >/dev/null
- sleep 3
- retry=$(($retry -1))
- sig=-9
- done
-}
-
-# Similar to __umount loop above, specialized for loopback devices
-__umount_loopback_loop() {
- local remaining devremaining sig=-15
- local retry=3
-
- remaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts)
- devremaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts)
- while [ -n "$remaining" -a "$retry" -gt 0 ]; do
- if [ "$retry" -eq 3 ]; then
- action $"Unmounting loopback filesystems: " \
- fstab-decode umount $remaining
- else
- action $"Unmounting loopback filesystems (retry):" \
- fstab-decode umount $remaining
- fi
- for dev in $devremaining ; do
- losetup $dev > /dev/null 2>&1 && \
- action $"Detaching loopback device $dev: " \
- losetup -d $dev
- done
- remaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts)
- devremaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts)
- [ -z "$remaining" ] && break
- fstab-decode /sbin/fuser -k -m $sig $remaining >/dev/null
- sleep 3
- retry=$(($retry -1))
- sig=-9
- done
-}
-
# __proc_pids {program} [pidfile]
# Set $pid to pids from /var/run* for {program}. $pid should be declared
# local in the caller.
diff --git a/src/Makefile b/src/Makefile
index 09f17771..d93e7202 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,7 +1,7 @@
CFLAGS+=$(RPM_OPT_FLAGS) -Wall -D_GNU_SOURCE
PROGS=usernetctl netreport usleep ipcalc \
- fstab-decode getkey ppp-watch consoletype genhostid rename_device
+ ppp-watch consoletype genhostid rename_device
PPPWATCH_OBJS=ppp-watch.o shvar.o
CONSOLE_INIT_OBJS=console_init.o shvar.o
USLEEP_OBJS=usleep.o
@@ -22,18 +22,14 @@ install:
install -m 4755 usernetctl $(ROOT)/usr/sbin/usernetctl
install -m 2755 netreport $(ROOT)/sbin/netreport
install -m 755 ipcalc $(ROOT)/bin/ipcalc
- install -m 755 fstab-decode $(ROOT)/sbin/fstab-decode
install -m 755 genhostid $(ROOT)/sbin/genhostid
- install -m 755 getkey $(ROOT)/sbin/getkey
install -m 755 ppp-watch $(ROOT)/sbin/ppp-watch
install -m 755 consoletype $(ROOT)/sbin/consoletype
install -m 755 sushell $(ROOT)/sbin/sushell
install -m 755 rename_device $(ROOT)/lib/udev/rename_device
install -m 644 genhostid.1 $(ROOT)$(mandir)/man1
- install -m 644 getkey.1 $(ROOT)$(mandir)/man1
install -m 644 netreport.1 $(ROOT)$(mandir)/man1
install -m 644 usleep.1 $(ROOT)$(mandir)/man1
- install -m 644 fstab-decode.8 $(ROOT)$(mandir)/man8
install -m 644 usernetctl.8 $(ROOT)$(mandir)/man8
install -m 644 ppp-watch.8 $(ROOT)$(mandir)/man8
install -m 644 ipcalc.1 $(ROOT)$(mandir)/man1
@@ -43,9 +39,6 @@ install:
install -m 644 sushell.8 $(ROOT)$(mandir)/man8
ln -s ifup.8 $(ROOT)$(mandir)/man8/ifdown.8
-getkey: getkey.o
- $(CC) $(LDFLAGS) -o $@ $< -lpopt
-
ipcalc: ipcalc.o
$(CC) -D_GNU_SOURCE $(LDFLAGS) -o $@ $< -lpopt
diff --git a/src/fstab-decode.8 b/src/fstab-decode.8
deleted file mode 100644
index d7ce9e70..00000000
--- a/src/fstab-decode.8
+++ /dev/null
@@ -1,46 +0,0 @@
-.\" A man page for fstab-decode(8).
-.\"
-.\" Copyright (C) 2006 Red Hat, Inc. All rights reserved.
-.\"
-.\" This copyrighted material is made available to anyone wishing to use,
-.\" modify, copy, or redistribute it subject to the terms and conditions of the
-.\" GNU General Public License v.2.
-.\"
-.\" This program 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 General Public License for
-.\" more details.
-.\"
-.\" You should have received a copy of the GNU General Public License along
-.\" with this program; if not, write to the Free Software Foundation, Inc.,
-.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-.\"
-.\" Author: Miloslav Trmac <mitr@redhat.com>
-.TH fstab-decode 8 "May 2006"
-
-.SH NAME
-fstab-decode \- run a command with fstab-encoded arguments
-
-.SH SYNOPSIS
-\fB fstab-decode\fR \fICOMMAND\fR [\fIARGUMENT\fR]...
-
-.SH DESCRIPTION
-.B fstab-decode
-decodes escapes in the specified \FIARGUMENT\fRs
-and uses them to run \fICOMMAND\fR.
-The argument escaping uses the same rules as path escaping in
-\fB/etc/fstab\fR,
-.B /etc/mtab
-and \fB/proc/mtab\fR.
-
-.SH EXIT STATUS
-.B fstab-decode
-exits with status 127 if
-.I COMMAND
-can't be run.
-Otherwise it exits with the status returned by \fICOMMAND\fR.
-
-.SH EXAMPLES
-
-.B
-fstab-decode umount $(awk '$3 == "vfat" { print $2 }' /etc/fstab)
diff --git a/src/fstab-decode.c b/src/fstab-decode.c
deleted file mode 100644
index 4a162dfe..00000000
--- a/src/fstab-decode.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* fstab-decode(8).
-
-Copyright (c) 2006 Red Hat, Inc. All rights reserved.
-
-This copyrighted material is made available to anyone wishing to use, modify,
-copy, or redistribute it subject to the terms and conditions of the GNU General
-Public License v.2.
-
-This program 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
-Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-Author: Miloslav Trmac <mitr@redhat.com> */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/* Decode the fstab-encoded string in place. */
-static void
-decode(char *s)
-{
- const char *src;
- char *dest;
-
- src = s;
- dest = s;
- while (*src != '\0') {
- if (*src != '\\')
- *dest = *src++;
- else {
- static const struct repl {
- char orig[4];
- size_t len;
- char new;
- } repls[] = {
-#define R(X, Y) { X, sizeof(X) - 1, Y }
- R("\\", '\\'),
- R("011", '\t'),
- R("012", '\n'),
- R("040", ' '),
- R("134", '\\')
-#undef R
- };
-
- size_t i;
-
- for (i = 0; i < sizeof (repls) / sizeof (repls[0]);
- i++) {
- if (memcmp(src + 1, repls[i].orig,
- repls[i].len) == 0) {
- *dest = repls[i].new;
- src += 1 + repls[i].len;
- goto found;
- }
- }
- *dest = *src++;
- found:
- ;
- }
- dest++;
- }
- *dest = '\0';
-}
-
-int
-main (int argc, char *argv[])
-{
- size_t i;
-
- if (argc < 2) {
- fprintf(stderr, "Usage: fstab-decode command [arguments]\n");
- return EXIT_FAILURE;
- }
- for (i = 2; i < (size_t)argc; i++)
- decode(argv[i]);
- execvp(argv[1], argv + 1);
- fprintf(stderr, "fstab-decode: %s: %s\n", argv[1], strerror(errno));
- return 127;
-}
diff --git a/src/getkey.1 b/src/getkey.1
deleted file mode 100644
index f6c11616..00000000
--- a/src/getkey.1
+++ /dev/null
@@ -1,80 +0,0 @@
-.\" A man page for getkey(1). -*- nroff -*-
-.\"
-.\" Copyright (C) 2006 Red Hat, Inc. All rights reserved.
-.\"
-.\" This copyrighted material is made available to anyone wishing to use,
-.\" modify, copy, or redistribute it subject to the terms and conditions of the
-.\" GNU General Public License v.2.
-.\"
-.\" This program 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 General Public License for
-.\" more details.
-.\"
-.\" You should have received a copy of the GNU General Public License along
-.\" with this program; if not, write to the Free Software Foundation, Inc.,
-.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-.\"
-.\" Author: Miloslav Trmac <mitr@redhat.com>
-.TH getkey 1 "Jan 2006"
-
-.SH NAME
-getkey \- wait until a key is pressed
-
-.SH SYNOPSIS
-\fBgetkey\fR [\fIOPTION\fR]... [\fIKEYS\fR]
-
-.SH DESCRIPTION
-.B getkey
-waits until one of
-.I KEYS
-is pressed.
-If
-.I KEYS
-are not specified, any key is accepted.
-.I KEYS
-are matched case-insensitive.
-
-.SH EXIT STATUS
-.B getkey
-exits with status 0 if one of the expected keys is pressed.
-If invalid arguments are specified,
-.B getkey
-exits with status 255.
-If
-.B getkey
-is interrupted or the wait times out,
-.B getkey
-exits with other non-zero status.
-
-.SH OPTIONS
-.TP
-\fB\-c\fR, \fB\-\-wait\fR \fISECONDS\fR
-Wait only for
-.I SECONDS
-seconds.
-The default is 0, which means to wait without a time limit.
-
-.TP
-\fB\-i\fR, \fB\-\-ignore\-control\-chars\fR
-Don't treat Ctrl+C and Ctrl+D specially.
-When this option is not specified, these characters interrupt \fBgetkey\fR.
-
-.TP
-\fB\-m\fR, \fB\-\-message\fR \fIMESSAGE\fR
-Display
-.I MESSAGE
-while waiting.
-The message is used as a format string in
-.BR sprintf (3),
-with a single argument, the number of seconds left.
-Typical usage is therefore
-\fB"Press a key within %d seconds to ..."\fR.
-If
-.I MESSAGE
-contains other format string directives, the behavior is undefined and
-.B getkey
-may crash.
-
-If there is no time limit specified,
-the number of seconds left is reported as 0.
diff --git a/src/getkey.c b/src/getkey.c
deleted file mode 100644
index 95e660ba..00000000
--- a/src/getkey.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 1999-2003, 2006 Red Hat, Inc. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2,
- * as published by the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * getkey
- *
- * A very simple keygrabber.
- *
- */
-#include <ctype.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <termios.h>
-#include <unistd.h>
-#include <sys/poll.h>
-#include "popt.h"
-
-static struct termios orig_tp;
-
-static void reset_term(int x) {
- tcsetattr(0,TCSANOW,&orig_tp);
- _exit(x);
-}
-
-int main(int argc, char **argv) {
- static const char default_list[] = "";
-
- const char *list;
- char *waitmessage = NULL;
- char *waitprint, *waitsprint;
- int waitseconds=0;
- int alarmlen=0;
- int ignore_control=0;
- struct termios tp;
- int r;
- struct pollfd ufds; /* only one, no need for an array... */
- poptContext context;
- struct poptOption options[] = {
- { "wait", 'c', POPT_ARG_INT, &waitseconds, 0, "Number of seconds to wait for keypress", NULL },
- { "message", 'm', POPT_ARG_STRING, &waitmessage, 0, "Message to print out while waiting for string\nNOTE: The message may have a \"%d\" in it, to hold the number of seconds left to wait.", NULL },
- { "ignore-control-chars", 'i', POPT_ARG_NONE, &ignore_control, 0, "Ignore Control-C and Control-D", NULL },
- POPT_AUTOHELP
- POPT_TABLEEND
- };
-
- context = poptGetContext("getkey", argc, (const char **)argv, options,
- POPT_CONTEXT_POSIXMEHARDER);
- poptSetOtherOptionHelp(context, "[keys]");
-
- r = poptGetNextOpt(context);
- if (r < -1) {
- fprintf(stderr, "%s: %s\n",
- poptBadOption(context, POPT_BADOPTION_NOALIAS),
- poptStrerror(r));
-
- return -1;
- }
- list = poptGetArg(context);
- if (list != NULL) {
- char *p;
-
- p = strdup(list);
- list = p;
- while (*p != 0) {
- *p = toupper(*p);
- p++;
- }
- } else
- list = default_list;
- if (waitseconds) {
- if (waitseconds < 0) {
- fprintf(stderr, "--wait: Invalid time %d seconds\n",
- waitseconds);
- return -1;
- }
- alarmlen = waitseconds;
- }
-
- tcgetattr(0,&tp);
- orig_tp = tp;
- signal(SIGTERM,reset_term);
- if (alarmlen != 0) {
- signal(SIGALRM,reset_term);
- alarm(alarmlen);
- }
-
- tp.c_iflag=0;
- tp.c_oflag &= ~OPOST;
- tp.c_lflag &= ~(ISIG | ICANON);
- tcsetattr(0,TCSANOW,&tp);
-
- ufds.events = POLLIN;
- ufds.fd = 0;
-
- if (waitmessage) {
- waitprint = alloca (strlen(waitmessage)+15); /* long enough */
- waitprint[0] = '\r';
- waitsprint = waitprint + 1;
- }
-
- while (1) {
- if (waitmessage) {
- sprintf (waitsprint, waitmessage, waitseconds);
- write (1, waitprint, strlen(waitprint));
- }
- r = poll(&ufds, 1, alarmlen ? 1000 : -1);
- if (r == 0) {
- /* we have waited a whole second with no keystroke... */
- waitseconds--;
- }
- if (r > 0) {
- char ch;
-
- read(0, &ch, sizeof(ch));
- ch = toupper(ch);
- /* Die if we get a control-c or control-d */
- if (ignore_control == 0 && (ch == 3 || ch == 4))
- reset_term(1);
- /* Don't let a null character be interpreted as a match
- by strchr */
- if (ch != 0
- && (strcmp(list, "") == 0 || strchr(list, ch) != NULL))
- reset_term(0);
- }
- }
-}