commit 07279832f5815cc62252d1f0593923a56cbd84b6
parent 2984496584c9e077befb37bf5b1a8727805e2d73
Author: Tomas Hlavaty <tom@logand.com>
Date:   Sat, 10 Aug 2013 20:48:36 +0200
ipp.wget::run-command introduced for better error reporting
Diffstat:
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/ipp.lisp b/ipp.lisp
@@ -295,8 +295,16 @@
 
 (in-package :ipp.wget)
 
+(defun run-command (cmd args &optional error-plist)
+  (let ((code
+         #+ccl(ccl::external-process-%exit-code (ccl:run-program cmd args))
+         #-ccl(error "TODO port IPP.WGET::RUN-COMMAND")))
+    (unless (zerop code)
+      (let ((reason (or (cdr (assoc code error-plist)) "")))
+        (error (format nil "~a error ~d: ~a ~s" cmd code reason args))))))
+
 (defun wget (url &key request-file response-file content-type)
-  (ccl:run-program
+  (run-command
    "wget"
    `("-q"
      ,@ (when request-file
@@ -305,7 +313,15 @@
           `("-O" ,response-file))
      ,@ (when content-type
           `("--header" ,(format nil "Content-Type:~a" content-type)))
-     ,url)))
+     ,url)
+   '((1 . "Generic panic code")
+     (2 . "Parse panic")
+     (3 . "File I/O panic")
+     (4 . "Network failure")
+     (5 . "SSL verification failure")
+     (6 . "Username/password authentication failure")
+     (7 . "Protocol panics")
+     (8 . "Server issued an panic response"))))
 
 ;;(wget "http://localhost:631/printers/" :response-file "/tmp/a.html")
 
@@ -336,7 +352,7 @@
 (in-package :ipp.curl)
 
 (defun curl (url &key request-file response-file content-type)
-  (ccl:run-program
+  (ipp.wget::run-command
    "curl"
    `("-s"
      ,@ (when request-file