Browse Source

Update MOSS script

Samuel W. Flint 2 months ago
parent
commit
55288d2b9a
1 changed files with 59 additions and 59 deletions
  1. 59 59
      moss

+ 59 - 59
moss

@@ -40,7 +40,7 @@
 # files in the directories foo and bar respectively.
 #
 #    moss -d foo/*.c foo/*.h bar/*.c bar/*.h
-#   
+#
 # Example: Each program consists of the *.c and *.h files in a directory under
 # the directory "assignment1."
 #
@@ -50,10 +50,10 @@
 # The -b option names a "base file".  Moss normally reports all code
 # that matches in pairs of files.  When a base file is supplied,
 # program code that also appears in the base file is not counted in matches.
-# A typical base file will include, for example, the instructor-supplied 
-# code for an assignment.  Multiple -b options are allowed.  You should 
-# use a base file if it is convenient; base files improve results, but 
-# are not usually necessary for obtaining useful information. 
+# A typical base file will include, for example, the instructor-supplied
+# code for an assignment.  Multiple -b options are allowed.  You should
+# use a base file if it is convenient; base files improve results, but
+# are not usually necessary for obtaining useful information.
 #
 # IMPORTANT: Unlike previous versions of moss, the -b option *always*
 # takes a single filename, even if the -d option is also used.
@@ -68,29 +68,29 @@
 #  Submit all of the ML programs in directories asn1.96/* and asn1.97/*, where
 #  asn1.97/instructor/example.ml and asn1.96/instructor/example.ml contain the base files.
 #
-#    moss -l ml -b asn1.97/instructor/example.ml -b asn1.96/instructor/example.ml -d asn1.97/*/*.ml asn1.96/*/*.ml 
+#    moss -l ml -b asn1.97/instructor/example.ml -b asn1.96/instructor/example.ml -d asn1.97/*/*.ml asn1.96/*/*.ml
 #
 # The -m option sets the maximum number of times a given passage may appear
 # before it is ignored.  A passage of code that appears in many programs
 # is probably legitimate sharing and not the result of plagiarism.  With -m N,
-# any passage appearing in more than N programs is treated as if it appeared in 
+# any passage appearing in more than N programs is treated as if it appeared in
 # a base file (i.e., it is never reported).  Option -m can be used to control
 # moss' sensitivity.  With -m 2, moss reports only passages that appear
 # in exactly two programs.  If one expects many very similar solutions
 # (e.g., the short first assignments typical of introductory programming
 # courses) then using -m 3 or -m 4 is a good way to eliminate all but
 # truly unusual matches between programs while still being able to detect
-# 3-way or 4-way plagiarism.  With -m 1000000 (or any very 
-# large number), moss reports all matches, no matter how often they appear.  
-# The -m setting is most useful for large assignments where one also a base file 
+# 3-way or 4-way plagiarism.  With -m 1000000 (or any very
+# large number), moss reports all matches, no matter how often they appear.
+# The -m setting is most useful for large assignments where one also a base file
 # expected to hold all legitimately shared code.  The default for -m is 10.
 #
 # Examples:
 #
-#   moss -l pascal -m 2 *.pascal 
+#   moss -l pascal -m 2 *.pascal
 #   moss -l cc -m 1000000 -b mycode.cc asn1/*.cc
 #
-# 
+#
 # The -c option supplies a comment string that is attached to the generated
 # report.  This option facilitates matching queries submitted with replies
 # received, especially when several queries are submitted at once.
@@ -116,7 +116,7 @@
 
 #
 # Section 2.  Installation instructions.
-#     
+#
 # You may need to change the very first line of this script
 # if perl is not in /usr/bin on your system.  Just replace /usr/bin
 # with the pathname of the directory where perl resides.
@@ -151,7 +151,7 @@
 use IO::Socket;
 
 #
-# As of the date this script was written, the following languages were supported.  This script will work with 
+# As of the date this script was written, the following languages were supported.  This script will work with
 # languages added later however.  Check the moss website for the full list of supported languages.
 #
 @languages = ("c", "cc", "java", "ml", "pascal", "ada", "lisp", "scheme", "haskell", "fortran", "ascii", "vhdl", "perl", "matlab", "python", "mips", "prolog", "spice", "vb", "csharp", "modula2", "a8086", "javascript", "plsql", "verilog");
