-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,13 +1,14 @@ #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; @@ -163,17 +164,20 @@ int eyefiService::UploadPhoto( #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)) |