diff options
author | Daniel Stenberg <daniel@haxx.se> | 2002-05-10 06:54:33 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2002-05-10 06:54:33 +0000 |
commit | e078eddff98e54e11dc3d59b248073d434d5da8b (patch) | |
tree | 622cd1ba01aa6ee7bdd2bc630a2a2763c29c5eb3 | |
parent | 59dd4363a8156ecc3d1365b46aedcf900552d28c (diff) | |
download | rockbox-e078eddff98e54e11dc3d59b248073d434d5da8b.tar.gz rockbox-e078eddff98e54e11dc3d59b248073d434d5da8b.zip |
x11_opendir() now fails properly in case the dir doesn't exist
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@537 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | uisimulator/x11/io.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/uisimulator/x11/io.c b/uisimulator/x11/io.c index 1e2ebd76c0..17a0c94b70 100644 --- a/uisimulator/x11/io.c +++ b/uisimulator/x11/io.c | |||
@@ -19,18 +19,24 @@ typedef struct mydir MYDIR; | |||
19 | MYDIR *x11_opendir(char *name) | 19 | MYDIR *x11_opendir(char *name) |
20 | { | 20 | { |
21 | char buffer[256]; /* sufficiently big */ | 21 | char buffer[256]; /* sufficiently big */ |
22 | MYDIR *my = (MYDIR *)malloc(sizeof(MYDIR)); | 22 | DIR *dir; |
23 | 23 | ||
24 | if(name[0] == '/') { | 24 | if(name[0] == '/') { |
25 | sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name); | 25 | sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name); |
26 | my->dir=(DIR *)opendir(buffer); | 26 | dir=(DIR *)opendir(buffer); |
27 | } | 27 | } |
28 | else | 28 | else |
29 | my->dir=(DIR *)opendir(name); | 29 | dir=(DIR *)opendir(name); |
30 | 30 | ||
31 | my->name = (char *)strdup(name); | 31 | if(dir) { |
32 | MYDIR *my = (MYDIR *)malloc(sizeof(MYDIR)); | ||
33 | my->dir = dir; | ||
34 | my->name = (char *)strdup(name); | ||
32 | 35 | ||
33 | return my; | 36 | return my; |
37 | } | ||
38 | /* failed open, return NULL */ | ||
39 | return (MYDIR *)0; | ||
34 | } | 40 | } |
35 | 41 | ||
36 | struct x11_dirent *x11_readdir(MYDIR *dir) | 42 | struct x11_dirent *x11_readdir(MYDIR *dir) |