equal
deleted
inserted
replaced
116 DIR *dir = NULL; |
116 DIR *dir = NULL; |
117 struct dirent *ent; |
117 struct dirent *ent; |
118 PyObject *list = NULL; |
118 PyObject *list = NULL; |
119 PyObject *ctor_args = NULL; |
119 PyObject *ctor_args = NULL; |
120 int all_kinds = 1; |
120 int all_kinds = 1; |
121 char *full_path; |
121 char full_path[PATH_MAX + 10]; |
122 int path_len; |
122 int path_len; |
123 int do_stat; |
123 int do_stat; |
124 char *path; |
124 char *path; |
125 int ret; |
125 int ret; |
126 ssize_t size; |
126 ssize_t size; |
141 |
141 |
142 list = PyList_New(0); |
142 list = PyList_New(0); |
143 if (!list) |
143 if (!list) |
144 goto bail; |
144 goto bail; |
145 |
145 |
146 full_path = alloca(path_len + PATH_MAX + 2); |
146 strncpy(full_path, path, PATH_MAX); |
147 memcpy(full_path, path, path_len); |
|
148 full_path[path_len] = '/'; |
147 full_path[path_len] = '/'; |
149 |
148 |
150 for (ent = readdir(dir); ent; ent = readdir(dir)) { |
149 for (ent = readdir(dir); ent; ent = readdir(dir)) { |
151 PyObject *name = NULL; |
150 PyObject *name = NULL; |
152 PyObject *py_kind = NULL; |
151 PyObject *py_kind = NULL; |
227 kind = py_kind == Py_None ? -1 : PyInt_AsLong(py_kind); |
226 kind = py_kind == Py_None ? -1 : PyInt_AsLong(py_kind); |
228 |
227 |
229 if (kind != -1 && !do_stat) |
228 if (kind != -1 && !do_stat) |
230 continue; |
229 continue; |
231 |
230 |
232 strcpy(full_path + path_len + 1, name); |
231 strncat(full_path + path_len + 1, name, |
|
232 PATH_MAX - path_len); |
|
233 full_path[PATH_MAX] = 0; |
233 |
234 |
234 if (do_stat) { |
235 if (do_stat) { |
235 struct listdir_stat *st; |
236 struct listdir_stat *st; |
236 |
237 |
237 if (!ctor_args) { |
238 if (!ctor_args) { |