comparison menu.c @ 1034:2c8d76280e43

Slightly better handling of directory read errors
author Michael Pavone <pavone@retrodev.com>
date Thu, 12 May 2016 19:26:58 -0700
parents 5ebf6ddd5a44
children 8da967779710
comparison
equal deleted inserted replaced
1029:4263dc9cf86d 1034:2c8d76280e43
140 dir_entry *entries = get_dir_list(menu->curpath, &num_entries); 140 dir_entry *entries = get_dir_list(menu->curpath, &num_entries);
141 if (entries) { 141 if (entries) {
142 qsort(entries, num_entries, sizeof(dir_entry), menu_dir_sort); 142 qsort(entries, num_entries, sizeof(dir_entry), menu_dir_sort);
143 } else { 143 } else {
144 warning("Failed to open directory %s: %s\n", menu->curpath, strerror(errno)); 144 warning("Failed to open directory %s: %s\n", menu->curpath, strerror(errno));
145 entries = malloc(sizeof(dir_entry));
146 entries->name = strdup("..");
147 entries->is_dir = 1;
148 num_entries = 1;
145 } 149 }
146 uint8_t *dest; 150 uint8_t *dest;
147 for (size_t i = 0; i < num_entries; i++) 151 for (size_t i = 0; i < num_entries; i++)
148 { 152 {
149 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen); 153 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen);
182 } 186 }
183 //terminate list 187 //terminate list
184 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen); 188 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen);
185 if (dest) { 189 if (dest) {
186 *dest = dest[1] = 0; 190 *dest = dest[1] = 0;
187 free_dir_list(entries, num_entries); 191 }
188 } 192 free_dir_list(entries, num_entries);
189 break; 193 break;
190 } 194 }
191 case 1: { 195 case 1: {
192 char buf[4096]; 196 char buf[4096];
193 copy_string_from_guest(m68k, dst, buf, sizeof(buf)); 197 copy_string_from_guest(m68k, dst, buf, sizeof(buf));