summaryrefslogtreecommitdiffstats
path: root/5/11.c
diff options
context:
space:
mode:
Diffstat (limited to '5/11.c')
-rw-r--r--5/11.c48
1 files changed, 25 insertions, 23 deletions
diff --git a/5/11.c b/5/11.c
index 51b0faf..d4b8f76 100644
--- a/5/11.c
+++ b/5/11.c
@@ -2,28 +2,36 @@
#include <stdio.h>
#include <stdlib.h>
-#define MAXTABLIST 10
-#define MAXDIGLEN 10
+#define MAXTAB 10
#define TABSIZE 8
-#define MAXTEXTLEN 500
+#define MAXTEXT 500
+#define MAXTABLIST 10
+
+#define GETTEXT(s) \
+ ({ \
+ int i, c; \
+ for (i = 0; i < MAXTEXT && (c = getchar()) != EOF; i++) \
+ s[i] = c; \
+ s[i] = 0; \
+ i; \
+ })
-int getinput(char *s, int max);
int gettablist(char *s, int *t);
void entab(char *s, char *t, int *tablist, int tablistc);
void detab(char *s, char *t, int *tablist, int tablistc);
int main(int argc, char *argv[]) {
int colv[MAXTABLIST], colc;
- char op, s[MAXTEXTLEN], t[MAXTEXTLEN];
+ char op, s[MAXTEXT], t[MAXTEXT];
if ((argc != 2 && argc != 3) || ((op = argv[1][1]) != 'e' && op != 'd')) {
- printf("usage: -e 5,3...\n");
+ printf("Usage: -e 5,3...\n");
return 1;
}
if (argc == 3) {
if (!(colc = gettablist(argv[2], colv))) {
- printf("error: invalid tablist\n");
+ printf("Error: invalid tablist\n");
return 1;
}
} else {
@@ -31,8 +39,11 @@ int main(int argc, char *argv[]) {
colc = 1;
}
- printf("enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab");
- getinput(s, MAXTEXTLEN);
+ printf("Enter text to %s and press CTRL+D\n", op == 'e' ? "entab" : "detab");
+ if (!GETTEXT(s)) {
+ printf("Did not receive text!\n");
+ return 0;
+ }
switch (op) {
case 'e':
@@ -42,7 +53,7 @@ int main(int argc, char *argv[]) {
// detab(s, t, colv, colc);
break;
default:
- printf("error: invalid operation.\n");
+ printf("Error: invalid operation.\n");
return 1;
}
@@ -52,11 +63,11 @@ int main(int argc, char *argv[]) {
int gettablist(char *s, int *t) {
int i, j, k;
- char col[MAXDIGLEN];
+ char col[MAXTAB];
for (i = 0, j = 0, k = 0; j < MAXTABLIST; i++) {
- if (k >= MAXDIGLEN) {
- printf("error: tablist entry too large\n");
+ if (k >= MAXTAB) {
+ printf("Error: tablist entry too large\n");
return 0;
}
@@ -70,19 +81,10 @@ int gettablist(char *s, int *t) {
} else if (isdigit(s[i]))
col[k++] = s[i];
else {
- printf("error: invalid char %c in tablist\n", s[i]);
+ printf("Error: invalid char %c in tablist\n", s[i]);
return 0;
}
}
return j;
}
-
-int getinput(char *s, int max) {
- int i, c;
-
- for (i = 0; i < max && (c = getchar()) != EOF; i++)
- s[i] = c;
- s[i] = 0;
- return i;
-} \ No newline at end of file