chiark / gitweb /
Move coping with ENOENT into parse_info1 and allow it for master-info-v*.txt
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 10 Sep 2009 16:02:25 +0000 (17:02 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 10 Sep 2009 16:02:25 +0000 (17:02 +0100)
yarrg/Commods.pm

index 4d988db4ae7e28b854eac40330b9ecd4d84ebfbe..83d308e7b783337f59acb26ac73df837baafdc4f 100644 (file)
@@ -71,9 +71,13 @@ my (@rawcm, @nocm); # eg $rawcm[0]='fine rum'; $rawcm[1]='fine %c cloth'
 #  when extending the format of source-info in a non-backward
 #  compatible way, be sure to update update-master-info too.
 
-sub parse_info1 ($$) {
-    my ($mmfn,$src)= @_;
-    my $mm= new IO::File $mmfn, 'r' or die "$mmfn $!";
+sub parse_info1 ($$$) {
+    my ($mmfn,$src,$enoentok)= @_;
+    my $mm= new IO::File $mmfn, 'r';
+    if (!$mm) {
+       return if $enoentok && $!==&ENOENT;
+       die "$mmfn $!";
+    }
     my @ctx= ();
     while (<$mm>) {
        next if m/^\s*\#/;
@@ -179,13 +183,8 @@ sub parse_info_clientside () {
     my $yarrg= $ENV{'YPPSC_YARRG_DICT_UPDATE'};
     return unless $yarrg;
     my $master= fetch_with_rsync("info-v$masterinfoversion");
-    parse_info1($master,'s');
-    my $local= '_local-info.txt';
-    if (stat $local) {
-       parse_info1($local,'s');
-    } else {
-       die "$local $!" unless $! == &ENOENT;
-    }
+    parse_info1($master,'s',1);
+    parse_info1('_local-info.txt','s',1);
 }
 
 sub fetch_with_rsync ($) {
@@ -220,12 +219,12 @@ sub parse_info_maproutes ($$$) {
 }
 
 sub parse_info_serverside () {
-    parse_info1('source-info.txt','s');
+    parse_info1('source-info.txt','s',0);
 }
 sub parse_info_serverside_ocean ($) {
     my ($oceanname) = @_;
     die "unknown ocean $oceanname ?" unless exists $oceans{$oceanname};
-    parse_info1("_ocean-".(lc $oceanname).".txt",'s');
+    parse_info1("_ocean-".(lc $oceanname).".txt", 's',0);
 }
 
 sub parse_pctb_commodmap () {