mercurial/osutil.c
changeset 18027 4ca434500dbf
parent 18026 ddc0323db78b
child 23961 bc851e2851b1
equal deleted inserted replaced
18026:ddc0323db78b 18027:4ca434500dbf
   389 	return ret;
   389 	return ret;
   390 }
   390 }
   391 
   391 
   392 static PyObject *statfiles(PyObject *self, PyObject *args)
   392 static PyObject *statfiles(PyObject *self, PyObject *args)
   393 {
   393 {
   394         PyObject *names, *stats;
   394 	PyObject *names, *stats;
   395         Py_ssize_t i, count;
   395 	Py_ssize_t i, count;
   396 
   396 
   397         if (!PyArg_ParseTuple(args, "O:statfiles", &names))
   397 	if (!PyArg_ParseTuple(args, "O:statfiles", &names))
   398                 return NULL;
   398 		return NULL;
   399 
   399 
   400         count = PySequence_Length(names);
   400 	count = PySequence_Length(names);
   401         if (count == -1) {
   401 	if (count == -1) {
   402                 PyErr_SetString(PyExc_TypeError, "not a sequence");
   402 		PyErr_SetString(PyExc_TypeError, "not a sequence");
   403                 return NULL;
   403 		return NULL;
   404         }
   404 	}
   405 
   405 
   406         stats = PyList_New(count);
   406 	stats = PyList_New(count);
   407         if (stats == NULL)
   407 	if (stats == NULL)
   408                 return NULL;
   408 		return NULL;
   409 
   409 
   410         for (i = 0; i < count; i++) {
   410 	for (i = 0; i < count; i++) {
   411                 PyObject *stat;
   411 		PyObject *stat;
   412                 struct stat st;
   412 		struct stat st;
   413                 int ret, kind;
   413 		int ret, kind;
   414                 char *path;
   414 		char *path;
   415 
   415 
   416                 path = PyString_AsString(PySequence_GetItem(names, i));
   416 		path = PyString_AsString(PySequence_GetItem(names, i));
   417                 if (path == NULL) {
   417 		if (path == NULL) {
   418                         PyErr_SetString(PyExc_TypeError, "not a string");
   418 			PyErr_SetString(PyExc_TypeError, "not a string");
   419                         goto bail;
   419 			goto bail;
   420                 }
   420 		}
   421                 ret = lstat(path, &st);
   421 		ret = lstat(path, &st);
   422                 kind = st.st_mode & S_IFMT;
   422 		kind = st.st_mode & S_IFMT;
   423                 if (ret != -1 && (kind == S_IFREG || kind == S_IFLNK)) {
   423 		if (ret != -1 && (kind == S_IFREG || kind == S_IFLNK)) {
   424                         stat = makestat(&st);
   424 			stat = makestat(&st);
   425                         if (stat == NULL)
   425 			if (stat == NULL)
   426                                 goto bail;
   426 				goto bail;
   427                         PyList_SET_ITEM(stats, i, stat);
   427 			PyList_SET_ITEM(stats, i, stat);
   428                 } else {
   428 		} else {
   429                         Py_INCREF(Py_None);
   429 			Py_INCREF(Py_None);
   430                         PyList_SET_ITEM(stats, i, Py_None);
   430 			PyList_SET_ITEM(stats, i, Py_None);
   431                 }
   431 		}
   432         }
   432 	}
   433 
   433 
   434         return stats;
   434 	return stats;
   435 
   435 
   436 bail:
   436 bail:
   437         Py_DECREF(stats);
   437 	Py_DECREF(stats);
   438         return NULL;
   438 	return NULL;
   439 }
   439 }
   440 
   440 
   441 #endif /* ndef _WIN32 */
   441 #endif /* ndef _WIN32 */
   442 
   442 
   443 static PyObject *listdir(PyObject *self, PyObject *args, PyObject *kwargs)
   443 static PyObject *listdir(PyObject *self, PyObject *args, PyObject *kwargs)