diff options
Diffstat (limited to '42sh/src/builtins/break.c')
| -rw-r--r-- | 42sh/src/builtins/break.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/42sh/src/builtins/break.c b/42sh/src/builtins/break.c new file mode 100644 index 0000000..6718de1 --- /dev/null +++ b/42sh/src/builtins/break.c @@ -0,0 +1,27 @@ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "builtins.h" +#include "utils/env.h" + +int my_break(struct string **args) +{ + char *n = "1"; + if (args[0] != NULL) + { + char *end; + long num = strtol(args[0]->data, &end, 10); + if (*end != '\0' || num <= 0) + { + fprintf(stderr, "break: %s: numeric argument required\n", + args[1]->data); + return 2; + } + n = args[0]->data; + } + env_set("BREAK", n); + fflush(stdout); + return 0; +} |
