mercurial/osutil.c
changeset 5422 a3ba7ef98c94
parent 5421 9b5d626be8ba
child 5423 e5f238a8b0d2
equal deleted inserted replaced
5421:9b5d626be8ba 5422:a3ba7ef98c94
   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) {