static void parse_args(int argc, char **argv) { int c; while (-1 != (c = getopt(argc, argv, "-d:w"))) { switch(c) { case 'd': nr_mem_desc ++; mem_desc_list = realloc(mem_desc_list, nr_mem_desc * sizeof(mem_desc_t)); if (parse_mem_desc(optarg, &mem_desc_list[nr_mem_desc - 1]) == -1) { printf("ERROR: invalid memory description: %s\n\n", optarg); print_help_exit(EXIT_FAILURE); } break; case 'w': periodical_write = true; break; default: print_help(); exit(EXIT_FAILURE); } } }
static void parse_arg_list(int argc, char *argv[]) { int i; for (i = 1; i < argc; ++i) { if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { print_help_exit(argv[0]); } else if (!strcmp(argv[i], "-a") || !strcmp(argv[i], "--address")) { if (++i == argc) { fprintf(stderr, "IP is missing.\n"); print_help_exit(argv[0]); } if (strcmp(argv[i], "ANY")) { server_address = inet_addr(argv[i]); if (server_address == INADDR_NONE) { fprintf(stderr, "IP is wrong.\n"); print_help_exit(argv[0]); } } } else if (!strcmp(argv[i], "-p") || !strcmp(argv[i], "--port")) { if (++i == argc) { fprintf(stderr, "Port is missing.\n"); print_help_exit(argv[0]); } server_port = atoi(argv[i]); if (server_port < 1024 && server_port != 80) { fprintf(stderr, "Port is out of valid range(=80 or >1023).\n"); print_help_exit(argv[0]); } } else { fprintf(stderr, "Unknown argument: %s.\n", argv[i]); print_help_exit(argv[0]); } } }
int main(int argc, char **argv) { int i; parse_args(argc, argv); if (nr_mem_desc == 0) { print_help_exit(EXIT_FAILURE); } for (i = 0; i < nr_mem_desc; i++) { mem_desc_t *desc = &mem_desc_list[i]; printf("Memory allocation %d:\n", i); printf(" size %ld byte\n", desc->size); printf("\n"); do_memory_allocation(desc); } while (true) { sleep(60); if (! periodical_write) continue; for (i = 0; i < nr_mem_desc; i++) { mem_desc_t *desc = &mem_desc_list[i]; memset(desc->ptr, 0x55, desc->size); } } return 0; }