]>
Commit | Line | Data |
---|---|---|
63cccae4 KZ |
1 | /* |
2 | * line - read one line | |
3 | * | |
4 | * Gunnar Ritter, Freiburg i. Br., Germany, December 2000. | |
5 | * | |
6 | * Public Domain. | |
7 | */ | |
8 | ||
ba0c9030 SK |
9 | /* |
10 | * This command is deprecated. The utility is in maintenance mode, | |
11 | * meaning we keep them in source tree for backward compatibility | |
12 | * only. Do not waste time making this command better, unless the | |
13 | * fix is about security or other very critical issue. | |
14 | * | |
15 | * See Documentation/deprecated.txt for more information. | |
16 | */ | |
17 | ||
c2e1ebbe SK |
18 | #include <getopt.h> |
19 | #include <stdio.h> | |
20 | #include <unistd.h> | |
63cccae4 | 21 | |
c2e1ebbe SK |
22 | #include "c.h" |
23 | #include "closestream.h" | |
24 | #include "nls.h" | |
25 | #include "widechar.h" | |
63cccae4 | 26 | |
c2e1ebbe | 27 | static void __attribute__((__noreturn__)) usage(FILE *out) |
63cccae4 | 28 | { |
c2e1ebbe SK |
29 | fputs(USAGE_HEADER, out); |
30 | fprintf(out, _(" %s [options]\n"), program_invocation_short_name); | |
451dbcfa BS |
31 | |
32 | fputs(USAGE_SEPARATOR, out); | |
33 | fputs(_("Read one line.\n"), out); | |
34 | ||
c2e1ebbe SK |
35 | fputs(USAGE_OPTIONS, out); |
36 | fputs(USAGE_HELP, out); | |
37 | fputs(USAGE_VERSION, out); | |
38 | fprintf(out, USAGE_MAN_TAIL("line(1)")); | |
39 | exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); | |
40 | } | |
41 | ||
42 | int main(int argc, char **argv) | |
43 | { | |
44 | wint_t c; | |
45 | int opt; | |
46 | int status = EXIT_SUCCESS; | |
47 | ||
48 | static const struct option longopts[] = { | |
49 | {"version", no_argument, NULL, 'V'}, | |
50 | {"help", no_argument, NULL, 'h'}, | |
51 | {NULL, 0, NULL, 0} | |
52 | }; | |
53 | ||
54 | setlocale(LC_ALL, ""); | |
55 | bindtextdomain(PACKAGE, LOCALEDIR); | |
56 | textdomain(PACKAGE); | |
57 | atexit(close_stdout); | |
58 | ||
59 | while ((opt = getopt_long(argc, argv, "Vh", longopts, NULL)) != -1) | |
60 | switch (opt) { | |
61 | case 'V': | |
62 | printf(UTIL_LINUX_VERSION); | |
63 | return EXIT_SUCCESS; | |
64 | case 'h': | |
65 | usage(stdout); | |
66 | default: | |
677ec86c | 67 | errtryhelp(EXIT_FAILURE); |
c2e1ebbe | 68 | } |
63cccae4 | 69 | |
e03f29b6 | 70 | setvbuf(stdin, NULL, _IONBF, 0); |
63cccae4 | 71 | for (;;) { |
c2e1ebbe SK |
72 | c = getwchar(); |
73 | if (c == WEOF) { | |
74 | status = EXIT_FAILURE; | |
63cccae4 KZ |
75 | break; |
76 | } | |
77 | if (c == '\n') | |
78 | break; | |
c2e1ebbe | 79 | putwchar(c); |
63cccae4 | 80 | } |
c2e1ebbe | 81 | putwchar(L'\n'); |
63cccae4 | 82 | |
63cccae4 KZ |
83 | return status; |
84 | } |