-rw-r--r-- | src/eyefiservice.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/eyefiservice.cc b/src/eyefiservice.cc index 9350386..5c4e308 100644 --- a/src/eyefiservice.cc +++ b/src/eyefiservice.cc | |||
@@ -156,33 +156,34 @@ int eyefiService::UploadPhoto( | |||
156 | } | 156 | } |
157 | #endif | 157 | #endif |
158 | 158 | ||
159 | if(!tf.empty()) throw std::runtime_error("already seen tarball"); | 159 | if(!tf.empty()) throw std::runtime_error("already seen tarball"); |
160 | if(!digest.empty()) throw std::runtime_error("already have integrity digest"); | 160 | if(!digest.empty()) throw std::runtime_error("already have integrity digest"); |
161 | digest = integrity_digest((*i).ptr,(*i).size,eyekinfig.get_upload_key()); | 161 | digest = integrity_digest((*i).ptr,(*i).size,eyekinfig.get_upload_key()); |
162 | #ifndef NDEBUG | 162 | #ifndef NDEBUG |
163 | syslog(LOG_DEBUG," computed integrity digest=%s", digest.hex().c_str()); | 163 | syslog(LOG_DEBUG," computed integrity digest=%s", digest.hex().c_str()); |
164 | #endif | 164 | #endif |
165 | 165 | ||
166 | tarchive_t a((*i).ptr,(*i).size); | 166 | tarchive_t a((*i).ptr,(*i).size); |
167 | while(a.read_next_header()) { | 167 | while(a.read_next_header()) { |
168 | std::string f = indir.get_file(a.entry_pathname()); | 168 | std::string f = indir.get_file(a.entry_pathname()); |
169 | std::string::size_type fl = f.length(); | 169 | std::string::size_type fl = f.length(); |
170 | if(fl<4) continue; | 170 | if(fl<4) continue; |
171 | const char *s = f.c_str()+fl-4; | 171 | const char *s = f.c_str()+fl-4; |
172 | static const char *suffixes[] = { ".JPG",".AVI",".MP4",".NEF",".RAW",".TIF",".DNG",".CRW", ".RW2" }; | 172 | static const char *suffixes[] = { ".JPG",".AVI",".MP4",".NEF",".RAW",".TIF",".DNG",".CRW", |
173 | ".RW2",".CR2" }; | ||
173 | if(std::find_if(suffixes,suffixes+sizeof(suffixes)/sizeof(*suffixes), | 174 | if(std::find_if(suffixes,suffixes+sizeof(suffixes)/sizeof(*suffixes), |
174 | std::not1(std::bind1st(std::ptr_fun(strcasecmp),s))) | 175 | std::not1(std::bind1st(std::ptr_fun(strcasecmp),s))) |
175 | != suffixes+sizeof(suffixes)/sizeof(*suffixes)) | 176 | != suffixes+sizeof(suffixes)/sizeof(*suffixes)) |
176 | tf = f; | 177 | tf = f; |
177 | else if(!strcasecmp(s,".log")) | 178 | else if(!strcasecmp(s,".log")) |
178 | lf = f; | 179 | lf = f; |
179 | else continue; | 180 | else continue; |
180 | int fd=open(f.c_str(),O_CREAT|O_WRONLY,0666); | 181 | int fd=open(f.c_str(),O_CREAT|O_WRONLY,0666); |
181 | if(fd<0) | 182 | if(fd<0) |
182 | throw std::runtime_error(gnu::autosprintf("failed to create output file '%s'",f.c_str())); | 183 | throw std::runtime_error(gnu::autosprintf("failed to create output file '%s'",f.c_str())); |
183 | if(!a.read_data_into_fd(fd)) | 184 | if(!a.read_data_into_fd(fd)) |
184 | throw std::runtime_error(gnu::autosprintf("failed to untar file into '%s'",f.c_str())); | 185 | throw std::runtime_error(gnu::autosprintf("failed to untar file into '%s'",f.c_str())); |
185 | close(fd); | 186 | close(fd); |
186 | } | 187 | } |
187 | } | 188 | } |
188 | } | 189 | } |