X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=store.cc;h=cf3eea952f3f27524450765b1b8fc232594d0bca;hb=3addc0c5e928bc7b0fc6ff1ef8b7dff7263cf3ea;hp=57ee11ba163ded18af96b2a9206dd2b63508f7eb;hpb=a7c068d940ab32b75dc2dfaf11146b363f95ca88;p=cumulus.git diff --git a/store.cc b/store.cc index 57ee11b..cf3eea9 100644 --- a/store.cc +++ b/store.cc @@ -30,7 +30,9 @@ using std::list; using std::set; using std::string; -static char *const filter_program[] = {"bzip2", "-c", NULL}; +/* Default filter program is bzip2 */ +const char *filter_program = "bzip2 -c"; +const char *filter_extension = ".bz2"; static void cloexec(int fd) { @@ -112,7 +114,7 @@ int Tarfile::spawn_filter(int fd_out) close(fd_out); /* Exec the filter program. */ - execvp(filter_program[0], filter_program); + execlp("/bin/sh", "/bin/sh", "-c", filter_program, NULL); /* Should not reach here except for error cases. */ fprintf(stderr, "Could not exec filter: %m\n"); @@ -204,7 +206,8 @@ ObjectReference TarSegmentStore::write_object(const char *data, size_t len, segment->name = generate_uuid(); - string filename = path + "/" + segment->name + ".tar.bz2"; + string filename = path + "/" + segment->name + ".tar"; + filename += filter_extension; segment->file = new Tarfile(filename, segment->name); segment->count = 0;