int assert(Emulator *emul) { interpreteur inter = emul->inter; char* what= NULL; char* va = NULL; char *value = NULL; unsigned int val = 0; // value en unsigned int char usage[] = "Usage : assert reg <registre> <valeur>\n\tassert word <adresse> <valeur>\n\tassert byte <adresse> <valeur>\n"; what = get_next_token (inter); // récupère reg, word ou byte va = get_next_token(inter); // registre ou adresse value = get_next_token(inter); // valeur if(what == NULL || va == NULL || value == NULL || get_next_token(inter) != NULL) // pas assez ou trop de tokens { WARNING_MSG("Problem with tokens"); printf("%s", usage); return 1; } /* On commence par tester la valeur car elle est commune au 3 commandes */ if(is_figure(value) != 0) // La valeur n'est pas correcte { WARNING_MSG("Value must be decimal, hexadecimal or octodecimal"); return 2; } val = strtoul(value, NULL, 0); if(strcmp(what, "reg") == 0) { return assert_reg(va, val, emul->reg); } else if(strcmp(what, "word") == 0) { return assert_wrd(strtoul(va, NULL, 0), val, emul->map); } else if(strcmp(what, "byte") == 0) { return assert_bte(strtoul(va, NULL, 0), val, emul->map); } else { WARNING_MSG("Bad value for second token"); printf("%s", usage); return 3; } }
void print_content() { char *query_string ; char **qv ; int qc ; char *arg1, *arg2, *arg3; int n1, n2, op; printf("<HTML><HEAD></HEAD><BODY><PRE>\n"); query_string = get_query_string(); if( string_split( query_string,'&',&qc, &qv ) < 0 ) { printf("Error while parsing query string\n"); printf("</PRE></BODY></HTML>\n"); if( query_string ) free( query_string ); exit( -1 ); } arg1 = getparam( qc, qv, "arg1" ); arg2 = getparam( qc, qv, "arg2" ); arg3 = getparam( qc, qv, "arg3" ); if (arg1 == NULL || arg2 == NULL) { printf("error: QUERY STRING must be \"arg1=INT&arg2=INT&arg3=INT\"\n"); printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); exit(-1); } if (arg3 == NULL) { printf("error: QUERY STRING must be \"arg1=INT&arg2=INT&arg3=INT\"\n"); printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); exit(-1); } /* printf("arg1: ["); safe_print_string( arg1 ); printf("]\n"); */ /* printf("arg2: ["); safe_print_string( arg2 ); printf("]\n"); */ if (*arg1 == '\0' || *arg2 == '\0') { printf("error: too few arguments to execute this program\n"); printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); exit(-1); } if (!is_figure(arg1) || !is_figure(arg2)) { printf("error:input figure\n"); printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); exit(-1); } if (*arg3 == '\0') { printf("error: select a kind of calculation\n"); printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); exit(-1); } n1 = atoi(arg1); n2 = atoi(arg2); op = atoi(arg3); if (op == 1) printf("%d\n", n1 + n2); else if (op == 2) printf("%d\n", n1 - n2); else if (op == 3) printf("%d\n", n1 * n2); else if (op == 4) { if (n2 == 0) printf("error : divisor is zero\n"); else printf("%d\n", n1 / n2); } printf("</PRE></BODY></HTML>\n"); free_string_vector( qc, qv ); if( query_string ) free( query_string ); }