--- a/mercurial/osutil.c Mon Oct 08 18:47:12 2007 -0500
+++ b/mercurial/osutil.c Mon Oct 08 18:47:14 2007 -0500
@@ -215,94 +215,94 @@
dfd = dirfd(dir);
#endif
- if (do_stat || !all_kinds) {
- for (i = 0; i < size; i++) {
- PyObject *elt = PyList_GetItem(list, i);
- char *name = PyString_AsString(PyTuple_GET_ITEM(elt, 0));
- PyObject *py_st = NULL;
- PyObject *py_kind = PyTuple_GET_ITEM(elt, 1);
- int kind;
-
- kind = py_kind == Py_None ? -1 : PyInt_AsLong(py_kind);
-
- if (kind != -1 && !do_stat)
- continue;
+ if (!(do_stat || !all_kinds))
+ goto done;
- strncat(full_path + path_len + 1, name,
- PATH_MAX - path_len);
- full_path[PATH_MAX] = 0;
-
- if (do_stat) {
- struct listdir_stat *st;
+ for (i = 0; i < size; i++) {
+ PyObject *elt = PyList_GetItem(list, i);
+ char *name = PyString_AsString(PyTuple_GET_ITEM(elt, 0));
+ PyObject *py_st = NULL;
+ PyObject *py_kind = PyTuple_GET_ITEM(elt, 1);
+ int kind;
- if (!ctor_args) {
- ctor_args = PyTuple_New(0);
- if (!ctor_args)
- goto bail;
- }
-
- st = (struct listdir_stat *)
- PyObject_CallObject((PyObject *)&listdir_stat_type,
- ctor_args);
+ kind = py_kind == Py_None ? -1 : PyInt_AsLong(py_kind);
- if (!st)
- goto bail;
-#ifdef AT_SYMLINK_NOFOLLOW
- ret = fstatat(dfd, name, &st->st, AT_SYMLINK_NOFOLLOW);
-#else
- ret = lstat(full_path, &st->st);
-#endif
- if (ret == -1) {
- list = PyErr_SetFromErrnoWithFilename(PyExc_OSError,
- full_path);
+ if (kind != -1 && !do_stat)
+ continue;
+
+ strncat(full_path + path_len + 1, name, PATH_MAX - path_len);
+ full_path[PATH_MAX] = 0;
+
+ if (do_stat) {
+ struct listdir_stat *st;
+
+ if (!ctor_args) {
+ ctor_args = PyTuple_New(0);
+ if (!ctor_args)
goto bail;
- }
- if (kind == -1)
- kind = mode_to_kind(st->st.st_mode);
- py_st = (PyObject *)st;
- } else {
- struct stat buf;
-#ifdef AT_SYMLINK_NOFOLLOW
- ret = fstatat(dfd, ent->d_name, &buf, AT_SYMLINK_NOFOLLOW);
-#else
- ret = lstat(full_path, &buf);
-#endif
- if (ret == -1) {
- list = PyErr_SetFromErrnoWithFilename(PyExc_OSError,
- full_path);
- goto bail;
- }
- if (kind == -1)
- kind = mode_to_kind(buf.st_mode);
}
- if (py_kind == Py_None && kind != -1) {
- py_kind = PyInt_FromLong(kind);
- if (!py_kind)
- goto bail;
- Py_XDECREF(Py_None);
- PyTuple_SET_ITEM(elt, 1, py_kind);
- }
+ st = (struct listdir_stat *)
+ PyObject_CallObject((PyObject *)&listdir_stat_type,
+ ctor_args);
- if (do_stat) {
- if (!py_st) {
- py_st = Py_None;
- Py_INCREF(Py_None);
- }
- PyTuple_SET_ITEM(elt, 2, py_st);
+ if (!st)
+ goto bail;
+#ifdef AT_SYMLINK_NOFOLLOW
+ ret = fstatat(dfd, name, &st->st, AT_SYMLINK_NOFOLLOW);
+#else
+ ret = lstat(full_path, &st->st);
+#endif
+ if (ret == -1) {
+ list = PyErr_SetFromErrnoWithFilename(PyExc_OSError,
+ full_path);
+ goto bail;
}
+ if (kind == -1)
+ kind = mode_to_kind(st->st.st_mode);
+ py_st = (PyObject *)st;
+ } else {
+ struct stat buf;
+#ifdef AT_SYMLINK_NOFOLLOW
+ ret = fstatat(dfd, ent->d_name, &buf, AT_SYMLINK_NOFOLLOW);
+#else
+ ret = lstat(full_path, &buf);
+#endif
+ if (ret == -1) {
+ list = PyErr_SetFromErrnoWithFilename(PyExc_OSError,
+ full_path);
+ goto bail;
+ }
+ if (kind == -1)
+ kind = mode_to_kind(buf.st_mode);
+ }
+
+ if (py_kind == Py_None && kind != -1) {
+ py_kind = PyInt_FromLong(kind);
+ if (!py_kind)
+ goto bail;
+ Py_XDECREF(Py_None);
+ PyTuple_SET_ITEM(elt, 1, py_kind);
+ }
+
+ if (do_stat) {
+ if (!py_st) {
+ py_st = Py_None;
+ Py_INCREF(Py_None);
+ }
+ PyTuple_SET_ITEM(elt, 2, py_st);
}
}
goto done;
- bail:
- Py_XDECREF(list);
+ bail:
+ Py_XDECREF(list);
- done:
- Py_XDECREF(ctor_args);
- if (dir)
- closedir(dir);
+ done:
+ Py_XDECREF(ctor_args);
+ if (dir)
+ closedir(dir);
return list;
}