summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: eb38c22)
raw | patch | inline | side by side (parent: eb38c22)
author | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sat, 9 Apr 2005 16:48:20 +0000 (09:48 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sat, 9 Apr 2005 16:48:20 +0000 (09:48 -0700) |
Like the cache filename finder, it's a generically useful function,
rather than something specific to the current "show-diff" thing.
rather than something specific to the current "show-diff" thing.
cache.h | patch | blob | history | |
read-cache.c | patch | blob | history | |
show-diff.c | patch | blob | history |
index a23ad51ae0b5be6b09af7032ad05aaaa3617854f..0038e8b8e04b287ec876594cbab9df4af09ce131 100644 (file)
--- a/cache.h
+++ b/cache.h
#define alloc_nr(x) (((x)+16)*3/2)
-/* Initialize the cache information */
+/* Initialize and use the cache information */
extern int read_cache(void);
extern int cache_name_pos(const char *name, int namelen);
+extern int cache_match_stat(struct cache_entry *ce, struct stat *st);
+
+#define MTIME_CHANGED 0x0001
+#define CTIME_CHANGED 0x0002
+#define OWNER_CHANGED 0x0004
+#define MODE_CHANGED 0x0008
+#define INODE_CHANGED 0x0010
+#define DATA_CHANGED 0x0020
/* Return a statically allocated filename matching the sha1 signature */
extern char *sha1_file_name(unsigned char *sha1);
diff --git a/read-cache.c b/read-cache.c
index 44b4b0fc69cef727b2a35c41b202e3a6bb424869..c42d2de330d20b599527547b1c7f130e8ec530c9 100644 (file)
--- a/read-cache.c
+++ b/read-cache.c
return -1;
}
+int cache_match_stat(struct cache_entry *ce, struct stat *st)
+{
+ unsigned int changed = 0;
+
+ if (ce->mtime.sec != (unsigned int)st->st_mtim.tv_sec ||
+ ce->mtime.nsec != (unsigned int)st->st_mtim.tv_nsec)
+ changed |= MTIME_CHANGED;
+ if (ce->ctime.sec != (unsigned int)st->st_ctim.tv_sec ||
+ ce->ctime.nsec != (unsigned int)st->st_ctim.tv_nsec)
+ changed |= CTIME_CHANGED;
+ if (ce->st_uid != (unsigned int)st->st_uid ||
+ ce->st_gid != (unsigned int)st->st_gid)
+ changed |= OWNER_CHANGED;
+ if (ce->st_mode != (unsigned int)st->st_mode)
+ changed |= MODE_CHANGED;
+ if (ce->st_dev != (unsigned int)st->st_dev ||
+ ce->st_ino != (unsigned int)st->st_ino)
+ changed |= INODE_CHANGED;
+ if (ce->st_size != (unsigned int)st->st_size)
+ changed |= DATA_CHANGED;
+ return changed;
+}
+
static int cache_name_compare(const char *name1, int len1, const char *name2, int len2)
{
int len = len1 < len2 ? len1 : len2;
diff --git a/show-diff.c b/show-diff.c
index 3c6d4f98b48634d63554821b8d23592e359f8c91..d9af29fd876612855dfe659f6bb270804118edef 100644 (file)
--- a/show-diff.c
+++ b/show-diff.c
*/
#include "cache.h"
-#define MTIME_CHANGED 0x0001
-#define CTIME_CHANGED 0x0002
-#define OWNER_CHANGED 0x0004
-#define MODE_CHANGED 0x0008
-#define INODE_CHANGED 0x0010
-#define DATA_CHANGED 0x0020
-
-static int match_stat(struct cache_entry *ce, struct stat *st)
-{
- unsigned int changed = 0;
-
- if (ce->mtime.sec != (unsigned int)st->st_mtim.tv_sec ||
- ce->mtime.nsec != (unsigned int)st->st_mtim.tv_nsec)
- changed |= MTIME_CHANGED;
- if (ce->ctime.sec != (unsigned int)st->st_ctim.tv_sec ||
- ce->ctime.nsec != (unsigned int)st->st_ctim.tv_nsec)
- changed |= CTIME_CHANGED;
- if (ce->st_uid != (unsigned int)st->st_uid ||
- ce->st_gid != (unsigned int)st->st_gid)
- changed |= OWNER_CHANGED;
- if (ce->st_mode != (unsigned int)st->st_mode)
- changed |= MODE_CHANGED;
- if (ce->st_dev != (unsigned int)st->st_dev ||
- ce->st_ino != (unsigned int)st->st_ino)
- changed |= INODE_CHANGED;
- if (ce->st_size != (unsigned int)st->st_size)
- changed |= DATA_CHANGED;
- return changed;
-}
-
static void show_differences(struct cache_entry *ce, struct stat *cur,
void *old_contents, unsigned long long old_size)
{
printf("%s: %s\n", ce->name, strerror(errno));
continue;
}
- changed = match_stat(ce, &st);
+ changed = cache_match_stat(ce, &st);
if (!changed) {
printf("%s: ok\n", ce->name);
continue;