--- loncom/lonnet/perl/lonnet.pm	2000/12/02 12:41:48	1.75
+++ loncom/lonnet/perl/lonnet.pm	2000/12/06 20:32:52	1.77
@@ -45,7 +45,8 @@
 # EXT(name)          : value of a variable
 # symblist(map,hash) : Updates symbolic storage links
 # symbread([filename]) : returns the data handle (filename optional)
-# rndseed()          : returns a random seed  
+# rndseed()          : returns a random seed 
+# receipt()          : returns a receipt to be given out to users 
 # getfile(filename)  : returns the contents of filename, or a -1 if it can't
 #                      be found, replicates and subscribes to the file
 # filelocation(dir,file) : returns a farily clean absolute reference to file 
@@ -383,7 +384,7 @@ sub idget {
           $idlist=~tr/A-Z/a-z/; 
 	  my $reply=&reply("idget:$udom:".$idlist,$tryserver);
           my @answer=();
-          if ($reply ne 'con_lost') {
+          if (($reply ne 'con_lost') && ($reply!~/^error\:/)) {
 	      @answer=split(/\&/,$reply);
           }                    ;
           my $i;
@@ -1632,6 +1633,27 @@ sub rndseed {
                .$symbchck);
 }
 
+sub ireceipt {
+    my ($funame,$fudom,$fucourseid,$fusymb)=@_;
+    my $cuname=unpack("%32C*",$funame);
+    my $cudom=unpack("%32C*",$fudom);
+    my $cucourseid=unpack("%32C*",$fucourseid);
+    my $cusymb=unpack("%32C*",$fusymb);
+    my $cunique=unpack("%32C*",$perlvar{'lonReceipt'});
+    return unpack("%32C*",$perlvar{'lonHostID'}).'-'.
+           ($cunique%$cuname+
+            $cunique%$cudom+
+            $cusymb%$cuname+
+            $cusymb%$cudom+
+            $cucourseid%$cuname+
+            $cucourseid%$cudom);
+}
+
+sub receipt {
+    return &ireceipt($ENV{'user.name'},$ENV{'user.domain'},
+                     $ENV{'request.course.id'},&symbread());
+}
+  
 # ------------------------------------------------------------ Serves up a file
 # returns either the contents of the file or a -1
 sub getfile {