commit - bd1223b9e402164e437d56f0fc72d208a4f354c7
commit + 9feb4ff2689af67633c98892e721ccd407ea1c92
blob - 8e741204236a2eac2d5340b57fde5b4e4a7d1eb6
blob + b96fa54031b91ee3b26894533b25f6b0da0f177a
--- got/Makefile
+++ got/Makefile
CPPFLAGS = -I${.CURDIR}/../include -I${.CURDIR}/../lib
LDADD = -lutil -lz
DPADD = ${LIBZ} ${LIBUTIL}
-DEBUG = -O0 -g
+CC = gcc
+DEBUG = -O0 -pg
+CPPFLAGS += -DPROFILE
CFLAGS += -Werror -Wall -Wstrict-prototypes -Wunused-variable
# For now, default to installing binary in ~/bin
blob - be95ec2118d5261062ef994e8f8d22a4a399606b
blob + 95a3c58b2e1406aa5612b3f0b3bebcce4b204d3e
--- got/got.c
+++ got/got.c
argc -= optind;
argv += optind;
+#ifndef PROFILE
if (pledge("stdio rpath wpath cpath flock", NULL) == -1)
err(1, "pledge");
+#endif
if (argc == 1) {
char *cwd, *base, *dotgit;
struct got_object *obj;
char *repo_path = NULL;
+#ifndef PROFILE
if (pledge("stdio rpath wpath cpath", NULL) == -1)
err(1, "pledge");
-
+#endif
if (argc == 1) {
repo_path = getcwd(NULL, 0);
if (repo_path == NULL)
blob - d3af74a3fb9e36cb7d3086ac9cb4edb9859644a2
blob + c7bfedc9c04e407c2ebdd3f5ef229347e502e5c9
--- lib/pack.c
+++ lib/pack.c
f = fopen(path, "rb");
if (f == NULL)
- return got_error(GOT_ERR_BAD_PATH);
+ return got_error_from_errno();
err = get_packfile_size(&packfile_size, path);
if (err)
entry->delta_len = 0;
}
-void
+const struct got_error *
add_delta_cache_entry(struct got_delta_cache *cache, off_t data_offset,
uint8_t *delta_buf, size_t delta_len)
{
entry = &cache->deltas[i];
entry->delta_buf = calloc(1, delta_len);
if (entry->delta_buf == NULL)
- return;
+ return got_error(GOT_ERR_NO_MEM);
entry->data_offset = data_offset;
- memcpy(entry->delta_buf, delta_buf, delta_len);
+ entry->delta_buf = delta_buf;
entry->delta_len = delta_len;
+ return NULL;
}
-void
+const struct got_error *
cache_delta(off_t data_offset, uint8_t *delta_buf, size_t delta_len,
const char *path_packfile, struct got_repository *repo)
{
cache = &repo->delta_cache[i];
if (cache->path_packfile == NULL)
break;
- if (strcmp(cache->path_packfile, path_packfile) == 0) {
- add_delta_cache_entry(cache, data_offset, delta_buf,
- delta_len);
- return;
- }
+ if (strcmp(cache->path_packfile, path_packfile) == 0)
+ return add_delta_cache_entry(cache, data_offset,
+ delta_buf, delta_len);
}
if (i == nitems(repo->delta_cache)) {
cache = &repo->delta_cache[i];
cache->path_packfile = strdup(path_packfile);
if (cache->path_packfile == NULL)
- return;
- add_delta_cache_entry(cache, data_offset, delta_buf, delta_len);
+ return got_error(GOT_ERR_NO_MEM);
+ return add_delta_cache_entry(cache, data_offset, delta_buf, delta_len);
}
void
uint8_t *delta_buf = NULL;
size_t delta_len = 0;
FILE *delta_file;
- int is_cached = 0;
delta_file = fopen(delta->path_packfile, "rb");
if (delta_file == NULL) {
get_cached_delta(&delta_buf, &delta_len, delta->data_offset,
path_packfile, repo);
-
if (delta_buf == NULL) {
if (fseeko(delta_file, delta->data_offset, SEEK_CUR)
!= 0) {
if (err)
goto done;
- cache_delta(delta->data_offset, delta_buf, delta_len,
- path_packfile, repo);
- } else
- is_cached = 1;
+ err = cache_delta(delta->data_offset, delta_buf,
+ delta_len, path_packfile, repo);
+ if (err)
+ goto done;
+ }
+ /* delta_buf is now cached */
err = got_delta_apply(base_file, delta_buf, delta_len,
/* Final delta application writes to the output file. */
++n < deltas->nentries ? accum_file : outfile);
- if (!is_cached)
- free(delta_buf);
if (err)
goto done;