Commit fe477951 by Carlos Martín Nieto

Merge pull request #2885 from JIghtuse/master

describe example: function to add commits to opts
parents 99b68a2a 23d1dbe9
......@@ -13,6 +13,7 @@
*/
#include "common.h"
#include <assert.h>
/**
* The following example partially reimplements the `git describe` command
......@@ -46,6 +47,27 @@ typedef struct {
typedef struct args_info args_info;
static void *xrealloc(void *oldp, size_t newsz)
{
void *p = realloc(oldp, newsz);
if (p == NULL) {
fprintf(stderr, "Cannot allocate memory, exiting.\n");
exit(1);
}
return p;
}
static void opts_add_commit(describe_options *opts, const char *commit)
{
size_t sz;
assert(opts != NULL);
sz = ++opts->commit_count * sizeof(opts->commits[0]);
opts->commits = xrealloc(opts->commits, sz);
opts->commits[opts->commit_count - 1] = commit;
}
static void do_describe_single(git_repository *repo, describe_options *opts, const char *rev)
{
git_object *commit;
......@@ -96,9 +118,7 @@ static void parse_options(describe_options *opts, int argc, char **argv)
const char *curr = argv[args.pos];
if (curr[0] != '-') {
size_t newsz = ++opts->commit_count * sizeof(opts->commits[0]);
opts->commits = (const char **)realloc((void *)opts->commits, newsz);
opts->commits[opts->commit_count - 1] = curr;
opts_add_commit(opts, curr);
} else if (!strcmp(curr, "--all")) {
opts->describe_options.describe_strategy = GIT_DESCRIBE_ALL;
} else if (!strcmp(curr, "--tags")) {
......@@ -124,9 +144,7 @@ static void parse_options(describe_options *opts, int argc, char **argv)
}
else {
if (!opts->format_options.dirty_suffix || !opts->format_options.dirty_suffix[0]) {
size_t sz = ++opts->commit_count * sizeof(opts->commits[0]);
opts->commits = (const char **)malloc(sz);
opts->commits[0] = "HEAD";
opts_add_commit(opts, "HEAD");
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment