mercurial/osutil.c
changeset 7059 6a76cf980999
parent 7056 2c1f18b88b6a
child 7098 8a5c88c7e97b
equal deleted inserted replaced
7058:9e6d6568bf7a 7059:6a76cf980999
   205 	}
   205 	}
   206 	strcpy(pattern + plen, "*");
   206 	strcpy(pattern + plen, "*");
   207 
   207 
   208 	fh = FindFirstFileA(pattern, &fd);
   208 	fh = FindFirstFileA(pattern, &fd);
   209 	if (fh == INVALID_HANDLE_VALUE) {
   209 	if (fh == INVALID_HANDLE_VALUE) {
   210 		PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError,
   210 		PyErr_SetFromWindowsErrWithFilename(GetLastError(), path);
   211 							GetLastError(),
       
   212 							path);
       
   213 		goto error_file;
   211 		goto error_file;
   214 	}
   212 	}
   215 
   213 
   216 	list = PyList_New(0);
   214 	list = PyList_New(0);
   217 	if (!list)
   215 	if (!list)
   242 
   240 
   243 		Py_XDECREF(item);
   241 		Py_XDECREF(item);
   244 	} while (FindNextFileA(fh, &fd));
   242 	} while (FindNextFileA(fh, &fd));
   245 
   243 
   246 	if (GetLastError() != ERROR_NO_MORE_FILES) {
   244 	if (GetLastError() != ERROR_NO_MORE_FILES) {
   247 		PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError,
   245 		PyErr_SetFromWindowsErrWithFilename(GetLastError(), path);
   248 							GetLastError(),
       
   249 							path);
       
   250 		goto error;
   246 		goto error;
   251 	}
   247 	}
   252 
   248 
   253 	rval = list;
   249 	rval = list;
   254 	Py_XINCREF(rval);
   250 	Py_XINCREF(rval);
   292 
   288 
   293 	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|Os:listdir", kwlist,
   289 	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|Os:listdir", kwlist,
   294 					 &path, &pathlen, &statflag, &skip))
   290 					 &path, &pathlen, &statflag, &skip))
   295 		goto error_parse;
   291 		goto error_parse;
   296 
   292 
   297 	if (pathlen >= PATH_MAX)
   293 	if (pathlen >= PATH_MAX) {
   298 		goto error_parse;
   294 		PyErr_SetString(PyExc_ValueError, "path too long");
   299 
   295 		goto error_parse;
       
   296 	}
   300 	strncpy(fullpath, path, PATH_MAX);
   297 	strncpy(fullpath, path, PATH_MAX);
   301 	fullpath[pathlen] = '/';
   298 	fullpath[pathlen] = '/';
   302 	keepstat = statflag && PyObject_IsTrue(statflag);
   299 	keepstat = statflag && PyObject_IsTrue(statflag);
   303 
   300 
   304 #ifdef AT_SYMLINK_NOFOLLOW
   301 #ifdef AT_SYMLINK_NOFOLLOW