This commit is contained in:
Your Name 2024-01-15 22:26:18 +03:00
parent 0714421987
commit 35b793f0b5
5 changed files with 20 additions and 29 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -1,3 +0,0 @@
#!/bin/sh
project_dir=$(pwd)
echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC

View File

@ -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;
}

View File

@ -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();