diff --git a/hw1/src/argo.c b/hw1/src/argo.c index 19ca524..8af68cd 100644 --- a/hw1/src/argo.c +++ b/hw1/src/argo.c @@ -26,10 +26,10 @@ * @return A valid pointer if the operation is completely successful, * NULL if there is any error. */ -ARGO_VALUE *argo_read_value(FILE *f) { +// ARGO_VALUE *argo_read_value(FILE *f) { // TO BE IMPLEMENTED. - abort(); -} + // abort(); +// } /** * @brief Read JSON input from a specified input stream, attempt to @@ -51,7 +51,7 @@ ARGO_VALUE *argo_read_value(FILE *f) { */ int argo_read_string(ARGO_STRING *s, FILE *f) { // TO BE IMPLEMENTED. - abort(); + abort(); } /** @@ -94,10 +94,10 @@ int argo_read_number(ARGO_NUMBER *n, FILE *f) { * @return Zero if the operation is completely successful, * nonzero if there is any error. */ -int argo_write_value(ARGO_VALUE *v, FILE *f) { +// int argo_write_value(ARGO_VALUE *v, FILE *f) { // TO BE IMPLEMENTED. - abort(); -} + // abort(); +// } /** * @brief Write canonical JSON representing a specified string @@ -119,10 +119,10 @@ int argo_write_value(ARGO_VALUE *v, FILE *f) { * @return Zero if the operation is completely successful, * nonzero if there is any error. */ -int argo_write_string(ARGO_STRING *s, FILE *f) { +// int argo_write_string(ARGO_STRING *s, FILE *f) { // TO BE IMPLEMENTED. - abort(); -} + // abort(); +// } /** * @brief Write canonical JSON representing a specified number @@ -142,7 +142,7 @@ int argo_write_string(ARGO_STRING *s, FILE *f) { * @return Zero if the operation is completely successful, * nonzero if there is any error. */ -int argo_write_number(ARGO_NUMBER *n, FILE *f) { +// int argo_write_number(ARGO_NUMBER *n, FILE *f) { // TO BE IMPLEMENTED. - abort(); -} + // abort(); +// } diff --git a/hw1/src/main.c b/hw1/src/main.c index 62631ad..c5e1429 100644 --- a/hw1/src/main.c +++ b/hw1/src/main.c @@ -23,6 +23,23 @@ int main(int argc, char **argv) USAGE(*argv, EXIT_FAILURE); if(global_options == HELP_OPTION) USAGE(*argv, EXIT_SUCCESS); + else if (global_options == VALIDATE_OPTION) + { + argo_read_value(stdin); + return EXIT_SUCCESS; + } + else if (global_options == CANONICALIZE_OPTION) + { + ARGO_VALUE *json = argo_read_value(stdin); + argo_write_value(json, stdout); + return EXIT_SUCCESS; + } + else if (global_options & PRETTY_PRINT_OPTION) + { + ARGO_VALUE *json = argo_read_value(stdin); + argo_write_value(json, stdout); + return EXIT_SUCCESS; + } // TO BE IMPLEMENTED return EXIT_FAILURE; } diff --git a/hw1/src/validargs.c b/hw1/src/validargs.c index daf4cb2..de4bab8 100644 --- a/hw1/src/validargs.c +++ b/hw1/src/validargs.c @@ -40,14 +40,6 @@ int validargs(int argc, char **argv) global_options = VALIDATE_OPTION; isValid = 1; } - else - { - if (parse_arg(*(++ptr)) == -1) - { - global_options = VALIDATE_OPTION; - isValid = 1; - } - } break; case 2: if (argc == 2) @@ -57,18 +49,21 @@ int validargs(int argc, char **argv) } else { - switch (parse_arg(*(++ptr))) + if (parse_arg(*(++ptr)) == 1) { - case -1: - global_options = CANONICALIZE_OPTION; + int indented_value; + if (argc == 3) { + indented_value = 4; + } + else { + indented_value = str2int(*(++ptr)); + } + if (indented_value == -1) { + break; + } + global_options = CANONICALIZE_OPTION + PRETTY_PRINT_OPTION + indented_value; isValid = 1; break; - case 1: - global_options = CANONICALIZE_OPTION + PRETTY_PRINT_OPTION + str2int(*(++ptr)); - isValid = 1; - break; - default: - break; } } break; @@ -123,9 +118,14 @@ int str2int(char *arg) } else { - ans = 4; + ans = -1; break; } } - return ans; + if (ans < 256 && ans >= 0) { + return ans; + } + else { + return -1; + } } \ No newline at end of file