mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 14:37:30 +00:00
Update showindex example
I find the showindex example to be pretty useful on occasion, but there were are couple of output tweaks I wanted, plus I wanted the ability to specify a path to an actual index file instead of having to open the whole repository. This makes those changes and expands the example slightly.
This commit is contained in:
parent
3d4064a2cb
commit
dbc4aa0750
@ -1,28 +1,41 @@
|
|||||||
#include <git2.h>
|
#include <git2.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
git_repository *repo;
|
git_repository *repo = NULL;
|
||||||
git_index *index;
|
git_index *index;
|
||||||
unsigned int i, ecount;
|
unsigned int i, ecount;
|
||||||
char *dir = ".";
|
char *dir = ".";
|
||||||
|
size_t dirlen;
|
||||||
char out[41];
|
char out[41];
|
||||||
out[40] = '\0';
|
out[40] = '\0';
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
dir = argv[1];
|
dir = argv[1];
|
||||||
if (argc > 2) {
|
if (!dir || argc > 2) {
|
||||||
fprintf(stderr, "usage: showindex [<repo-dir>]\n");
|
fprintf(stderr, "usage: showindex [<repo-dir>]\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dirlen = strlen(dir);
|
||||||
|
if (dirlen > 5 && strcmp(dir + dirlen - 5, "index") == 0) {
|
||||||
|
if (git_index_open(&index, dir) < 0) {
|
||||||
|
fprintf(stderr, "could not open index: %s\n", dir);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (git_repository_open_ext(&repo, dir, 0, NULL) < 0) {
|
if (git_repository_open_ext(&repo, dir, 0, NULL) < 0) {
|
||||||
fprintf(stderr, "could not open repository: %s\n", dir);
|
fprintf(stderr, "could not open repository: %s\n", dir);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
if (git_repository_index(&index, repo) < 0) {
|
||||||
|
fprintf(stderr, "could not open repository index\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
git_repository_index(&index, repo);
|
|
||||||
git_index_read(index);
|
git_index_read(index);
|
||||||
|
|
||||||
ecount = git_index_entrycount(index);
|
ecount = git_index_entrycount(index);
|
||||||
@ -37,11 +50,10 @@ int main (int argc, char** argv)
|
|||||||
printf("File Path: %s\n", e->path);
|
printf("File Path: %s\n", e->path);
|
||||||
printf(" Stage: %d\n", git_index_entry_stage(e));
|
printf(" Stage: %d\n", git_index_entry_stage(e));
|
||||||
printf(" Blob SHA: %s\n", out);
|
printf(" Blob SHA: %s\n", out);
|
||||||
printf("File Size: %d\n", (int)e->file_size);
|
printf("File Mode: %07o\n", e->mode);
|
||||||
printf(" Device: %d\n", (int)e->dev);
|
printf("File Size: %d bytes\n", (int)e->file_size);
|
||||||
printf(" Inode: %d\n", (int)e->ino);
|
printf("Dev/Inode: %d/%d\n", (int)e->dev, (int)e->ino);
|
||||||
printf(" UID: %d\n", (int)e->uid);
|
printf(" UID/GID: %d/%d\n", (int)e->uid, (int)e->gid);
|
||||||
printf(" GID: %d\n", (int)e->gid);
|
|
||||||
printf(" ctime: %d\n", (int)e->ctime.seconds);
|
printf(" ctime: %d\n", (int)e->ctime.seconds);
|
||||||
printf(" mtime: %d\n", (int)e->mtime.seconds);
|
printf(" mtime: %d\n", (int)e->mtime.seconds);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user