Index: exposurses.c ================================================================== --- exposurses.c +++ exposurses.c @@ -87,12 +87,13 @@ WINDOW *aperture_win; void selection(char *name); void remove_menu(ITEM **items, MENU *men, int n); void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color); -MENU *add_menu(char **array, ITEM **items, int n); +MENU *add_menu(ITEM **items); WINDOW *add_window(int xpos, char *title); +ITEM **add_item(char **array, int n); int exposure(int iso); double shutter(int exposure, double aperture); double aperture(int exposure, double shutter); int nearest_match(double x, int menu, int n_array); double fraction_to_double(char *fraction); @@ -128,14 +129,18 @@ n_exposure = ARRAY_SIZE(exposure_array); n_iso = ARRAY_SIZE(iso_array); n_shutter = ARRAY_SIZE(shutter_array); n_aperture = ARRAY_SIZE(aperture_array); /* http://stackoverflow.com/a/2620158/208793 */ - exposure_menu = add_menu(exposure_array, exposure_items, n_exposure); - iso_menu = add_menu(iso_array, iso_items, n_iso); - shutter_menu = add_menu(shutter_array, shutter_items, n_shutter); - aperture_menu = add_menu(aperture_array, aperture_items, n_aperture); + exposure_items = add_item(exposure_array, n_exposure); + iso_items = add_item(iso_array, n_iso); + aperture_items = add_item(aperture_array, n_aperture); + shutter_items = add_item(shutter_array, n_shutter); + exposure_menu = add_menu(exposure_items); + iso_menu = add_menu(iso_items); + shutter_menu = add_menu(shutter_items); + aperture_menu = add_menu(aperture_items); exposure_win = add_window(4, "EV"); iso_win = add_window(45, "ISO"); shutter_win = add_window(86, "Shutter"); aperture_win = add_window(127, "Aperture"); /* Don't know how to avoid the repition below */ @@ -296,19 +301,25 @@ remove_menu(shutter_items, shutter_menu, n_shutter); remove_menu(aperture_items, aperture_menu, n_aperture); endwin(); } -MENU *add_menu(char **array, ITEM **items, int n) { +ITEM **add_item(char **array, int n) { int i; + ITEM **local_items; + + local_items = (ITEM **)calloc(n, sizeof(ITEM *)); + for(i = 0; i