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

version» Context lines:

pike.git/lib/modules/Calendar.pmod/Timezone.pmod:291:    int tz=z0-zl;    if (tz>86400/2) tz-=86400;    else if (tz<-86400/2) tz+=86400;   #if constant(tzname)    return ({tz,names[ll->isdst]});   #else    return ({tz,"local"});   #endif    }    -  string _sprintf(int t) { return (t=='O')?"Timezone.localtime()":0; } +  protected string _sprintf(int t) +  { +  return t=='O' && "Timezone.localtime()"; +  }       int raw_utc_offset(); // N/A but needed for interface   }      // ----------------------------------------------------------------   // magic timezones      class Timezone_Encapsule   {    Calendar.Rule.Timezone what;
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:330:    array z=what->tz_ux(unixtime);    return ({z[0]+extra_offset,z[1]+extra_name});    }       array(int) tz_jd(int julian_day)    {    array z=what->tz_jd(julian_day);    return ({z[0]+extra_offset,z[1]+extra_name});    }    -  string _sprintf(int t) +  protected string _sprintf(int t)    { -  return (t=='O')?sprintf("%O%s",what,extra_name || ""):0; +  return t=='O' && sprintf("%O%s",what,extra_name || "");    }       int raw_utc_offset() { return what->raw_utc_offset()+extra_offset; }   }      protected private Calendar.Rule.Timezone _make_new_timezone_i(string tz,    int plusminus)   {    Calendar.Rule.Timezone z=`[](tz);    if (!z) return UNDEFINED;
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:517:       class Shift    {    string dayrule;    int time;    string timetype;    int offset;    string s;    string comment;    -  void create(array a) +  protected void create(array a)    {    switch (sizeof(a))    {    case 5:    dayrule=think_day(a[0],a[1]);    comment=a[0]+" "+a[1];    // NB: The Morocco rule for 2011-07-31 has 0 as AT,    // while all others have 0:00.    [time,timetype] = parse_tod(a[2]) || ({ 0, "" });    switch (timetype)
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:544:    s=(a[4]=="-")?"":a[4];    break;    case 6:    [dayrule,comment,time,timetype,offset,s]=a;    break;    default:    error("illegal size of a\n");    }    }    -  string _sprintf(int t) +  protected string _sprintf(int t)    { -  return (t=='O')? +  return t=='O' &&    sprintf("Shift(%s,%d%s,%+d,%O)",    dayrule || "<unset>", time, -  timetype || "<unset>", offset, s): -  0; +  timetype || "<unset>", offset, s);    }       int `==(Shift other)    {    return ( dayrule==other->dayrule &&    time==other->time &&    timetype==other->timetype &&    offset==other->offset &&    s==other->s );    }
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:721:    mapping constants = all_constants() +    (["TZrules":Dummymodule(find_rule),    "TZRules":TZRules,    "TZHistory":TZHistory,    "Rule":Calendar.Rule,    "ZEROSHIFT":({0,0,0,""})    ]);       }();    -  class Rule +  class Rule (string id)    { -  string id; -  +     mapping rules=([]);       array(string) lines = ({});       int amt=0;    -  void create(string _id) { id=_id; } -  +     void add_line(string line)    {    lines += ({ line });    }       void add(string line)    {    array a= array_sscanf(line, replace("%s %s %s %s %s %s %s %[^\t ]",    " ","%*[ \t]"));   
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:980:    class Zone    {    string id;       array rules=({});       array(string) lines = ({});       array(string) aliases = ({});    -  void create(string _id) { +  protected void create(string _id) {    id=_id;    aliases = ({ id });    }       void add_alias(string zone_alias)    {    aliases += ({ zone_alias });    }       void add_line(string line)
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1165:       res+=({"array(string) zone_s=({"+    map((array)tzname,    lambda(string s) { return sprintf("%O",s); })*",",    "});\n",    "array(int) shifts=({"});    foreach (rules[..<1],array a)    res+=({a[5]+","});    res+=({"});\n",    sprintf( -  "string _sprintf(int t) { return (t=='O')?" -  "%O:0; }\n" +  "protected string _sprintf(int t) { return t=='O' &&" +  "%O; }\n"    "string zoneid=%O;\n","Rule.Timezone("+id+")",id)});       return res*"";    }       object compile()    {    string zone_name = id;    // werror("Compiling zone %O...\n", zone_name);      #ifdef RTTZC_TIMING    float t1=time(t);   #endif    -  +  rules = ({});    foreach(lines, string line) add(line);       string c=dump();      #ifdef RTTZC_TIMING    float td=time(t);    werror("dump %O: %O\n",zone_name,td-t1);    float td=time(t);   #endif      #ifdef RTTZC_DEBUG    werror("%s\n",c);   #endif       program p;    mixed err=catch { p=compile_string(c, 0, compile_handler); };    if (err)    {    int i=0;    foreach (c/"\n",string line) write("%2d: %s\n",++i,line); -  error(err); +  throw(err);    }    object zo=p();    if (zo->thezone) zo=zo->thezone;      #ifdef RTTZC_TIMING    float t3=time(t);    werror("compile %O: %O\n",zone_name,t3-td);   #endif    return zo;    }
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1440:    protected string tzformat (string s)    {    if (names)    {    if (s=="") return names[0]; else return names[1];    }    else    return sprintf(name,s);    }    -  protected void create(int offset,string _name) +  protected void create(int offset,string name)    {    offset_to_utc=offset; -  name=_name; +  this_program::name=name;    if (has_value(name, "/"))    {    names=name/"/";    }    }      // the Rule:   // which julian day does dst start and end this year?    protected array(array(string|int)) jd_year_periods(int jd);   
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1490:    array b=a[i+1];    if (jd<b[0]-1) break;    if (jd<b[0]+1 &&    ux<(b[0]-2440588)*86400+b[1]) break;    i++;    }       return ({offset_to_utc-a[i][2],tzformat(a[i][3])});    }    -  string _sprintf(int t) { return (t=='O')?"Rule.Timezone("+name+")":0; } +  protected string _sprintf(int t) +  { +  return t=='O' && "Rule.Timezone("+name+")"; +  }       int raw_utc_offset() { return offset_to_utc; }    }       class TZHistory    {    constant is_timezone=1;    constant is_dst_timezone=1;      // figure out what timezone to use