parallax 1.0
command-line based task/todo manager
Loading...
Searching...
No Matches
argparse.c
1#include "argparse.h"
2#include <stdlib.h>
3#include <stdio.h>
4#include <string.h>
5
6#define FLAG_LENGTH 2
7#define MAX_CONTENT_LENGTH 2048
8
9FLAG_TYPE get_flag(char* flag_string)
10{
11 const size_t ARG_FLAG_LENGTH = strnlen(flag_string, FLAG_LENGTH);
12 if (flag_string == NULL || ARG_FLAG_LENGTH != 2)
13 {
14 printf("Flag error: empty or malformed flag (len: %zu)\n", ARG_FLAG_LENGTH);
15 return FLAG_INVALID;
16 }
17
18 if ( strncmp( flag_string, "-c", ARG_FLAG_LENGTH ) == 0 )
19 {
20 return FLAG_CREATE;
21 }
22 else if ( strncmp ( flag_string, "-r", ARG_FLAG_LENGTH) == 0 )
23 {
24 return FLAG_REMOVE;
25 }
26 else if ( strncmp ( flag_string, "-m", ARG_FLAG_LENGTH) == 0 )
27 {
28 return FLAG_MODIFY;
29 }
30 else if ( strncmp ( flag_string, "-l", ARG_FLAG_LENGTH) == 0 )
31 {
32 return FLAG_LIST;
33 }
34
35 return FLAG_INVALID;
36}
37
38const char* get_content_arg(char* str_arg) // just a safety wrapper around strncpy
39{
40 size_t arg_len = strnlen(str_arg, MAX_CONTENT_LENGTH);
41 char* ret = (char*)malloc(arg_len+1); // +1 for null term
42 strncpy(ret, str_arg, arg_len+1);
43 return ret;
44}
Contains functions for extracting content from the argument vector.
FLAG_TYPE
Possible flag types.
Definition argparse.h:15
@ FLAG_REMOVE
Definition argparse.h:18
@ FLAG_LIST
Definition argparse.h:19
@ FLAG_CREATE
Definition argparse.h:16
@ FLAG_MODIFY
Definition argparse.h:17
@ FLAG_INVALID
Definition argparse.h:20