Mercurial > repos > blastem
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)); |