commit - eb983b4b76029c3b0741efa8c0259a1d52cd5957
commit + ddce05203bee5a153b268a999a934f9469807f97
blob - f700d534abc0d915d72e8ac802bc4970c3ffd64f
blob + 022eafe9522db33fd6a9cb09c8c41b91a297588c
--- lib/fileindex.c
+++ lib/fileindex.c
#define GOT_FILEIDX_F_STAGE 0x00003000
#define GOT_FILEIDX_F_EXTENDED 0x00004000
#define GOT_FILEIDX_F_ASSUME_VALID 0x00008000
-#define GOT_FILEIDX_F_NOT_FLUSHED 0x20000000
+#define GOT_FILEIDX_F_NOT_FLUSHED 0x00010000
+#define GOT_FILEIDX_F_NO_BLOB 0x00020000
+#define GOT_FILEIDX_F_NO_COMMIT 0x00040000
struct got_fileindex {
struct got_fileindex_tree entries;
entry->mode = GOT_FILEIDX_MODE_REGULAR_FILE;
entry->mode |= ((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) <<
GOT_FILEIDX_MODE_PERMS_SHIFT);
- memcpy(entry->blob_sha1, blob_sha1, SHA1_DIGEST_LENGTH);
- memcpy(entry->commit_sha1, commit_sha1, SHA1_DIGEST_LENGTH);
+ if (blob_sha1) {
+ memcpy(entry->blob_sha1, blob_sha1, SHA1_DIGEST_LENGTH);
+ entry->flags &= ~GOT_FILEIDX_F_NO_BLOB;
+ } else
+ entry->flags |= GOT_FILEIDX_F_NO_BLOB;
+
+ if (commit_sha1) {
+ memcpy(entry->commit_sha1, commit_sha1, SHA1_DIGEST_LENGTH);
+ entry->flags &= ~GOT_FILEIDX_F_NO_COMMIT;
+ } else
+ entry->flags |= GOT_FILEIDX_F_NO_COMMIT;
+
return NULL;
}