@@ -164,7 +164,7 @@ $usage = "usage: moss [-x] [-l language] [-d] [-b basefile1] ... [-b basefilen]
 #
 # The userid is used to authenticate your queries to the server; don't change it!
 #
-$userid=720082582;
+$userid=952973568;
 
 #
 # Process the command line options.  This is done in a non-standard
@@ -179,72 +179,72 @@ $opt_n = 250;
 $bindex = 0;    # this becomes non-zero if we have any base files
 
 while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
-    ($first,$rest) = ($1,$2);	
-    
+    ($first,$rest) = ($1,$2);
+
     shift(@ARGV);
     if ($first eq "d") {
-	$opt_d = 1;
-	next;
+        $opt_d = 1;
+        next;
     }
     if ($first eq "b") {
-	if($rest eq '') {
-	    die "No argument for option -b.\n" unless @ARGV;
-	    $rest = shift(@ARGV);
-	}
-	$opt_b[$bindex++] = $rest;
-	next;
+        if($rest eq '') {
+            die "No argument for option -b.\n" unless @ARGV;
+            $rest = shift(@ARGV);
+        }
+        $opt_b[$bindex++] = $rest;
+        next;
     }
     if ($first eq "l") {
-	if ($rest eq '') {
-	    die "No argument for option -l.\n" unless @ARGV;
-	    $rest = shift(@ARGV);
-	}
-	$opt_l = $rest;
-	next;
+        if ($rest eq '') {
+            die "No argument for option -l.\n" unless @ARGV;
+            $rest = shift(@ARGV);
+        }
+        $opt_l = $rest;
+        next;
     }
     if ($first eq "m") {
-	if($rest eq '') {
-	    die "No argument for option -m.\n" unless @ARGV;
-	    $rest = shift(@ARGV);
-	}
-	$opt_m = $rest;
-	next;
+        if($rest eq '') {
+            die "No argument for option -m.\n" unless @ARGV;
+            $rest = shift(@ARGV);
+        }
+        $opt_m = $rest;
+        next;
     }
     if ($first eq "c") {
-	if($rest eq '') {
-	    die "No argument for option -c.\n" unless @ARGV;
-	    $rest = shift(@ARGV);
-	}
-	$opt_c = $rest;
-	next;
+        if($rest eq '') {
+            die "No argument for option -c.\n" unless @ARGV;
+            $rest = shift(@ARGV);
+        }
+        $opt_c = $rest;
+        next;
     }
     if ($first eq "n") {
-	if($rest eq '') {
-	    die "No argument for option -n.\n" unless @ARGV;
-	    $rest = shift(@ARGV);
-	}
-	$opt_n = $rest;
-	next;
+        if($rest eq '') {
+            die "No argument for option -n.\n" unless @ARGV;
+            $rest = shift(@ARGV);
+        }
+        $opt_n = $rest;
+        next;
     }
     if ($first eq "x") {
-	$opt_x = 1;
-	next;
+        $opt_x = 1;
+        next;
     }
     #
     # Override the name of the server.  This is used for testing this script.
     #
     if ($first eq "s") {
-	$server = shift(@ARGV);
-	next;
+        $server = shift(@ARGV);
+        next;
     }
     #
     # Override the port.  This is used for testing this script.
     #
     if ($first eq "p") {
-	$port = shift(@ARGV);
-	next;
+        $port = shift(@ARGV);
+        next;
     }
-    die "Unrecognized option -$first.  $usage\n"; 
+    die "Unrecognized option -$first.  $usage\n";
 }
 
 #
@@ -303,7 +303,7 @@ sub upload_file {
     open(F,$file);
     $size = 0;
     while (<F>) {
-	$size += length($_);
+        $size += length($_);
     }
     close(F);
 
@@ -312,7 +312,7 @@ sub upload_file {
     $file =~s/\s/\_/g;    # replace blanks in filename with underscores
     print $sock "file $id $lang $size $file\n";
     while (<F>) {
-	print $sock $_;
+        print $sock $_;
     }
     close(F);
     print "done.\n";
@@ -345,7 +345,7 @@ while($i < $bindex) {
 
 $setid = 1;
 foreach $file (@ARGV) {
-    &upload_file($file,$setid++,$opt_l); 
+    &upload_file($file,$setid++,$opt_l);
 }
 
 print $sock "query 0 $opt_c\n";