summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRomain Geissler <romain.geissler@gmail.com>2011-06-03 21:09:14 +0200
committerRomain Geissler <romain.geissler@gmail.com>2011-06-03 21:20:20 +0200
commitbc6484912ebb3db2ac9637abebdeadd28f6d84c3 (patch)
treede8619e9387bec1b239b13cb70a7a5ceb20ff264 /src
parent26a98ec8a2ebd6d54ad12466552442fde1c6a9d0 (diff)
downloadlibgit2-bc6484912ebb3db2ac9637abebdeadd28f6d84c3.tar.gz
Fileops: Added gitfo_isfile.
Conflicts: src/fileops.c
Diffstat (limited to 'src')
-rw-r--r--src/fileops.c21
-rw-r--r--src/fileops.h1
2 files changed, 21 insertions, 1 deletions
diff --git a/src/fileops.c b/src/fileops.c
index 409d1cb5a..11634c263 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -131,7 +131,26 @@ int gitfo_isdir(const char *path)
return git__throw(GIT_ENOTFOUND, "%s does not exist", path);
if (!S_ISDIR(st.st_mode))
- return git__throw(GIT_ENOTFOUND, "%s is a file", path);
+ return git__throw(GIT_ENOTFOUND, "%s is not a directory", path);
+
+ return GIT_SUCCESS;
+}
+
+int gitfo_isfile(const char *path)
+{
+ struct stat st;
+ int stat_error;
+
+ if (!path)
+ return git__throw(GIT_ENOTFOUND, "No path given to gitfo_isfile");
+
+ stat_error = gitfo_stat(path, &st);
+
+ if (stat_error < GIT_SUCCESS)
+ return git__throw(GIT_ENOTFOUND, "%s does not exist", path);
+
+ if (!S_ISREG(st.st_mode))
+ return git__throw(GIT_ENOTFOUND, "%s is not a file", path);
return GIT_SUCCESS;
}
diff --git a/src/fileops.h b/src/fileops.h
index 1b70fc836..aa225dca6 100644
--- a/src/fileops.h
+++ b/src/fileops.h
@@ -67,6 +67,7 @@ extern int gitfo_creat(const char *path, int mode);
extern int gitfo_creat_force(const char *path, int mode);
extern int gitfo_mktemp(char *path_out, const char *filename);
extern int gitfo_isdir(const char *path);
+extern int gitfo_isfile(const char *path);
extern int gitfo_mkdir_recurs(const char *path, int mode);
extern int gitfo_mkdir_2file(const char *path);
#define gitfo_close(fd) close(fd)