pike.git / lib / modules / Calendar.pmod / mkrules.pike

version» Context lines:

pike.git/lib/modules/Calendar.pmod/mkrules.pike:3:   // ftp://elsie.nci.nih.gov/pub/   // (timezone mailing list: tz@elsie.nci.nih.gov)   //   // source datafile are usually found somewhere around zic(8),   // if they exist in the system.   //   // Most systems only have compiled files, just like pike,   // and zic(8) is the usual compiler.      // pike mkrules.pike ../data/{africa,antarctica,asia,australasia,backward,etcetera,europe,northamerica,pacificnew,southamerica,systemv} - // $Id: mkrules.pike,v 1.4 2000/09/28 03:38:37 hubbe Exp $ + // $Id: mkrules.pike,v 1.5 2000/10/21 06:28:15 nilsson Exp $      #pike __REAL_VERSION__      object cal=Calendar.ISO->set_timezone("UTC");   function Year=cal->Year;   object nleapy=Year(1999);      object tzrules; // needed to make timezones, compiled below      mapping rules=([]);
pike.git/lib/modules/Calendar.pmod/mkrules.pike:318:       string dump()    {    mapping r2=([]);    Shift last=Shift(({"0","?",0,"u",0,"?"}));    Shift first=last;    string res="";       if (!r2[NUL_YEAR]) r2[NUL_YEAR]=({last});    -  int y=min(@indices(rules)); -  for (;y<=INF_YEAR; y++) +  for (int y=min(@indices(rules));y<=INF_YEAR; y++)    [r2[y],last]=mkperiods(rules[y],last,first);       res+=("class "+    FIXID(id)+"\n"    "{\n"    " inherit TZRules;\n"    " static array(array(string|int)) jd_year_periods(int jd)\n"    " {\n"    " [int y,int yjd,int leap]=gregorian_yjd(jd);\n"    " switch (y)\n"    " {\n");       string s="",t;    -  int y,mn=min(@indices(rules-(<NUL_YEAR>))); +  int mn=min(@indices(rules-(<NUL_YEAR>)));    -  for (y=INF_YEAR;sizeof(r2);y--) +  for (int y=INF_YEAR;sizeof(r2);y--)    if (r2[y])    {    array z=r2[y];    multiset my=(<y>);       foreach (indices(r2),int y2)    if (join_periods(z,r2[y2],y,y2))    my[y2]=1;       foreach ((array)my,int y2) m_delete(r2,y2);
pike.git/lib/modules/Calendar.pmod/mkrules.pike:459:       void create(string _id) { id=_id; }       void add(string line)    {    array a= array_sscanf(line, replace("%s %s %s %s",    " ","%*[ \t]"));    if (sizeof(a)<4)    complain("parse error\n");    -  array a=({parse_offset(a[0]), // offset +  a=({parse_offset(a[0]), // offset    a[1], // rule or added offset    a[2], // string    a[3],    0, 0, "tz", 0}); // until    a[5]=rule_shift(a);    a[4]=clone_rule(a);       rules+=({a});    }   
pike.git/lib/modules/Calendar.pmod/mkrules.pike:600:    {    if (!a[5]) a[5]=rule_shift(a);       string s="";    sscanf(a[3],"%s#%*[ \t]%s",a[3],s);    a[3]="from "+reverse(array_sscanf(reverse(a[3]),"%*[ \t]%s")[0]);    a[7]=s;    }       array last=rules[-1]; -  int n=sizeof(rules); +  n=sizeof(rules);    foreach (reverse(rules)[1..],array a)    {    res+=sprintf(" if (ux>=%s) // %s %s\n"    " return %s || (%s=%s);\n",    a[5],a[3],last[7],last[6],last[6],last[4]);    n--;    last=a;    }    if (last[7]!="")    res+=sprintf(" // %s\n",last[7]);
pike.git/lib/modules/Calendar.pmod/mkrules.pike:738:    }    };    if (err) if (stringp(err)) error(err); else throw(err);       t+=("\n"    "// "+"-"*70+"\n"    "// Timezones with an attitude\n"    "// "+"-"*70+"\n"    "\n");    -  mixed err=catch { +  err=catch {    foreach (azones,Zone z)    if (sizeof(z->rules)!=1)    {    t+=z->dump();    if (links[z->id])    foreach(links[z->id],string s)    t+="constant "+FIXID(s)+"="+    FIXID(z->id)+";\n";    t+="\n";    }