]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/http/server/cgi/cgi.factor
core, basis, extra: Remove DOS line endings from files.
[factor.git] / basis / http / server / cgi / cgi.factor
index 3089694e1316a9878bcd2dd15b137f9fbc5d1562..40e512a060fd0f102e68c71efbec8f28ce008832 100644 (file)
@@ -1,66 +1,66 @@
-! Copyright (C) 2007, 2009 Slava Pestov.\r
-! See http://factorcode.org/license.txt for BSD license.\r
-USING: namespaces kernel assocs io.files io.streams.duplex\r
-combinators arrays io.launcher io.encodings io.encodings.binary io\r
-http.server.static http.server http accessors sequences strings\r
-math.parser fry urls urls.encoding calendar make ;\r
-IN: http.server.cgi\r
-\r
-: cgi-variables ( script-path -- assoc )\r
-    #! This needs some work.\r
-    [\r
-        "CGI/1.0" "GATEWAY_INTERFACE" ,,\r
-        "HTTP/" request get version>> append "SERVER_PROTOCOL" ,,\r
-        "Factor" "SERVER_SOFTWARE" ,,\r
-\r
-        [ "PATH_TRANSLATED" ,, ] [ "SCRIPT_FILENAME" ,, ] bi\r
-\r
-        url get path>> "SCRIPT_NAME" ,,\r
-\r
-        url get host>> "SERVER_NAME" ,,\r
-        url get port>> number>string "SERVER_PORT" ,,\r
-        "" "PATH_INFO" ,,\r
-        "" "REMOTE_HOST" ,,\r
-        "" "REMOTE_ADDR" ,,\r
-        "" "AUTH_TYPE" ,,\r
-        "" "REMOTE_USER" ,,\r
-        "" "REMOTE_IDENT" ,,\r
-\r
-        request get method>> "REQUEST_METHOD" ,,\r
-        url get query>> assoc>query "QUERY_STRING" ,,\r
-        request get "cookie" header "HTTP_COOKIE" ,,\r
-\r
-        request get "user-agent" header "HTTP_USER_AGENT" ,,\r
-        request get "accept" header "HTTP_ACCEPT" ,,\r
-\r
-        post-request? [\r
-            request get post-data>> data>>\r
-            [ "CONTENT_TYPE" ,, ]\r
-            [ length number>string "CONTENT_LENGTH" ,, ]\r
-            bi\r
-        ] when\r
-    ] H{ } make ;\r
-\r
-: <cgi-process> ( name -- desc )\r
-    <process>\r
-        over 1array >>command\r
-        swap cgi-variables >>environment\r
-        1 minutes >>timeout ;\r
-\r
-: serve-cgi ( name -- response )\r
-    <raw-response>\r
-    200 >>code\r
-    "CGI output follows" >>message\r
-    swap '[\r
-        binary encode-output\r
-        output-stream get _ <cgi-process> binary <process-stream> [\r
-            post-request? [ request get post-data>> data>> write flush ] when\r
-            '[ _ stream-write ] each-block\r
-        ] with-stream\r
-    ] >>body ;\r
-\r
-SLOT: special\r
-\r
-: enable-cgi ( responder -- responder )\r
-    [ serve-cgi ] "application/x-cgi-script"\r
-    pick special>> set-at ;\r
+! Copyright (C) 2007, 2009 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: namespaces kernel assocs io.files io.streams.duplex
+combinators arrays io.launcher io.encodings io.encodings.binary io
+http.server.static http.server http accessors sequences strings
+math.parser fry urls urls.encoding calendar make ;
+IN: http.server.cgi
+
+: cgi-variables ( script-path -- assoc )
+    #! This needs some work.
+    [
+        "CGI/1.0" "GATEWAY_INTERFACE" ,,
+        "HTTP/" request get version>> append "SERVER_PROTOCOL" ,,
+        "Factor" "SERVER_SOFTWARE" ,,
+
+        [ "PATH_TRANSLATED" ,, ] [ "SCRIPT_FILENAME" ,, ] bi
+
+        url get path>> "SCRIPT_NAME" ,,
+
+        url get host>> "SERVER_NAME" ,,
+        url get port>> number>string "SERVER_PORT" ,,
+        "" "PATH_INFO" ,,
+        "" "REMOTE_HOST" ,,
+        "" "REMOTE_ADDR" ,,
+        "" "AUTH_TYPE" ,,
+        "" "REMOTE_USER" ,,
+        "" "REMOTE_IDENT" ,,
+
+        request get method>> "REQUEST_METHOD" ,,
+        url get query>> assoc>query "QUERY_STRING" ,,
+        request get "cookie" header "HTTP_COOKIE" ,,
+
+        request get "user-agent" header "HTTP_USER_AGENT" ,,
+        request get "accept" header "HTTP_ACCEPT" ,,
+
+        post-request? [
+            request get post-data>> data>>
+            [ "CONTENT_TYPE" ,, ]
+            [ length number>string "CONTENT_LENGTH" ,, ]
+            bi
+        ] when
+    ] H{ } make ;
+
+: <cgi-process> ( name -- desc )
+    <process>
+        over 1array >>command
+        swap cgi-variables >>environment
+        1 minutes >>timeout ;
+
+: serve-cgi ( name -- response )
+    <raw-response>
+    200 >>code
+    "CGI output follows" >>message
+    swap '[
+        binary encode-output
+        output-stream get _ <cgi-process> binary <process-stream> [
+            post-request? [ request get post-data>> data>> write flush ] when
+            '[ _ stream-write ] each-block
+        ] with-stream
+    ] >>body ;
+
+SLOT: special
+
+: enable-cgi ( responder -- responder )
+    [ serve-cgi ] "application/x-cgi-script"
+    pick special>> set-at ;