fixed
This commit is contained in:
parent
0714421987
commit
35b793f0b5
|
@ -12,9 +12,10 @@ int mu_get_string(const char *prog_name, char *buf, const size_t len) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (rbytes > 1)
|
||||
if (rbytes > 0)
|
||||
buf[rbytes - 1] = '\0';
|
||||
|
||||
buf[rbytes] = '\0';
|
||||
return rbytes;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
int pw_check(const char *prog_name, const struct passwd *pw, const char *pass) {
|
||||
if (pw->pw_passwd[0] == '\0' || pass[0] == '\0') {
|
||||
if (pass[0] == '\0')
|
||||
return 0;
|
||||
|
||||
fprintf(stderr, "%s: Incorrect password\n", prog_name);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
project_dir=$(pwd)
|
||||
echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC
|
|
@ -1,20 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include "recurse.h"
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int opt;
|
||||
while ((opt = getopt(argc, argv, "R")) != -1) {
|
||||
switch (opt) {
|
||||
default:
|
||||
printf("grep [pattern1 pattern2...]\n\t[-R Recursive]\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
int t_flag;
|
||||
int n_flag;
|
||||
int s_flag;
|
||||
int r_flag;
|
||||
|
||||
int args;
|
||||
|
@ -22,13 +23,16 @@ void clear_cmd(void) {
|
|||
args = 0;
|
||||
}
|
||||
|
||||
int add_arg(const char *str) {
|
||||
int add_arg(const char *str, int chars) {
|
||||
if (args >= NARGS)
|
||||
return 1;
|
||||
|
||||
else if (n_flag > 0 && args > n_flag)
|
||||
return 1;
|
||||
|
||||
else if (s_flag > 0 && chars > s_flag)
|
||||
return 1;
|
||||
|
||||
cmd[args] = strdup(str);
|
||||
args++;
|
||||
|
||||
|
@ -42,6 +46,8 @@ int stdin_read(void) {
|
|||
char *p = arg;
|
||||
int ret = 0;
|
||||
|
||||
int chars = 0;
|
||||
|
||||
int args_passed = 0;
|
||||
while (1) {
|
||||
int c = getchar();
|
||||
|
@ -54,7 +60,7 @@ int stdin_read(void) {
|
|||
*p = '\0';
|
||||
p = arg;
|
||||
|
||||
if (add_arg(arg))
|
||||
if (add_arg(arg, chars))
|
||||
break;
|
||||
|
||||
args_passed++;
|
||||
|
@ -69,6 +75,7 @@ int stdin_read(void) {
|
|||
break;
|
||||
|
||||
p++;
|
||||
chars++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,7 +108,7 @@ int run(void) {
|
|||
int main(int argc, char **argv) {
|
||||
|
||||
int opt;
|
||||
while ((opt = getopt(argc, argv, "tn:r")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "tn:s:r")) != -1) {
|
||||
switch (opt) {
|
||||
case 't':
|
||||
t_flag = 1;
|
||||
|
@ -116,6 +123,9 @@ int main(int argc, char **argv) {
|
|||
|
||||
break;
|
||||
|
||||
case 's':
|
||||
s_flag = atoi(optarg);
|
||||
|
||||
case 'r':
|
||||
r_flag = 1;
|
||||
break;
|
||||
|
@ -134,12 +144,12 @@ int main(int argc, char **argv) {
|
|||
/* Arg */
|
||||
if (argc) {
|
||||
for (int i = 0; i < argc; i++)
|
||||
if (add_arg(argv[i]))
|
||||
if (add_arg(argv[i], 0))
|
||||
break;
|
||||
}
|
||||
|
||||
else
|
||||
add_arg(ECHO_CMD);
|
||||
add_arg(ECHO_CMD, 0);
|
||||
|
||||
/* Stdin */
|
||||
int stdin_stat = stdin_read();
|
||||
|
|
Loading…
Reference in New Issue