commit d71d75ad16058715e286e90bf48ab4f3d76e2127 from: Stefan Sperling date: Sun Nov 05 17:09:59 2017 UTC print the head revision commit - d4a5a8855b74b1a8d44747715e9545e53d7e6634 commit + d71d75ad16058715e286e90bf48ab4f3d76e2127 blob - eeca74e22721ef756289ffa1d8fa2578b8bb99c4 blob + fdfff2e90cf197c3377cf3a2df9b005075469071 --- include/got_object.h +++ include/got_object.h @@ -17,3 +17,5 @@ struct got_object_id { u_int8_t sha1[SHA1_DIGEST_LENGTH]; }; + +const char * got_object_id_str(struct got_object_id *, char *, size_t); blob - /dev/null blob + 4e9d9cfc4245c5c928a8abeb20463300b7469393 (mode 644) --- /dev/null +++ lib/object.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2017 Stefan Sperling + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +#include "got_object.h" + +const char * +got_object_id_str(struct got_object_id *id, char *buf, size_t size) +{ + char *p = buf; + char hex[3]; + int i; + + if (size < SHA1_DIGEST_STRING_LENGTH) + return NULL; + + for (i = 0; i < SHA1_DIGEST_LENGTH; i++) { + snprintf(hex, sizeof(hex), "%.2x", id->sha1[i]); + p[0] = hex[0]; + p[1] = hex[1]; + p += 2; + } + p[0] = '\0'; + + return buf; +} blob - 141f5fdc96126c1f4195558560a3c915e3d9b4c3 blob + 4a4a51ff51f09e461601809905d6eb6f3ec619a0 --- regress/repository/Makefile +++ regress/repository/Makefile @@ -1,7 +1,7 @@ .PATH:${.CURDIR}/../../lib PROG = repository_test -SRCS = path.c repository.c error.c refs.c repository_test.c +SRCS = path.c repository.c error.c refs.c object.c repository_test.c CPPFLAGS = -I${.CURDIR}/../../include LDADD = -lutil blob - 7734cd5d7c756e596111defd73a5d42fb42a22f8 blob + eb48aeca9c322748e88fc2cc83d9ad58b86c98d3 --- regress/repository/repository_test.c +++ regress/repository/repository_test.c @@ -35,6 +35,7 @@ repo_resolve_head_ref(const char *repo_path) struct got_repository *repo; struct got_reference *head_ref; struct got_object_id *id; + char buf[SHA1_DIGEST_STRING_LENGTH]; int ret; err = got_repo_open(&repo, repo_path); @@ -46,6 +47,7 @@ repo_resolve_head_ref(const char *repo_path) err = got_ref_resolve(&id, repo, head_ref); if (err != NULL || head_ref == NULL) return 0; + printf("HEAD is at %s\n", got_object_id_str(id, buf, sizeof(buf))); free(id); got_ref_close(head_ref); got_repo_close(repo);