]> git.0d.be Git - pige-extractor.git/commitdiff
always use absolute paths, do not meddle with working directory
authorFrédéric Péters <fpeters@0d.be>
Sun, 15 May 2016 13:22:21 +0000 (15:22 +0200)
committerFrédéric Péters <fpeters@0d.be>
Sun, 15 May 2016 14:16:15 +0000 (16:16 +0200)
download.cgi

index c55471ceef26ddae02f6c50a1929aa170a236260..fbe7b07d0bfac12dec4032c1165a94c41471ba9c 100755 (executable)
@@ -15,6 +15,13 @@ except ImportError:
     PATH_LAYOUT = '%Y/%m-%b/%d-%a/'
     FILENAME_LAYOUT = '%Hh%M'
 
+if isinstance(BASE_DIR, basestring):
+    BASE_DIR = [BASE_DIR]
+
+for i, dirname in enumerate(BASE_DIR):
+    if not dirname.endswith('/'):
+        BASE_DIR[i] = dirname + '/'
+
 syslog.openlog('pigebox')
 
 d = cgi.parse()
@@ -80,35 +87,27 @@ if ceil_end.minute%15:
     else:
         ceil_end = ceil_end.replace(minute=(1+(ceil_end.minute/15))*15)
 
-if type(BASE_DIR) is str:
-    os.chdir(BASE_DIR)
-
-def get_filenames():
-    path = start.strftime(PATH_LAYOUT)
+def get_filenames(base_dir):
+    path = os.path.join(base_dir, start.strftime(PATH_LAYOUT))
     if not path:
         filenames = [x for x in os.listdir('.')]
     else:
         filenames = [os.path.join(path, x) for x in os.listdir(path)]
         if end.hour < start.hour:
-            path = end.strftime(PATH_LAYOUT)
+            path = os.path.join(base_dir, end.strftime(PATH_LAYOUT))
             if os.path.exists(path):
                 filenames.extend([os.path.join(path, x) for x in os.listdir(path)])
-    filenames.sort()
 
     filenames = [x for x in filenames if
-                x >= floor_start.strftime(PATH_LAYOUT + FILENAME_LAYOUT) and 
-                x < ceil_end.strftime(PATH_LAYOUT + FILENAME_LAYOUT)]
+            x[len(base_dir):] >= floor_start.strftime(PATH_LAYOUT + FILENAME_LAYOUT) and
+            x[len(base_dir):] < ceil_end.strftime(PATH_LAYOUT + FILENAME_LAYOUT)]
     return filenames
 
 while True:
-    if type(BASE_DIR) is list:
-        filenames = []
-        for base_dir in BASE_DIR:
-            os.chdir(base_dir)
-            filenames.extend([os.path.join(base_dir, x) for x in get_filenames()])
-        filenames.sort()
-    else:
-        filenames = get_filenames()
+    filenames = []
+    for base_dir in BASE_DIR:
+        filenames.extend(get_filenames(base_dir))
+    filenames.sort()
 
     without_extension = [os.path.splitext(x)[0] for x in filenames]
     for f in without_extension: