Index: trunk/PS-IPP-PStamp/lib/PS/IPP/PStamp/RequestFile.pm
===================================================================
--- trunk/PS-IPP-PStamp/lib/PS/IPP/PStamp/RequestFile.pm	(revision 34447)
+++ trunk/PS-IPP-PStamp/lib/PS/IPP/PStamp/RequestFile.pm	(revision 34448)
@@ -25,4 +25,5 @@
                     $PSTAMP_SELECT_WEIGHT
                     $PSTAMP_SELECT_CMF
+                    $PSTAMP_SELECT_SOURCES
                     $PSTAMP_SELECT_PSF
                     $PSTAMP_SELECT_BACKMDL
@@ -32,8 +33,8 @@
                     $PSTAMP_SELECT_UNCONV
                     $PSTAMP_RESTORE_BACKGROUND
+                    $PSTAMP_USE_IMFILE_ID
+                    $PSTAMP_NO_WAIT_FOR_UPDATE
                     $PSTAMP_REQUEST_UNCENSORED
                     $PSTAMP_REQUIRE_UNCENSORED
-                    $PSTAMP_USE_IMFILE_ID
-                    $PSTAMP_NO_WAIT_FOR_UPDATE
                     $PSTAMP_SUCCESS
                     $PSTAMP_FIRST_ERROR_CODE
@@ -59,22 +60,26 @@
 our $PSTAMP_RANGE_IN_PIXELS  = 2;
 
+# Definition of the bits in OPTION_MASK
 our $PSTAMP_SELECT_IMAGE     = 1;
 our $PSTAMP_SELECT_MASK      = 2;
 our $PSTAMP_SELECT_VARIANCE  = 4;
 our $PSTAMP_SELECT_WEIGHT    = 4;
+our $PSTAMP_SELECT_SOURCES   = 8;
 our $PSTAMP_SELECT_CMF       = 8;
 our $PSTAMP_SELECT_PSF       = 16;
 our $PSTAMP_SELECT_BACKMDL   = 32;
 our $PSTAMP_SELECT_JPEG      = 64;
+# unused 128
+# unused 256
 our $PSTAMP_SELECT_UNCOMPRESSED = 512;
-our $PSTAMP_SELECT_INVERSE   = 1024;
-our $PSTAMP_SELECT_UNCONV    = 2048;
-our $PSTAMP_RESTORE_BACKGROUND = 4096;
-
-our $PSTAMP_USE_IMFILE_ID    = 16384;
-
+our $PSTAMP_SELECT_INVERSE      = 1024;
+our $PSTAMP_SELECT_UNCONV       = 2048;
+our $PSTAMP_RESTORE_BACKGROUND  = 4096;
+# unused 8192
+
+our $PSTAMP_USE_IMFILE_ID      = 16384;
 our $PSTAMP_NO_WAIT_FOR_UPDATE = 32768;
-our $PSTAMP_REQUEST_UNCENSORED = 1 << 16;
-our $PSTAMP_REQUIRE_UNCENSORED = 1 << 17;
+our $PSTAMP_REQUEST_UNCENSORED = 0x10000;
+our $PSTAMP_REQUIRE_UNCENSORED = 0x20000;
 
 # job and result codes
@@ -162,10 +167,10 @@
     my $fields_output;
     {
-        my $command = "echo $request_file_name | $fields -x 0 EXTNAME EXTVER REQ_NAME";
+        my $command = "echo $request_file_name | $fields -x 0 EXTNAME EXTVER REQ_NAME ACTION USERNAME EMAIL";
         my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
             run(command => $command, verbose => $verbose);
         $fields_output = join "", @$stdout_buf;
     }
-    my (undef, $extname, $extver, $req_name) = split " ", $fields_output;
+    my (undef, $extname, $extver, $req_name, $action, $username, $email) = split " ", $fields_output;
 
     # make sure the file contains what we are expecting
@@ -174,5 +179,5 @@
                     if !$extname or ($extname ne "PS1_PS_REQUEST");
     die "REQ_NAME not found in $request_file_name"  if (!$req_name);
-    die "wrong EXTVER $extver found in $request_file_name" if ($extver ne "1");
+    die "wrong EXTVER $extver found in $request_file_name" if ($extver ne "2" and $extver ne "1");
 
     my %header;
@@ -180,4 +185,20 @@
     $header{EXTVER}   = $extver;
     $header{EXTNAME}  = $extname;
+    if ($extver > 1) {
+        $header{ACTION} = $action;
+        $header{USER} = $username;
+        $header{EMAIL} = $email;
+    } else {
+        $header{ACTION} = $action = "PROCESS";
+        $header{USERNAME} = 'null';
+        $header{EMAIL} = 'null';
+    }
+
+    if ($action eq "LIST") {
+        return (\%header, undef);
+    } elsif ($action ne "PROCESS") {
+        die "unexpected request ACTION found: $action in $request_file_name";
+    }
+
 
     #
