summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/eyefiservice.cc6
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,11 +1,12 @@
1#include <cassert> 1#include <cassert>
2#include <iostream> 2#include <iostream>
3#include <fstream> 3#include <fstream>
4#include <stdexcept> 4#include <stdexcept>
5#include <iterator> 5#include <iterator>
6#include <algorithm>
6#include <syslog.h> 7#include <syslog.h>
7#include <sys/wait.h> 8#include <sys/wait.h>
8#include <autosprintf.h> 9#include <autosprintf.h>
9#include "eyekinfig.h" 10#include "eyekinfig.h"
10#include "eyetil.h" 11#include "eyetil.h"
11#include "soapeyefiService.h" 12#include "soapeyefiService.h"
@@ -165,13 +166,16 @@ int eyefiService::UploadPhoto(
165 tarchive_t a((*i).ptr,(*i).size); 166 tarchive_t a((*i).ptr,(*i).size);
166 while(a.read_next_header()) { 167 while(a.read_next_header()) {
167 std::string f = indir.get_file(a.entry_pathname()); 168 std::string f = indir.get_file(a.entry_pathname());
168 std::string::size_type fl = f.length(); 169 std::string::size_type fl = f.length();
169 if(fl<4) continue; 170 if(fl<4) continue;
170 const char *s = f.c_str()+fl-4; 171 const char *s = f.c_str()+fl-4;
171 if(!(strcasecmp(s,".JPG") && strcasecmp(s,".AVI"))) 172 static const char *suffixes[] = { ".JPG",".AVI",".MP4",".NEF",".RAW",".TIF" };
173 if(std::find_if(suffixes,suffixes+sizeof(suffixes)/sizeof(*suffixes),
174 std::not1(std::bind1st(std::ptr_fun(strcasecmp),s)))
175 != suffixes+sizeof(suffixes)/sizeof(*suffixes))
172 tf = f; 176 tf = f;
173 else if(!strcasecmp(s,".log")) 177 else if(!strcasecmp(s,".log"))
174 lf = f; 178 lf = f;
175 else continue; 179 else continue;
176 int fd=open(f.c_str(),O_CREAT|O_WRONLY,0666); 180 int fd=open(f.c_str(),O_CREAT|O_WRONLY,0666);
177 if(fd<0) 181 if(fd<0)