author | Michael Krelin <hacker@klever.net> | 2011-08-30 20:52:04 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2011-08-30 20:52:04 (UTC) |
commit | 55bdd80087710b94e747a622fad8bd0ee3e3dec3 (patch) (side-by-side diff) | |
tree | 6d4b8ab76b18c7f6e3d6d2823470c8662cbdf8f5 | |
parent | 77706495aa0cc1706cfe1535b40477e004312081 (diff) | |
download | iii-55bdd80087710b94e747a622fad8bd0ee3e3dec3.zip iii-55bdd80087710b94e747a622fad8bd0ee3e3dec3.tar.gz iii-55bdd80087710b94e747a622fad8bd0ee3e3dec3.tar.bz2 |
updated list of supported suffixes
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | src/eyefiservice.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/eyefiservice.cc b/src/eyefiservice.cc index d7f0f04..77526b9 100644 --- a/src/eyefiservice.cc +++ b/src/eyefiservice.cc @@ -1,17 +1,18 @@ #include <cassert> #include <iostream> #include <fstream> #include <stdexcept> #include <iterator> +#include <algorithm> #include <syslog.h> #include <sys/wait.h> #include <autosprintf.h> #include "eyekinfig.h" #include "eyetil.h" #include "soapeyefiService.h" static binary_t session_nonce; static bool detached_child() { pid_t p = fork(); if(p<0) { @@ -159,25 +160,28 @@ int eyefiService::UploadPhoto( if(!digest.empty()) throw std::runtime_error("already have integrity digest"); digest = integrity_digest((*i).ptr,(*i).size,eyekinfig.get_upload_key()); #ifndef NDEBUG syslog(LOG_DEBUG," computed integrity digest=%s", digest.hex().c_str()); #endif tarchive_t a((*i).ptr,(*i).size); while(a.read_next_header()) { std::string f = indir.get_file(a.entry_pathname()); std::string::size_type fl = f.length(); if(fl<4) continue; const char *s = f.c_str()+fl-4; - if(!(strcasecmp(s,".JPG") && strcasecmp(s,".AVI"))) + static const char *suffixes[] = { ".JPG",".AVI",".MP4",".NEF",".RAW",".TIF" }; + if(std::find_if(suffixes,suffixes+sizeof(suffixes)/sizeof(*suffixes), + std::not1(std::bind1st(std::ptr_fun(strcasecmp),s))) + != suffixes+sizeof(suffixes)/sizeof(*suffixes)) tf = f; else if(!strcasecmp(s,".log")) lf = f; else continue; int fd=open(f.c_str(),O_CREAT|O_WRONLY,0666); if(fd<0) throw std::runtime_error(gnu::autosprintf("failed to create output file '%s'",f.c_str())); if(!a.read_data_into_fd(fd)) throw std::runtime_error(gnu::autosprintf("failed to untar file into '%s'",f.c_str())); close(fd); } } |