[Xfce4-commits] <orage:master> removed unneeded files, which the last commit missed todo.

Juha Kautto noreply at xfce.org
Tue Dec 14 14:32:02 CET 2010


Updating branch refs/heads/master
         to 5c50355dd9862699ce139be88c9795b7b1639255 (commit)
       from 670fc12dca29592a69480e19bd8e84f5ad054f37 (commit)

commit 5c50355dd9862699ce139be88c9795b7b1639255
Author: Juha Kautto <juha at xfce.org>
Date:   Tue Dec 14 15:31:18 2010 +0200

    removed unneeded files, which the last commit missed todo.

 globaltime/tz_zoneinfo_read.c   |  981 ---------------------------------------
 globaltime/tz_zoneinfo_read.h   |   36 --
 panel-plugin/tz_zoneinfo_read.c |  981 ---------------------------------------
 panel-plugin/tz_zoneinfo_read.h |   36 --
 4 files changed, 0 insertions(+), 2034 deletions(-)

diff --git a/globaltime/tz_zoneinfo_read.c b/globaltime/tz_zoneinfo_read.c
deleted file mode 100644
index 8196df8..0000000
--- a/globaltime/tz_zoneinfo_read.c
+++ /dev/null
@@ -1,981 +0,0 @@
-/*
- *
- * Copyright (c) 2008 Juha Kautto  (juha at xfce.org)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the 
-        Free Software Foundation
-        51 Franklin Street, 5th Floor
-        Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <error.h>
-#include <errno.h>
-    /* errno */
-
-#include <stdlib.h>
-    /* malloc, atoi, free, setenv */
-
-#include <stdio.h>
-    /* printf, fopen, fread, fclose, perror, rename */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-    /* stat, mkdir */
-
-#include <time.h>
-    /* localtime, gmtime, asctime */
-
-#include <string.h>
-    /* strncmp, strcmp, strlen, strncat, strncpy, strdup, strstr */
-
-#include "tz_zoneinfo_read.h"
-
-/* This define is needed to get nftw instead if ftw.
- * Documentation says the define is _XOPEN_SOURCE, but it
- * does not work. __USE_XOPEN_EXTENDED works 
- * Same with _GNU_SOURCE and __USE_GNU */
-/* #define _XOPEN_SOURCE 500 */
-#define __USE_XOPEN_EXTENDED 1
-#define _GNU_SOURCE 1
-#define __USE_GNU 1
-#include <ftw.h>
-    /* nftw */
-
-#define DEFAULT_OS_ZONEINFO_DIRECTORY  "/usr/share/zoneinfo"
-#define ZONETAB_FILE        "zone.tab"
-#define COUNTRY_FILE        "iso3166.tab"
-
-
-/** This is the toplevel directory where the timezone data is installed in. */
-#define ORAGE_ZONEINFO_DIRECTORY  PACKAGE_DATA_DIR "/orage/zoneinfo/"
-
-/** This is the filename of the file containing tz_convert parameters
- * This file contains the location of the os zoneinfo data.
- * the same than the above DEFAULT_OS_ZONEINFO_DIRECTORY */
-#define TZ_CONVERT_PAR_FILENAME  "tz_convert.par"
-#define TZ_CONVERT_PAR_FILE_LOC  ORAGE_ZONEINFO_DIRECTORY TZ_CONVERT_PAR_FILENAME
-
-/** This is the filename of the file containing orage ical timezone names */
-#define ICAL_ZONES_TAB_FILENAME  "zones.tab"
-#define ICAL_ZONES_TAB_FILE_LOC  ORAGE_ZONEINFO_DIRECTORY ICAL_ZONES_TAB_FILENAME
-
-
-
-/* this contains all timezone data */
-orage_timezone_array tz_array={0, NULL, NULL, NULL, NULL, NULL, NULL};
-
-static char *zone_tab_buf = NULL, *country_buf = NULL, *zones_tab_buf = NULL;
-
-static int debug = 0; /* bigger number => more output */
-static char version[] = "1.4.4";
-static int file_cnt = 0; /* number of processed files */
-
-static unsigned char *in_buf, *in_head, *in_tail;
-static int in_file_base_offset = 0;
-
-static int details;     /* show extra data (country and next change time) */
-static int check_ical;  /* check that we have also the ical timezone data */
-
-static char *in_file = NULL, *out_file = NULL;
-static int in_file_is_dir = 0;
-static int excl_dir_cnt = -1;
-static char **excl_dir = NULL;
-
-/* in_timezone_name is the real timezone name from the infile 
- * we are processing.
- * timezone_name is the timezone we are writing. Usually it is the same
- * than in_timezone_name. 
- * timezone_name is for example Europe/Helsinki */
-/* FIXME: we do not need both timezone_name and in_timezone_name here.
- * Remove one */
-static char *timezone_name = NULL;  
-static char *in_timezone_name = NULL;
-
-/* Ignore rules which are older or equal than this */
-static int ignore_older = 1970; 
-
-/* time change table starts here */
-static unsigned char *begin_timechanges;           
-
-/* time change type index table starts here */
-static unsigned char *begin_timechangetypeindexes; 
-
-/* time change type table starts here */
-static unsigned char *begin_timechangetypes;       
-
-/* timezone name table */
-static unsigned char *begin_timezonenames;         
-
-static unsigned long gmtcnt;
-static unsigned long stdcnt;
-static unsigned long leapcnt;
-static unsigned long timecnt;  /* points when time changes */
-static unsigned long typecnt;  /* table of different time changes = types */
-static unsigned long charcnt;  /* length of timezone name table */
-
-static void read_file(const char *file_name, const struct stat *file_stat)
-{
-    FILE *file;
-
-    if (debug > 1) {
-        printf("read_file: start\n");
-        printf("\n***** size of file %s is %d bytes *****\n\n", file_name
-                , (int)file_stat->st_size);
-    }
-    in_buf = malloc(file_stat->st_size);
-    in_head = in_buf;
-    in_tail = in_buf + file_stat->st_size - 1;
-    file = fopen(file_name, "r");
-    if (!fread(in_buf, 1, file_stat->st_size, file))
-        if (ferror(file)) {
-            printf("read_file: file read failed (%s)\n", file_name);
-            fclose(file);
-            perror("\tfread");
-            return;
-        }
-    fclose(file);
-    if (debug > 1)
-        printf("read_file: end\n");
-}
-
-static int get_long()
-{
-    int tmp;
-
-    tmp = (((int)in_head[0]<<24)
-         + ((int)in_head[1]<<16)
-         + ((int)in_head[2]<<8)
-         +  (int)in_head[3]);
-    in_head += 4;
-    return(tmp);
-}
-
-static int process_header()
-{
-    if (debug > 2)
-        printf("file id: %s\n", in_head);
-    if (strncmp((char *)in_head, "TZif", 4)) { /* we accept version 1 and 2 */
-        return(1);
-    }
-    /* header */
-    in_head += 4; /* type */
-    in_head += 16; /* reserved */
-    gmtcnt  = get_long();
-    if (debug > 2)
-        printf("gmtcnt=%lu \n", gmtcnt);
-    stdcnt  = get_long();
-    if (debug > 2)
-        printf("stdcnt=%lu \n", stdcnt);
-    leapcnt = get_long();
-    if (debug > 2)
-        printf("leapcnt=%lu \n", leapcnt);
-    timecnt = get_long();
-    if (debug > 2)
-        printf("number of time changes: timecnt=%lu \n", timecnt);
-    typecnt = get_long();
-    if (debug > 2)
-        printf("number of time change types: typecnt=%lu \n", typecnt);
-    charcnt = get_long();
-    if (debug > 2)
-        printf("lenght of different timezone names table: charcnt=%lu \n"
-                , charcnt);
-    return(0);
-}
-
-static void process_local_time_table()
-{ /* points when time changes */
-    time_t tmp;
-    int i;
-
-    begin_timechanges = in_head;
-    if (debug > 3)
-        printf("\n***** printing time change dates *****\n");
-    for (i = 0; i < timecnt; i++) {
-        tmp = get_long();
-        if (debug > 3) {
-            printf("GMT %d: %d =  %s", i, (int)tmp
-                    , asctime(gmtime((const time_t*)&tmp)));
-            printf("\tLOC %d: %d =  %s", i, (int)tmp
-                    , asctime(localtime((const time_t*)&tmp)));
-        }
-    }
-}
-
-static void process_local_time_type_table()
-{ /* pointers to table, which explain how time changes */
-    unsigned char tmp;
-    int i;
-
-    begin_timechangetypeindexes = in_head;
-    if (debug > 3)
-        printf("\n***** printing time change type indekses *****\n");
-    for (i = 0; i < timecnt; i++) { /* we need to walk over the table */
-        tmp = in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("type %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-static void process_ttinfo_table()
-{ /* table of different time changes = types */
-    long tmp;
-    unsigned char tmp2, tmp3;
-    int i;
-
-    begin_timechangetypes = in_head;
-    if (debug > 3)
-        printf("\n***** printing different time change types *****\n");
-    for (i = 0; i < typecnt; i++) { /* we need to walk over the table */
-        tmp = get_long();
-        tmp2 = in_head[0];
-        in_head++;
-        tmp3 = in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("%d: gmtoffset:%ld isdst:%d abbr:%d\n", i, tmp
-                    , (unsigned int)tmp2, (unsigned int)tmp3);
-    }
-}
-
-static void process_abbr_table()
-{
-    unsigned char *tmp;
-    int i;
-
-    begin_timezonenames = in_head;
-    if (debug > 3)
-        printf("\n***** printing different timezone names *****\n");
-    tmp = in_head;
-    for (i = 0; i < charcnt; i++) { /* we need to walk over the table */
-        if (debug > 3)
-            printf("Abbr:%d (%d)(%s)\n", i, (int)strlen((char *)(tmp + i))
-                    ,tmp + i);
-        i += strlen((char *)(tmp + i));
-    }
-    in_head += charcnt;
-}
-
-static void process_leap_table()
-{
-    unsigned long tmp, tmp2;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing leap time table *****\n");
-    for (i = 0; i < leapcnt; i++) { /* we need to walk over the table */
-        tmp = get_long();
-        tmp2 = get_long();
-        if (debug > 3)
-            printf("leaps %d: %lu =  %s (%lu)", i, tmp
-                    , asctime(localtime((const time_t *)&tmp)), tmp2);
-    }
-}
-
-static void process_std_table()
-{
-    unsigned char tmp;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing std table *****\n");
-    for (i = 0; i < stdcnt; i++) { /* we need to walk over the table */
-        tmp = (unsigned long)in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("stds %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-static void process_gmt_table()
-{
-    unsigned char tmp;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing gmt table *****\n");
-    for (i = 0; i < gmtcnt; i++) { /* we need to walk over the table */
-        tmp = (unsigned long)in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("gmts %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-/* go through the contents of the file and find the positions of 
- * needed data. Uses global pointer: in_head */
-static int process_file(const char *file_name)
-{
-    if (debug > 1)
-        printf("\n\nprocess_file: start\n");
-    if (process_header(file_name)) {
-        if (debug > 0)
-            printf("File (%s) does not look like tz file. Skipping it.\n"
-                    , file_name);
-        return(1);
-    }
-    process_local_time_table();
-    process_local_time_type_table();
-    process_ttinfo_table();
-    process_abbr_table();
-    process_leap_table();
-    process_std_table();
-    process_gmt_table();
-    if (debug > 1)
-        printf("\nprocess_file: end\n\n\n");
-    return(0); /* ok */
-}
-
-static void get_country()
-{ /* tz_array.city[tz_array.count] contains the city name.
-     We will find corresponding country and fill it to the table */
-    char *str, *str_nl, cc[4];
-
-    if (!(str = strstr(zone_tab_buf, tz_array.city[tz_array.count])))
-        return; /* not found */
-    /* we will find corresponding country code (2 char) 
-     * by going to the beginning of that line. */
-    for (str_nl = str; str_nl > zone_tab_buf && str_nl[0] != '\n'; str_nl--)
-        ;
-    /* now at the end of the previous line. 
-     * There are some comments in that file, but let's play it safe and check */
-    if (str_nl < zone_tab_buf)
-        return; /* not found */
-    /* now step one step forward and we are pointing to the country code */
-    tz_array.cc[tz_array.count] = malloc(2 + 1);
-    strncpy(tz_array.cc[tz_array.count], ++str_nl, 2);
-    tz_array.cc[tz_array.count][2] = '\0';
-
-    /********** then search the country **********/
-    /* Need to search line, which starts with country code.
-     * Note that it is not enough to search any country coed, but it really
-     * needs to be the first two chars in the line */
-    cc[0] = '\n';
-    cc[1] = tz_array.cc[tz_array.count][0];
-    cc[2] = tz_array.cc[tz_array.count][1];
-    cc[3] = '\0';
-    if (!(str = strstr(country_buf, cc)))
-        return; /* not found */
-    /* country name is after the country code and a single tab */
-    str += 4;
-    /* but we still need to find how long it is.
-     * It ends in the line end. 
-     * (There is a line end at the end of the file also.) */
-    for (str_nl = str; str_nl[0] != '\n'; str_nl++)
-        ;
-    tz_array.country[tz_array.count] = malloc((str_nl - str) + 1);
-    strncpy(tz_array.country[tz_array.count], str, (str_nl - str));
-    tz_array.country[tz_array.count][(str_nl - str)] = '\0';
-}
-
-static int timezone_exists_in_ical()
-{ /* in_timezone_name contains the timezone name.
-     We will search if it exists also in the ical zones.tab file */
-  /* new libical checks os zone.tab file, so we need to use that if using
-     that library instead of our own private libical */
-    char *str;
-
-#ifdef HAVE_LIBICAL
-    if ((str = strchr(in_timezone_name, '/')) 
-    &&  (str = strstr(zone_tab_buf, in_timezone_name)))
-        return(1); /* yes, it is there */
-    else
-        return(0); /* not found */
-#else
-    if (!zones_tab_buf)
-        return(0);
-    if ((str = strstr(zones_tab_buf, in_timezone_name)))
-        return(1); /* yes, it is there */
-    else
-        return(0); /* not found */
-#endif
-}
-
-/* FIXME: need to check that if OUTFILE is given as a parameter,
- * INFILE is not a directory (or make outfile to act like directory also ? */
-static int write_ical_file(const char *in_file_name
-        , const struct stat *in_file_stat)
-{
-    int i;
-    unsigned int tct_i, abbr_i;
-    struct tm cur_gm_time;
-    time_t tt_now = time(NULL);
-    long tc_time = 0, prev_tc_time; /* TimeChange times */
-    char s_next[101], s_prev[101];
-
-    if (debug > 1)
-        printf("***** write_ical_file: start *****\n\n");
-
-    tz_array.city[tz_array.count] = strdup(in_timezone_name);
-
-    tz_array.cc[tz_array.count] = NULL;
-    tz_array.country[tz_array.count] = NULL;
-    if (details)
-        get_country();
-
-    in_head = begin_timechanges;
-    for (i = 0; (i < timecnt) && (tc_time <= tt_now); i++) {
-        /* search for current time setting.
-         * timecnt tells how many changes we have in the tz file.
-         * i points to the next value to read. */
-        prev_tc_time = tc_time;
-        tc_time = get_long(); /* start time of this timechange */
-    }
-    /* i points to the next value to be read, so need to -- */
-    if (--i < 0 && typecnt == 0) { 
-        /* we failed to find any timechanges that have happened earlier than
-         * now and there are no changes defined, so use default UTC=GMT */
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = "UTC";
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.count++;
-        return(1); /* done */
-    }
-    if (tc_time > tt_now) {
-        /* we found previous and next value */
-        /* tc_time has the next change time */
-        if (details) {
-            /* NOTE: If the time change happens for example at 04:00
-             * and goes one hour backward, the new time is 03:00 and this
-             * is what localtime_r reports. In real life we want to show
-             * here 04:00, so let's subtract 1 sec to get close to that.
-             * This is a bit similar than 24:00 or 00:00. Summary:
-             * 04:00 is returned as 03:00 (change happened already) but
-             * 03:59 is returned as 03:59 (change did not yet happen) */
-            prev_tc_time -= 1;
-            localtime_r((const time_t *)&prev_tc_time, &cur_gm_time);
-            strftime(s_prev, 100, "%c", &cur_gm_time);
-            tz_array.prev[tz_array.count] = strdup(s_prev);
-
-            tc_time -= 1;
-            localtime_r((const time_t *)&tc_time, &cur_gm_time);
-            strftime(s_next, 100, "%c", &cur_gm_time);
-            tz_array.next[tz_array.count] = strdup(s_next);
-            /* get timechange type index */
-            if (timecnt) {
-                in_head = begin_timechangetypeindexes;
-                tct_i = (unsigned int)in_head[i];
-            }
-            else
-                tct_i = 0;
-
-            /* get timechange type */
-            in_head = begin_timechangetypes;
-            in_head += 6*tct_i;
-            tz_array.next_utc_offset[tz_array.count] = (int)get_long();
-        }
-        else {
-            tz_array.prev[tz_array.count] = NULL;
-            tz_array.next[tz_array.count] = NULL;
-        }
-        i--; /* we need to take the previous value */
-    }
-    else { /* no next value, but previous may exist */
-        tz_array.next[tz_array.count] = NULL;
-        if (details && prev_tc_time) {
-            prev_tc_time -= 1;
-            localtime_r((const time_t *)&prev_tc_time, &cur_gm_time);
-            strftime(s_prev, 100, "%c", &cur_gm_time);
-            tz_array.prev[tz_array.count] = strdup(s_prev);
-        }
-        else
-            tz_array.prev[tz_array.count] = NULL;
-    }
-
-    /* i now points to latest time change and shows current time.
-     * So we found our result and can start collecting real data: */
-
-    /* get timechange type index */
-    if (timecnt) {
-        in_head = begin_timechangetypeindexes;
-        tct_i = (unsigned int)in_head[i];
-    }
-    else 
-        tct_i = 0;
-
-    /* get timechange type */
-    in_head = begin_timechangetypes;
-    in_head += 6*tct_i;
-    tz_array.utc_offset[tz_array.count] = (int)get_long();
-    tz_array.dst[tz_array.count] = in_head[0];
-    abbr_i =  in_head[1];
-
-     /* get timezone name */
-    in_head = begin_timezonenames;
-    tz_array.tz[tz_array.count] = strdup((char *)in_head + abbr_i);
-
-    tz_array.count++;
-    if (debug > 1)
-        printf("\n***** write_ical_file: end *****\n\n\n");
-    return(0);
-}
-
-/* The main code. This is called once per each file found */
-static int file_call(const char *file_name, const struct stat *sb, int flags
-        , struct FTW *f)
-{
-    int i;
-
-    if (debug > 1)
-        printf("file_call: start\n");
-    file_cnt++;
-    /* we are only interested about files and directories we can access */
-    if (flags == FTW_F) { /* we got file */
-        if (debug > 0)
-            printf("\t\tfile_call: processing file=(%s)\n", file_name);
-        in_timezone_name = strdup(&file_name[in_file_base_offset
-                + strlen("zoneinfo/")]);
-        timezone_name = strdup(in_timezone_name);
-        if (check_ical && !timezone_exists_in_ical()) {
-            free(in_timezone_name);
-            free(timezone_name);
-            return(FTW_CONTINUE);
-        }
-        read_file(file_name, sb);
-        if (process_file(file_name)) { /* we skipped this file */
-            free(in_timezone_name);
-            free(timezone_name);
-            free(in_buf);
-            return(FTW_CONTINUE);
-        }
-        write_ical_file(file_name, sb);
-
-        free(in_buf);
-        free(out_file);
-        out_file = NULL;
-        free(in_timezone_name);
-        free(timezone_name);
-    }
-    else if (flags == FTW_D) { /* this is directory */
-        if (debug > 0)
-            printf("\tfile_call: processing directory=(%s)\n", file_name);
-        /* need to check if we have excluded directory */
-        for (i = 0; (i <= excl_dir_cnt) && excl_dir[i]; i++) {
-            if (strcmp(excl_dir[i],  file_name+f->base) == 0) {
-                if (debug > 0)
-                    printf("\t\tfile_call: skipping excluded directory (%s)\n"
-                            , file_name+f->base);
-                return(FTW_SKIP_SUBTREE);
-            }
-        }
-    }
-    else if (flags == FTW_SL) {
-        if (debug > 0) {
-            printf("\t\tfile_call: skipping symbolic link=(%s)\n", file_name);
-        }
-    }
-    else {
-        if (debug > 0) {
-            printf("\t\tfile_call: skipping inaccessible file=(%s)\n", file_name);
-        }
-    }
-
-    if (debug > 1)
-        printf("file_call: end\n");
-    return(FTW_CONTINUE);
-}
-
-/* check the parameters and use defaults when possible */
-static int check_parameters()
-{
-    char *s_tz, *last_tz = NULL, tz[]="/zoneinfo", tz2[]="zoneinfo/";
-    int tz_len, i;
-    struct stat in_stat;
-    FILE *par_file;
-    struct stat par_file_stat;
-
-    if (debug > 1)
-        printf("check_parameters: start\n");
-
-    in_file = NULL;
-    par_file = fopen(TZ_CONVERT_PAR_FILE_LOC, "r");
-    if (par_file != NULL) { /* does exist and no error */
-        if (stat(TZ_CONVERT_PAR_FILE_LOC, &par_file_stat) == -1) {
-            /* error reading the parameter file */
-            printf("check_parameters: in_file name not found from (%s) \n"
-                , TZ_CONVERT_PAR_FILE_LOC);
-            fclose(par_file);
-        }
-        else { /* no errors */
-            in_file = malloc(par_file_stat.st_size+1);
-            if (!fread(in_file, 1, par_file_stat.st_size, par_file)
-            && (ferror(par_file))) {
-                printf("check_parameters: error reading (%s)\n"
-                        , TZ_CONVERT_PAR_FILE_LOC);
-                free(in_file);
-                in_file = NULL;
-                fclose(par_file);
-            }
-            else { 
-                /* terminate with nul */
-                if (in_file[par_file_stat.st_size-1] == '\n')
-                    in_file[par_file_stat.st_size-1] = '\0';
-                else
-                    in_file[par_file_stat.st_size] = '\0';
-                /* test that it is fine */
-                if (stat(in_file, &par_file_stat) == -1) { /* error */
-                    printf("check_parameters: error reading (%s) (from %s)\n"
-                            , in_file, TZ_CONVERT_PAR_FILE_LOC);
-                    free(in_file);
-                    in_file = NULL;
-                }
-            }
-        }
-    }
-    if (in_file == NULL) /* in file not found */
-        in_file = strdup(DEFAULT_OS_ZONEINFO_DIRECTORY);
-
-    if (in_file[0] != '/') {
-        printf("check_parameters: in_file name (%s) is not absolute file name. Ending\n"
-                , in_file);
-        return(1);
-    }
-    if (stat(in_file, &in_stat) == -1) { /* error */
-        perror("\tcheck_parameters: stat");
-        return(2);
-    }
-    if (S_ISDIR(in_stat.st_mode)) {
-        in_file_is_dir = 1;
-        if (timezone_name) {
-            printf("\tcheck_parameters: when infile (%s) is directory, you can not specify timezone name (%s), but it is copied from each in file. Ending\n"
-                , in_file, timezone_name);
-            return(3);
-        }
-        if (out_file) {
-            printf("\tcheck_parameters: when infile (%s) is directory, you can not specify outfile name (%s), but it is copied from each in file. Ending\n"
-                , in_file, out_file);
-            return(3);
-        }
-    }
-    else {
-        in_file_is_dir = 0;
-        if (!S_ISREG(in_stat.st_mode)) {
-            printf("\tcheck_parameters: in_file (%s) is not directory nor normal file. Ending\n"
-                , in_file);
-            return(3);
-        }
-    }
-
-    /* find last "/zoneinfo" from the infile (directory) name. 
-     * Normally there is only one. 
-     * It needs to be at the end of the string or be followed by '/' */
-    tz_len = strlen(tz);
-    s_tz = in_file;
-    for (s_tz = strstr(s_tz, tz); s_tz != NULL; s_tz = strstr(s_tz, tz)) {
-        if (s_tz[tz_len] == '\0' || s_tz[tz_len] == '/')
-            last_tz = s_tz;
-        s_tz++;
-    }
-    if (last_tz == NULL) {
-        printf("check_parameters: in_file name (%s) does not contain (%s). Ending\n"
-                , in_file, tz);
-        return(4);
-    }
-
-    in_file_base_offset = last_tz - in_file + 1; /* skip '/' */
-
-    if (!in_file_is_dir) {
-        in_timezone_name = strdup(&in_file[in_file_base_offset + strlen(tz2)]);
-        if (timezone_name == NULL)
-            timezone_name = strdup(in_timezone_name);
-    }
-
-    if (excl_dir == NULL) { /* use default */
-        excl_dir_cnt = 5; /* just in case it was changed by parameter */
-        excl_dir = calloc(3, sizeof(char *));
-        excl_dir[0] = strdup("posix");
-        excl_dir[1] = strdup("right");
-    }
-
-    if (debug > 1) {
-        printf("\n***** Parameters *****\n");
-        printf("\tversion: %s\n", version);
-        printf("\tdebug level: %d\n", debug);
-        printf("\tyear limit: %d\n", ignore_older);
-        printf("\tinfile: (%s) %s\n", in_file
-                , in_file_is_dir ? "directory" : "normal file");
-        printf("\tinfile timezone: (%s)\n", in_timezone_name);
-        printf("\toutfile: (%s)\n", out_file);
-        printf("\toutfile timezone: (%s)\n", timezone_name);
-        printf("\tmaximum exclude directory count: (%d)\n", excl_dir_cnt);
-        for (i = 0; (i <= excl_dir_cnt) && excl_dir[i];i++)
-            printf("\t\texclude directory %d: (%s)\n"
-                    , i, excl_dir[i]);
-        printf("***** Parameters *****\n\n");
-    }
-
-    if (debug > 1)
-        printf("check_parameters: end\n");
-    return(0); /* continue */
-}
-
-static void read_os_timezones()
-{
-    char *tz_dir, *zone_tab_file_name;
-    int zoneinfo_len=strlen("zoneinfo/");
-    FILE *zone_tab_file;
-    struct stat zone_tab_file_stat;
-
-    /****** zone.tab file ******/
-    if (zone_tab_buf) {
-        return;
-    }
-    tz_dir = malloc(in_file_base_offset + zoneinfo_len + 1); /* '\0' */
-    strncpy(tz_dir, in_file, in_file_base_offset);
-    tz_dir[in_file_base_offset] = '\0'; 
-    strcat(tz_dir, "zoneinfo/"); /* now we have the base directory */
-
-    zone_tab_file_name = malloc(strlen(tz_dir) + strlen(ZONETAB_FILE) + 1);
-    strcpy(zone_tab_file_name, tz_dir);
-    strcat(zone_tab_file_name, ZONETAB_FILE);
-
-    free(tz_dir);
-
-    if (!(zone_tab_file = fopen(zone_tab_file_name, "r"))) {
-        printf("read_os_timezones: zone.tab file open failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(zone_tab_file_name, &zone_tab_file_stat) == -1) {
-        printf("read_os_timezones: zone.tab file stat failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        fclose(zone_tab_file);
-        perror("\tstat");
-        return;
-    }
-    zone_tab_buf = malloc(zone_tab_file_stat.st_size+1);
-    if (!fread(zone_tab_buf, 1, zone_tab_file_stat.st_size, zone_tab_file)
-    && (ferror(zone_tab_file))) {
-        printf("read_os_timezones: zone.tab file read failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        fclose(zone_tab_file);
-        perror("\tfread");
-        return;
-    }
-    zone_tab_buf[zone_tab_file_stat.st_size] = '\0';
-    free(zone_tab_file_name);
-    fclose(zone_tab_file);
-}
-
-static void read_countries()
-{
-    char *tz_dir, *country_file_name;
-    int zoneinfo_len=strlen("zoneinfo/");
-    FILE *country_file;
-    struct stat country_file_stat;
-
-    /****** country=iso3166.tab file ******/
-    tz_dir = malloc(in_file_base_offset + zoneinfo_len + 1); /* '\0' */
-    strncpy(tz_dir, in_file, in_file_base_offset);
-    tz_dir[in_file_base_offset] = '\0'; 
-    strcat(tz_dir, "zoneinfo/"); /* now we have the base directory */
-
-    country_file_name = malloc(strlen(tz_dir) + strlen(COUNTRY_FILE) + 1);
-    strcpy(country_file_name, tz_dir);
-    strcat(country_file_name, COUNTRY_FILE);
-
-    free(tz_dir);
-
-    if (country_buf) {
-        free(country_file_name);
-        return;
-    }
-    if (!(country_file = fopen(country_file_name, "r"))) {
-        printf("read_countries: iso3166.tab file open failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(country_file_name, &country_file_stat) == -1) {
-        printf("read_countries: iso3166.tab file stat failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        fclose(country_file);
-        perror("\tstat");
-        return;
-    }
-    country_buf = malloc(country_file_stat.st_size+1);
-    if (fread(country_buf, 1, country_file_stat.st_size, country_file)
-    && (ferror(country_file))) {
-        printf("read_countries: iso3166.tab file read failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        fclose(country_file);
-        perror("\tfread");
-        return;
-    }
-    country_buf[country_file_stat.st_size] = '\0';
-    free(country_file_name);
-    fclose(country_file);
-}
-
-#ifndef HAVE_LIBICAL
-static void read_ical_timezones()
-{
-    FILE *zones_tab_file;
-    struct stat zones_tab_file_stat;
-
-    /****** zones.tab file ******/
-    if (!(zones_tab_file = fopen(ICAL_ZONES_TAB_FILE_LOC, "r"))) {
-        printf("read_ical_timezones: zones.tab file open failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(ICAL_ZONES_TAB_FILE_LOC, &zones_tab_file_stat) == -1) {
-        printf("read_ical_timezones: zones.tab file stat failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        fclose(zones_tab_file);
-        perror("\tstat");
-        return;
-    }
-    zones_tab_buf = malloc(zones_tab_file_stat.st_size+1);
-    if (!fread(zones_tab_buf, 1, zones_tab_file_stat.st_size, zones_tab_file)
-    && (ferror(zones_tab_file))) {
-        printf("read_ical_timezones: zones.tab file read failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        perror("\tfread");
-        return;
-    }
-    zones_tab_buf[zones_tab_file_stat.st_size] = '\0';
-    fclose(zones_tab_file);
-}
-#endif
-
-orage_timezone_array get_orage_timezones(int show_details, int ical)
-{
-    int tz_array_size = 1000; /* FIXME: this needs to be counted */
-    /*
-     icalarray *tz_array;
-     icaltimezone *l_tz;
-     struct icaltimetype ctime;
-   */
-
-    details = show_details;
-    check_ical = ical;
-    if (tz_array.count == 0) {
-        tz_array.city = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.utc_offset = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.dst = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.tz = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.prev = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.next = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.next_utc_offset = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.country = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.cc = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        check_parameters();
-        if (debug > 0)
-            printf("Processing %s files\n", in_file);
-        if (details) {
-            read_os_timezones();
-            read_countries();
-        }
-        if (check_ical) {
-#ifdef HAVE_LIBICAL
-            read_os_timezones();
-#else
-            read_ical_timezones();
-#endif
-        }
-    /* nftw goes through the whole file structure and calls "file_call"
-     * with each file. It returns 0 when everything has been done and -1
-     * if it run into an error. */
-        if (nftw(in_file, file_call, 10, FTW_PHYS | FTW_ACTIONRETVAL) == -1) {
-            perror("nftw error in file handling");
-            exit(EXIT_FAILURE);
-        }
-        printf("Orage: Processed %d timezone files from (%s)\n"
-                , file_cnt, in_file);
-
-        free(in_file);
-
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = strdup("UTC");
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.country[tz_array.count] = NULL;
-        tz_array.cc[tz_array.count] = NULL;
-        tz_array.city[tz_array.count++] = strdup("UTC");
-
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = NULL;
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.country[tz_array.count] = NULL;
-        tz_array.cc[tz_array.count] = NULL;
-        tz_array.city[tz_array.count++] = strdup("floating");
-    }
-    return(tz_array);
-}
-
-void free_orage_timezones(int show_details)
-{
-    int i;
-
-    for (i = 0 ; i < tz_array.count; i++) {
-        if (tz_array.city[i])
-            free(tz_array.city[i]);
-        if (tz_array.tz[i])
-            free(tz_array.tz[i]);
-        if (tz_array.prev[i])
-            free(tz_array.prev[i]);
-        if (tz_array.next[i])
-            free(tz_array.next[i]);
-        if (tz_array.country[i])
-            free(tz_array.country[i]);
-        if (tz_array.cc[i])
-            free(tz_array.cc[i]);
-    }
-    free(tz_array.city);
-    free(tz_array.utc_offset);
-    free(tz_array.dst);
-    free(tz_array.tz);
-    free(tz_array.prev);
-    free(tz_array.next);
-    free(tz_array.next_utc_offset);
-    free(tz_array.country);
-    free(tz_array.cc);
-    tz_array.count = 0;
-    timezone_name = NULL;
-    if (zone_tab_buf) {
-        free(zone_tab_buf);
-        zone_tab_buf = NULL;
-    }
-    if (country_buf) {
-        free(country_buf);
-        country_buf = NULL;
-    }
-    if (zones_tab_buf) {
-        free(zones_tab_buf);
-        zones_tab_buf = NULL;
-    }
-    file_cnt = 0; /* number of processed files */
-}
diff --git a/globaltime/tz_zoneinfo_read.h b/globaltime/tz_zoneinfo_read.h
deleted file mode 100644
index 7b5c634..0000000
--- a/globaltime/tz_zoneinfo_read.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*  xfce4
- *  Copyright (C) 2006-2007 Juha Kautto (juha at xfce.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This pibrary is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-typedef struct _orage_timezone_array
-{
-    int    count;     /* how many timezones we have */
-    char **city;      /* pointer to timezone location name strings */
-    int  *utc_offset; /* pointer to int array holding utc offsets */
-    int  *dst;        /* pointer to int array holding dst settings */
-    char **tz;        /* pointer to timezone name strings */
-    char **prev;      /* pointer to previous time change strings */
-    char **next;      /* pointer to next time change strings */
-    int  *next_utc_offset; /* pointer to int array holding utc offsets */
-    char **country;   /* pointer to country name strings */
-    char **cc;        /* pointer to country code strings */
-} orage_timezone_array;
-
-orage_timezone_array get_orage_timezones(int details, int ical);
-void free_orage_timezones(int details);
diff --git a/panel-plugin/tz_zoneinfo_read.c b/panel-plugin/tz_zoneinfo_read.c
deleted file mode 100644
index 8196df8..0000000
--- a/panel-plugin/tz_zoneinfo_read.c
+++ /dev/null
@@ -1,981 +0,0 @@
-/*
- *
- * Copyright (c) 2008 Juha Kautto  (juha at xfce.org)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the 
-        Free Software Foundation
-        51 Franklin Street, 5th Floor
-        Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <error.h>
-#include <errno.h>
-    /* errno */
-
-#include <stdlib.h>
-    /* malloc, atoi, free, setenv */
-
-#include <stdio.h>
-    /* printf, fopen, fread, fclose, perror, rename */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-    /* stat, mkdir */
-
-#include <time.h>
-    /* localtime, gmtime, asctime */
-
-#include <string.h>
-    /* strncmp, strcmp, strlen, strncat, strncpy, strdup, strstr */
-
-#include "tz_zoneinfo_read.h"
-
-/* This define is needed to get nftw instead if ftw.
- * Documentation says the define is _XOPEN_SOURCE, but it
- * does not work. __USE_XOPEN_EXTENDED works 
- * Same with _GNU_SOURCE and __USE_GNU */
-/* #define _XOPEN_SOURCE 500 */
-#define __USE_XOPEN_EXTENDED 1
-#define _GNU_SOURCE 1
-#define __USE_GNU 1
-#include <ftw.h>
-    /* nftw */
-
-#define DEFAULT_OS_ZONEINFO_DIRECTORY  "/usr/share/zoneinfo"
-#define ZONETAB_FILE        "zone.tab"
-#define COUNTRY_FILE        "iso3166.tab"
-
-
-/** This is the toplevel directory where the timezone data is installed in. */
-#define ORAGE_ZONEINFO_DIRECTORY  PACKAGE_DATA_DIR "/orage/zoneinfo/"
-
-/** This is the filename of the file containing tz_convert parameters
- * This file contains the location of the os zoneinfo data.
- * the same than the above DEFAULT_OS_ZONEINFO_DIRECTORY */
-#define TZ_CONVERT_PAR_FILENAME  "tz_convert.par"
-#define TZ_CONVERT_PAR_FILE_LOC  ORAGE_ZONEINFO_DIRECTORY TZ_CONVERT_PAR_FILENAME
-
-/** This is the filename of the file containing orage ical timezone names */
-#define ICAL_ZONES_TAB_FILENAME  "zones.tab"
-#define ICAL_ZONES_TAB_FILE_LOC  ORAGE_ZONEINFO_DIRECTORY ICAL_ZONES_TAB_FILENAME
-
-
-
-/* this contains all timezone data */
-orage_timezone_array tz_array={0, NULL, NULL, NULL, NULL, NULL, NULL};
-
-static char *zone_tab_buf = NULL, *country_buf = NULL, *zones_tab_buf = NULL;
-
-static int debug = 0; /* bigger number => more output */
-static char version[] = "1.4.4";
-static int file_cnt = 0; /* number of processed files */
-
-static unsigned char *in_buf, *in_head, *in_tail;
-static int in_file_base_offset = 0;
-
-static int details;     /* show extra data (country and next change time) */
-static int check_ical;  /* check that we have also the ical timezone data */
-
-static char *in_file = NULL, *out_file = NULL;
-static int in_file_is_dir = 0;
-static int excl_dir_cnt = -1;
-static char **excl_dir = NULL;
-
-/* in_timezone_name is the real timezone name from the infile 
- * we are processing.
- * timezone_name is the timezone we are writing. Usually it is the same
- * than in_timezone_name. 
- * timezone_name is for example Europe/Helsinki */
-/* FIXME: we do not need both timezone_name and in_timezone_name here.
- * Remove one */
-static char *timezone_name = NULL;  
-static char *in_timezone_name = NULL;
-
-/* Ignore rules which are older or equal than this */
-static int ignore_older = 1970; 
-
-/* time change table starts here */
-static unsigned char *begin_timechanges;           
-
-/* time change type index table starts here */
-static unsigned char *begin_timechangetypeindexes; 
-
-/* time change type table starts here */
-static unsigned char *begin_timechangetypes;       
-
-/* timezone name table */
-static unsigned char *begin_timezonenames;         
-
-static unsigned long gmtcnt;
-static unsigned long stdcnt;
-static unsigned long leapcnt;
-static unsigned long timecnt;  /* points when time changes */
-static unsigned long typecnt;  /* table of different time changes = types */
-static unsigned long charcnt;  /* length of timezone name table */
-
-static void read_file(const char *file_name, const struct stat *file_stat)
-{
-    FILE *file;
-
-    if (debug > 1) {
-        printf("read_file: start\n");
-        printf("\n***** size of file %s is %d bytes *****\n\n", file_name
-                , (int)file_stat->st_size);
-    }
-    in_buf = malloc(file_stat->st_size);
-    in_head = in_buf;
-    in_tail = in_buf + file_stat->st_size - 1;
-    file = fopen(file_name, "r");
-    if (!fread(in_buf, 1, file_stat->st_size, file))
-        if (ferror(file)) {
-            printf("read_file: file read failed (%s)\n", file_name);
-            fclose(file);
-            perror("\tfread");
-            return;
-        }
-    fclose(file);
-    if (debug > 1)
-        printf("read_file: end\n");
-}
-
-static int get_long()
-{
-    int tmp;
-
-    tmp = (((int)in_head[0]<<24)
-         + ((int)in_head[1]<<16)
-         + ((int)in_head[2]<<8)
-         +  (int)in_head[3]);
-    in_head += 4;
-    return(tmp);
-}
-
-static int process_header()
-{
-    if (debug > 2)
-        printf("file id: %s\n", in_head);
-    if (strncmp((char *)in_head, "TZif", 4)) { /* we accept version 1 and 2 */
-        return(1);
-    }
-    /* header */
-    in_head += 4; /* type */
-    in_head += 16; /* reserved */
-    gmtcnt  = get_long();
-    if (debug > 2)
-        printf("gmtcnt=%lu \n", gmtcnt);
-    stdcnt  = get_long();
-    if (debug > 2)
-        printf("stdcnt=%lu \n", stdcnt);
-    leapcnt = get_long();
-    if (debug > 2)
-        printf("leapcnt=%lu \n", leapcnt);
-    timecnt = get_long();
-    if (debug > 2)
-        printf("number of time changes: timecnt=%lu \n", timecnt);
-    typecnt = get_long();
-    if (debug > 2)
-        printf("number of time change types: typecnt=%lu \n", typecnt);
-    charcnt = get_long();
-    if (debug > 2)
-        printf("lenght of different timezone names table: charcnt=%lu \n"
-                , charcnt);
-    return(0);
-}
-
-static void process_local_time_table()
-{ /* points when time changes */
-    time_t tmp;
-    int i;
-
-    begin_timechanges = in_head;
-    if (debug > 3)
-        printf("\n***** printing time change dates *****\n");
-    for (i = 0; i < timecnt; i++) {
-        tmp = get_long();
-        if (debug > 3) {
-            printf("GMT %d: %d =  %s", i, (int)tmp
-                    , asctime(gmtime((const time_t*)&tmp)));
-            printf("\tLOC %d: %d =  %s", i, (int)tmp
-                    , asctime(localtime((const time_t*)&tmp)));
-        }
-    }
-}
-
-static void process_local_time_type_table()
-{ /* pointers to table, which explain how time changes */
-    unsigned char tmp;
-    int i;
-
-    begin_timechangetypeindexes = in_head;
-    if (debug > 3)
-        printf("\n***** printing time change type indekses *****\n");
-    for (i = 0; i < timecnt; i++) { /* we need to walk over the table */
-        tmp = in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("type %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-static void process_ttinfo_table()
-{ /* table of different time changes = types */
-    long tmp;
-    unsigned char tmp2, tmp3;
-    int i;
-
-    begin_timechangetypes = in_head;
-    if (debug > 3)
-        printf("\n***** printing different time change types *****\n");
-    for (i = 0; i < typecnt; i++) { /* we need to walk over the table */
-        tmp = get_long();
-        tmp2 = in_head[0];
-        in_head++;
-        tmp3 = in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("%d: gmtoffset:%ld isdst:%d abbr:%d\n", i, tmp
-                    , (unsigned int)tmp2, (unsigned int)tmp3);
-    }
-}
-
-static void process_abbr_table()
-{
-    unsigned char *tmp;
-    int i;
-
-    begin_timezonenames = in_head;
-    if (debug > 3)
-        printf("\n***** printing different timezone names *****\n");
-    tmp = in_head;
-    for (i = 0; i < charcnt; i++) { /* we need to walk over the table */
-        if (debug > 3)
-            printf("Abbr:%d (%d)(%s)\n", i, (int)strlen((char *)(tmp + i))
-                    ,tmp + i);
-        i += strlen((char *)(tmp + i));
-    }
-    in_head += charcnt;
-}
-
-static void process_leap_table()
-{
-    unsigned long tmp, tmp2;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing leap time table *****\n");
-    for (i = 0; i < leapcnt; i++) { /* we need to walk over the table */
-        tmp = get_long();
-        tmp2 = get_long();
-        if (debug > 3)
-            printf("leaps %d: %lu =  %s (%lu)", i, tmp
-                    , asctime(localtime((const time_t *)&tmp)), tmp2);
-    }
-}
-
-static void process_std_table()
-{
-    unsigned char tmp;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing std table *****\n");
-    for (i = 0; i < stdcnt; i++) { /* we need to walk over the table */
-        tmp = (unsigned long)in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("stds %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-static void process_gmt_table()
-{
-    unsigned char tmp;
-    int i;
-
-    if (debug > 3)
-        printf("\n***** printing gmt table *****\n");
-    for (i = 0; i < gmtcnt; i++) { /* we need to walk over the table */
-        tmp = (unsigned long)in_head[0];
-        in_head++;
-        if (debug > 3)
-            printf("gmts %d: %d\n", i, (unsigned int)tmp);
-    }
-}
-
-/* go through the contents of the file and find the positions of 
- * needed data. Uses global pointer: in_head */
-static int process_file(const char *file_name)
-{
-    if (debug > 1)
-        printf("\n\nprocess_file: start\n");
-    if (process_header(file_name)) {
-        if (debug > 0)
-            printf("File (%s) does not look like tz file. Skipping it.\n"
-                    , file_name);
-        return(1);
-    }
-    process_local_time_table();
-    process_local_time_type_table();
-    process_ttinfo_table();
-    process_abbr_table();
-    process_leap_table();
-    process_std_table();
-    process_gmt_table();
-    if (debug > 1)
-        printf("\nprocess_file: end\n\n\n");
-    return(0); /* ok */
-}
-
-static void get_country()
-{ /* tz_array.city[tz_array.count] contains the city name.
-     We will find corresponding country and fill it to the table */
-    char *str, *str_nl, cc[4];
-
-    if (!(str = strstr(zone_tab_buf, tz_array.city[tz_array.count])))
-        return; /* not found */
-    /* we will find corresponding country code (2 char) 
-     * by going to the beginning of that line. */
-    for (str_nl = str; str_nl > zone_tab_buf && str_nl[0] != '\n'; str_nl--)
-        ;
-    /* now at the end of the previous line. 
-     * There are some comments in that file, but let's play it safe and check */
-    if (str_nl < zone_tab_buf)
-        return; /* not found */
-    /* now step one step forward and we are pointing to the country code */
-    tz_array.cc[tz_array.count] = malloc(2 + 1);
-    strncpy(tz_array.cc[tz_array.count], ++str_nl, 2);
-    tz_array.cc[tz_array.count][2] = '\0';
-
-    /********** then search the country **********/
-    /* Need to search line, which starts with country code.
-     * Note that it is not enough to search any country coed, but it really
-     * needs to be the first two chars in the line */
-    cc[0] = '\n';
-    cc[1] = tz_array.cc[tz_array.count][0];
-    cc[2] = tz_array.cc[tz_array.count][1];
-    cc[3] = '\0';
-    if (!(str = strstr(country_buf, cc)))
-        return; /* not found */
-    /* country name is after the country code and a single tab */
-    str += 4;
-    /* but we still need to find how long it is.
-     * It ends in the line end. 
-     * (There is a line end at the end of the file also.) */
-    for (str_nl = str; str_nl[0] != '\n'; str_nl++)
-        ;
-    tz_array.country[tz_array.count] = malloc((str_nl - str) + 1);
-    strncpy(tz_array.country[tz_array.count], str, (str_nl - str));
-    tz_array.country[tz_array.count][(str_nl - str)] = '\0';
-}
-
-static int timezone_exists_in_ical()
-{ /* in_timezone_name contains the timezone name.
-     We will search if it exists also in the ical zones.tab file */
-  /* new libical checks os zone.tab file, so we need to use that if using
-     that library instead of our own private libical */
-    char *str;
-
-#ifdef HAVE_LIBICAL
-    if ((str = strchr(in_timezone_name, '/')) 
-    &&  (str = strstr(zone_tab_buf, in_timezone_name)))
-        return(1); /* yes, it is there */
-    else
-        return(0); /* not found */
-#else
-    if (!zones_tab_buf)
-        return(0);
-    if ((str = strstr(zones_tab_buf, in_timezone_name)))
-        return(1); /* yes, it is there */
-    else
-        return(0); /* not found */
-#endif
-}
-
-/* FIXME: need to check that if OUTFILE is given as a parameter,
- * INFILE is not a directory (or make outfile to act like directory also ? */
-static int write_ical_file(const char *in_file_name
-        , const struct stat *in_file_stat)
-{
-    int i;
-    unsigned int tct_i, abbr_i;
-    struct tm cur_gm_time;
-    time_t tt_now = time(NULL);
-    long tc_time = 0, prev_tc_time; /* TimeChange times */
-    char s_next[101], s_prev[101];
-
-    if (debug > 1)
-        printf("***** write_ical_file: start *****\n\n");
-
-    tz_array.city[tz_array.count] = strdup(in_timezone_name);
-
-    tz_array.cc[tz_array.count] = NULL;
-    tz_array.country[tz_array.count] = NULL;
-    if (details)
-        get_country();
-
-    in_head = begin_timechanges;
-    for (i = 0; (i < timecnt) && (tc_time <= tt_now); i++) {
-        /* search for current time setting.
-         * timecnt tells how many changes we have in the tz file.
-         * i points to the next value to read. */
-        prev_tc_time = tc_time;
-        tc_time = get_long(); /* start time of this timechange */
-    }
-    /* i points to the next value to be read, so need to -- */
-    if (--i < 0 && typecnt == 0) { 
-        /* we failed to find any timechanges that have happened earlier than
-         * now and there are no changes defined, so use default UTC=GMT */
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = "UTC";
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.count++;
-        return(1); /* done */
-    }
-    if (tc_time > tt_now) {
-        /* we found previous and next value */
-        /* tc_time has the next change time */
-        if (details) {
-            /* NOTE: If the time change happens for example at 04:00
-             * and goes one hour backward, the new time is 03:00 and this
-             * is what localtime_r reports. In real life we want to show
-             * here 04:00, so let's subtract 1 sec to get close to that.
-             * This is a bit similar than 24:00 or 00:00. Summary:
-             * 04:00 is returned as 03:00 (change happened already) but
-             * 03:59 is returned as 03:59 (change did not yet happen) */
-            prev_tc_time -= 1;
-            localtime_r((const time_t *)&prev_tc_time, &cur_gm_time);
-            strftime(s_prev, 100, "%c", &cur_gm_time);
-            tz_array.prev[tz_array.count] = strdup(s_prev);
-
-            tc_time -= 1;
-            localtime_r((const time_t *)&tc_time, &cur_gm_time);
-            strftime(s_next, 100, "%c", &cur_gm_time);
-            tz_array.next[tz_array.count] = strdup(s_next);
-            /* get timechange type index */
-            if (timecnt) {
-                in_head = begin_timechangetypeindexes;
-                tct_i = (unsigned int)in_head[i];
-            }
-            else
-                tct_i = 0;
-
-            /* get timechange type */
-            in_head = begin_timechangetypes;
-            in_head += 6*tct_i;
-            tz_array.next_utc_offset[tz_array.count] = (int)get_long();
-        }
-        else {
-            tz_array.prev[tz_array.count] = NULL;
-            tz_array.next[tz_array.count] = NULL;
-        }
-        i--; /* we need to take the previous value */
-    }
-    else { /* no next value, but previous may exist */
-        tz_array.next[tz_array.count] = NULL;
-        if (details && prev_tc_time) {
-            prev_tc_time -= 1;
-            localtime_r((const time_t *)&prev_tc_time, &cur_gm_time);
-            strftime(s_prev, 100, "%c", &cur_gm_time);
-            tz_array.prev[tz_array.count] = strdup(s_prev);
-        }
-        else
-            tz_array.prev[tz_array.count] = NULL;
-    }
-
-    /* i now points to latest time change and shows current time.
-     * So we found our result and can start collecting real data: */
-
-    /* get timechange type index */
-    if (timecnt) {
-        in_head = begin_timechangetypeindexes;
-        tct_i = (unsigned int)in_head[i];
-    }
-    else 
-        tct_i = 0;
-
-    /* get timechange type */
-    in_head = begin_timechangetypes;
-    in_head += 6*tct_i;
-    tz_array.utc_offset[tz_array.count] = (int)get_long();
-    tz_array.dst[tz_array.count] = in_head[0];
-    abbr_i =  in_head[1];
-
-     /* get timezone name */
-    in_head = begin_timezonenames;
-    tz_array.tz[tz_array.count] = strdup((char *)in_head + abbr_i);
-
-    tz_array.count++;
-    if (debug > 1)
-        printf("\n***** write_ical_file: end *****\n\n\n");
-    return(0);
-}
-
-/* The main code. This is called once per each file found */
-static int file_call(const char *file_name, const struct stat *sb, int flags
-        , struct FTW *f)
-{
-    int i;
-
-    if (debug > 1)
-        printf("file_call: start\n");
-    file_cnt++;
-    /* we are only interested about files and directories we can access */
-    if (flags == FTW_F) { /* we got file */
-        if (debug > 0)
-            printf("\t\tfile_call: processing file=(%s)\n", file_name);
-        in_timezone_name = strdup(&file_name[in_file_base_offset
-                + strlen("zoneinfo/")]);
-        timezone_name = strdup(in_timezone_name);
-        if (check_ical && !timezone_exists_in_ical()) {
-            free(in_timezone_name);
-            free(timezone_name);
-            return(FTW_CONTINUE);
-        }
-        read_file(file_name, sb);
-        if (process_file(file_name)) { /* we skipped this file */
-            free(in_timezone_name);
-            free(timezone_name);
-            free(in_buf);
-            return(FTW_CONTINUE);
-        }
-        write_ical_file(file_name, sb);
-
-        free(in_buf);
-        free(out_file);
-        out_file = NULL;
-        free(in_timezone_name);
-        free(timezone_name);
-    }
-    else if (flags == FTW_D) { /* this is directory */
-        if (debug > 0)
-            printf("\tfile_call: processing directory=(%s)\n", file_name);
-        /* need to check if we have excluded directory */
-        for (i = 0; (i <= excl_dir_cnt) && excl_dir[i]; i++) {
-            if (strcmp(excl_dir[i],  file_name+f->base) == 0) {
-                if (debug > 0)
-                    printf("\t\tfile_call: skipping excluded directory (%s)\n"
-                            , file_name+f->base);
-                return(FTW_SKIP_SUBTREE);
-            }
-        }
-    }
-    else if (flags == FTW_SL) {
-        if (debug > 0) {
-            printf("\t\tfile_call: skipping symbolic link=(%s)\n", file_name);
-        }
-    }
-    else {
-        if (debug > 0) {
-            printf("\t\tfile_call: skipping inaccessible file=(%s)\n", file_name);
-        }
-    }
-
-    if (debug > 1)
-        printf("file_call: end\n");
-    return(FTW_CONTINUE);
-}
-
-/* check the parameters and use defaults when possible */
-static int check_parameters()
-{
-    char *s_tz, *last_tz = NULL, tz[]="/zoneinfo", tz2[]="zoneinfo/";
-    int tz_len, i;
-    struct stat in_stat;
-    FILE *par_file;
-    struct stat par_file_stat;
-
-    if (debug > 1)
-        printf("check_parameters: start\n");
-
-    in_file = NULL;
-    par_file = fopen(TZ_CONVERT_PAR_FILE_LOC, "r");
-    if (par_file != NULL) { /* does exist and no error */
-        if (stat(TZ_CONVERT_PAR_FILE_LOC, &par_file_stat) == -1) {
-            /* error reading the parameter file */
-            printf("check_parameters: in_file name not found from (%s) \n"
-                , TZ_CONVERT_PAR_FILE_LOC);
-            fclose(par_file);
-        }
-        else { /* no errors */
-            in_file = malloc(par_file_stat.st_size+1);
-            if (!fread(in_file, 1, par_file_stat.st_size, par_file)
-            && (ferror(par_file))) {
-                printf("check_parameters: error reading (%s)\n"
-                        , TZ_CONVERT_PAR_FILE_LOC);
-                free(in_file);
-                in_file = NULL;
-                fclose(par_file);
-            }
-            else { 
-                /* terminate with nul */
-                if (in_file[par_file_stat.st_size-1] == '\n')
-                    in_file[par_file_stat.st_size-1] = '\0';
-                else
-                    in_file[par_file_stat.st_size] = '\0';
-                /* test that it is fine */
-                if (stat(in_file, &par_file_stat) == -1) { /* error */
-                    printf("check_parameters: error reading (%s) (from %s)\n"
-                            , in_file, TZ_CONVERT_PAR_FILE_LOC);
-                    free(in_file);
-                    in_file = NULL;
-                }
-            }
-        }
-    }
-    if (in_file == NULL) /* in file not found */
-        in_file = strdup(DEFAULT_OS_ZONEINFO_DIRECTORY);
-
-    if (in_file[0] != '/') {
-        printf("check_parameters: in_file name (%s) is not absolute file name. Ending\n"
-                , in_file);
-        return(1);
-    }
-    if (stat(in_file, &in_stat) == -1) { /* error */
-        perror("\tcheck_parameters: stat");
-        return(2);
-    }
-    if (S_ISDIR(in_stat.st_mode)) {
-        in_file_is_dir = 1;
-        if (timezone_name) {
-            printf("\tcheck_parameters: when infile (%s) is directory, you can not specify timezone name (%s), but it is copied from each in file. Ending\n"
-                , in_file, timezone_name);
-            return(3);
-        }
-        if (out_file) {
-            printf("\tcheck_parameters: when infile (%s) is directory, you can not specify outfile name (%s), but it is copied from each in file. Ending\n"
-                , in_file, out_file);
-            return(3);
-        }
-    }
-    else {
-        in_file_is_dir = 0;
-        if (!S_ISREG(in_stat.st_mode)) {
-            printf("\tcheck_parameters: in_file (%s) is not directory nor normal file. Ending\n"
-                , in_file);
-            return(3);
-        }
-    }
-
-    /* find last "/zoneinfo" from the infile (directory) name. 
-     * Normally there is only one. 
-     * It needs to be at the end of the string or be followed by '/' */
-    tz_len = strlen(tz);
-    s_tz = in_file;
-    for (s_tz = strstr(s_tz, tz); s_tz != NULL; s_tz = strstr(s_tz, tz)) {
-        if (s_tz[tz_len] == '\0' || s_tz[tz_len] == '/')
-            last_tz = s_tz;
-        s_tz++;
-    }
-    if (last_tz == NULL) {
-        printf("check_parameters: in_file name (%s) does not contain (%s). Ending\n"
-                , in_file, tz);
-        return(4);
-    }
-
-    in_file_base_offset = last_tz - in_file + 1; /* skip '/' */
-
-    if (!in_file_is_dir) {
-        in_timezone_name = strdup(&in_file[in_file_base_offset + strlen(tz2)]);
-        if (timezone_name == NULL)
-            timezone_name = strdup(in_timezone_name);
-    }
-
-    if (excl_dir == NULL) { /* use default */
-        excl_dir_cnt = 5; /* just in case it was changed by parameter */
-        excl_dir = calloc(3, sizeof(char *));
-        excl_dir[0] = strdup("posix");
-        excl_dir[1] = strdup("right");
-    }
-
-    if (debug > 1) {
-        printf("\n***** Parameters *****\n");
-        printf("\tversion: %s\n", version);
-        printf("\tdebug level: %d\n", debug);
-        printf("\tyear limit: %d\n", ignore_older);
-        printf("\tinfile: (%s) %s\n", in_file
-                , in_file_is_dir ? "directory" : "normal file");
-        printf("\tinfile timezone: (%s)\n", in_timezone_name);
-        printf("\toutfile: (%s)\n", out_file);
-        printf("\toutfile timezone: (%s)\n", timezone_name);
-        printf("\tmaximum exclude directory count: (%d)\n", excl_dir_cnt);
-        for (i = 0; (i <= excl_dir_cnt) && excl_dir[i];i++)
-            printf("\t\texclude directory %d: (%s)\n"
-                    , i, excl_dir[i]);
-        printf("***** Parameters *****\n\n");
-    }
-
-    if (debug > 1)
-        printf("check_parameters: end\n");
-    return(0); /* continue */
-}
-
-static void read_os_timezones()
-{
-    char *tz_dir, *zone_tab_file_name;
-    int zoneinfo_len=strlen("zoneinfo/");
-    FILE *zone_tab_file;
-    struct stat zone_tab_file_stat;
-
-    /****** zone.tab file ******/
-    if (zone_tab_buf) {
-        return;
-    }
-    tz_dir = malloc(in_file_base_offset + zoneinfo_len + 1); /* '\0' */
-    strncpy(tz_dir, in_file, in_file_base_offset);
-    tz_dir[in_file_base_offset] = '\0'; 
-    strcat(tz_dir, "zoneinfo/"); /* now we have the base directory */
-
-    zone_tab_file_name = malloc(strlen(tz_dir) + strlen(ZONETAB_FILE) + 1);
-    strcpy(zone_tab_file_name, tz_dir);
-    strcat(zone_tab_file_name, ZONETAB_FILE);
-
-    free(tz_dir);
-
-    if (!(zone_tab_file = fopen(zone_tab_file_name, "r"))) {
-        printf("read_os_timezones: zone.tab file open failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(zone_tab_file_name, &zone_tab_file_stat) == -1) {
-        printf("read_os_timezones: zone.tab file stat failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        fclose(zone_tab_file);
-        perror("\tstat");
-        return;
-    }
-    zone_tab_buf = malloc(zone_tab_file_stat.st_size+1);
-    if (!fread(zone_tab_buf, 1, zone_tab_file_stat.st_size, zone_tab_file)
-    && (ferror(zone_tab_file))) {
-        printf("read_os_timezones: zone.tab file read failed (%s)\n"
-                , zone_tab_file_name);
-        free(zone_tab_file_name);
-        fclose(zone_tab_file);
-        perror("\tfread");
-        return;
-    }
-    zone_tab_buf[zone_tab_file_stat.st_size] = '\0';
-    free(zone_tab_file_name);
-    fclose(zone_tab_file);
-}
-
-static void read_countries()
-{
-    char *tz_dir, *country_file_name;
-    int zoneinfo_len=strlen("zoneinfo/");
-    FILE *country_file;
-    struct stat country_file_stat;
-
-    /****** country=iso3166.tab file ******/
-    tz_dir = malloc(in_file_base_offset + zoneinfo_len + 1); /* '\0' */
-    strncpy(tz_dir, in_file, in_file_base_offset);
-    tz_dir[in_file_base_offset] = '\0'; 
-    strcat(tz_dir, "zoneinfo/"); /* now we have the base directory */
-
-    country_file_name = malloc(strlen(tz_dir) + strlen(COUNTRY_FILE) + 1);
-    strcpy(country_file_name, tz_dir);
-    strcat(country_file_name, COUNTRY_FILE);
-
-    free(tz_dir);
-
-    if (country_buf) {
-        free(country_file_name);
-        return;
-    }
-    if (!(country_file = fopen(country_file_name, "r"))) {
-        printf("read_countries: iso3166.tab file open failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(country_file_name, &country_file_stat) == -1) {
-        printf("read_countries: iso3166.tab file stat failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        fclose(country_file);
-        perror("\tstat");
-        return;
-    }
-    country_buf = malloc(country_file_stat.st_size+1);
-    if (fread(country_buf, 1, country_file_stat.st_size, country_file)
-    && (ferror(country_file))) {
-        printf("read_countries: iso3166.tab file read failed (%s)\n"
-                , country_file_name);
-        free(country_file_name);
-        fclose(country_file);
-        perror("\tfread");
-        return;
-    }
-    country_buf[country_file_stat.st_size] = '\0';
-    free(country_file_name);
-    fclose(country_file);
-}
-
-#ifndef HAVE_LIBICAL
-static void read_ical_timezones()
-{
-    FILE *zones_tab_file;
-    struct stat zones_tab_file_stat;
-
-    /****** zones.tab file ******/
-    if (!(zones_tab_file = fopen(ICAL_ZONES_TAB_FILE_LOC, "r"))) {
-        printf("read_ical_timezones: zones.tab file open failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        perror("\tfopen");
-        return;
-    }
-    if (stat(ICAL_ZONES_TAB_FILE_LOC, &zones_tab_file_stat) == -1) {
-        printf("read_ical_timezones: zones.tab file stat failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        fclose(zones_tab_file);
-        perror("\tstat");
-        return;
-    }
-    zones_tab_buf = malloc(zones_tab_file_stat.st_size+1);
-    if (!fread(zones_tab_buf, 1, zones_tab_file_stat.st_size, zones_tab_file)
-    && (ferror(zones_tab_file))) {
-        printf("read_ical_timezones: zones.tab file read failed (%s)\n"
-                , ICAL_ZONES_TAB_FILE_LOC);
-        perror("\tfread");
-        return;
-    }
-    zones_tab_buf[zones_tab_file_stat.st_size] = '\0';
-    fclose(zones_tab_file);
-}
-#endif
-
-orage_timezone_array get_orage_timezones(int show_details, int ical)
-{
-    int tz_array_size = 1000; /* FIXME: this needs to be counted */
-    /*
-     icalarray *tz_array;
-     icaltimezone *l_tz;
-     struct icaltimetype ctime;
-   */
-
-    details = show_details;
-    check_ical = ical;
-    if (tz_array.count == 0) {
-        tz_array.city = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.utc_offset = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.dst = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.tz = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.prev = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.next = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.next_utc_offset = (int *)malloc(sizeof(int)*(tz_array_size+2));
-        tz_array.country = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        tz_array.cc = (char **)malloc(sizeof(char *)*(tz_array_size+2));
-        check_parameters();
-        if (debug > 0)
-            printf("Processing %s files\n", in_file);
-        if (details) {
-            read_os_timezones();
-            read_countries();
-        }
-        if (check_ical) {
-#ifdef HAVE_LIBICAL
-            read_os_timezones();
-#else
-            read_ical_timezones();
-#endif
-        }
-    /* nftw goes through the whole file structure and calls "file_call"
-     * with each file. It returns 0 when everything has been done and -1
-     * if it run into an error. */
-        if (nftw(in_file, file_call, 10, FTW_PHYS | FTW_ACTIONRETVAL) == -1) {
-            perror("nftw error in file handling");
-            exit(EXIT_FAILURE);
-        }
-        printf("Orage: Processed %d timezone files from (%s)\n"
-                , file_cnt, in_file);
-
-        free(in_file);
-
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = strdup("UTC");
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.country[tz_array.count] = NULL;
-        tz_array.cc[tz_array.count] = NULL;
-        tz_array.city[tz_array.count++] = strdup("UTC");
-
-        tz_array.utc_offset[tz_array.count] = 0;
-        tz_array.dst[tz_array.count] = 0;
-        tz_array.tz[tz_array.count] = NULL;
-        tz_array.prev[tz_array.count] = NULL;
-        tz_array.next[tz_array.count] = NULL;
-        tz_array.next_utc_offset[tz_array.count] = 0;
-        tz_array.country[tz_array.count] = NULL;
-        tz_array.cc[tz_array.count] = NULL;
-        tz_array.city[tz_array.count++] = strdup("floating");
-    }
-    return(tz_array);
-}
-
-void free_orage_timezones(int show_details)
-{
-    int i;
-
-    for (i = 0 ; i < tz_array.count; i++) {
-        if (tz_array.city[i])
-            free(tz_array.city[i]);
-        if (tz_array.tz[i])
-            free(tz_array.tz[i]);
-        if (tz_array.prev[i])
-            free(tz_array.prev[i]);
-        if (tz_array.next[i])
-            free(tz_array.next[i]);
-        if (tz_array.country[i])
-            free(tz_array.country[i]);
-        if (tz_array.cc[i])
-            free(tz_array.cc[i]);
-    }
-    free(tz_array.city);
-    free(tz_array.utc_offset);
-    free(tz_array.dst);
-    free(tz_array.tz);
-    free(tz_array.prev);
-    free(tz_array.next);
-    free(tz_array.next_utc_offset);
-    free(tz_array.country);
-    free(tz_array.cc);
-    tz_array.count = 0;
-    timezone_name = NULL;
-    if (zone_tab_buf) {
-        free(zone_tab_buf);
-        zone_tab_buf = NULL;
-    }
-    if (country_buf) {
-        free(country_buf);
-        country_buf = NULL;
-    }
-    if (zones_tab_buf) {
-        free(zones_tab_buf);
-        zones_tab_buf = NULL;
-    }
-    file_cnt = 0; /* number of processed files */
-}
diff --git a/panel-plugin/tz_zoneinfo_read.h b/panel-plugin/tz_zoneinfo_read.h
deleted file mode 100644
index 7b5c634..0000000
--- a/panel-plugin/tz_zoneinfo_read.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*  xfce4
- *  Copyright (C) 2006-2007 Juha Kautto (juha at xfce.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This pibrary is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-typedef struct _orage_timezone_array
-{
-    int    count;     /* how many timezones we have */
-    char **city;      /* pointer to timezone location name strings */
-    int  *utc_offset; /* pointer to int array holding utc offsets */
-    int  *dst;        /* pointer to int array holding dst settings */
-    char **tz;        /* pointer to timezone name strings */
-    char **prev;      /* pointer to previous time change strings */
-    char **next;      /* pointer to next time change strings */
-    int  *next_utc_offset; /* pointer to int array holding utc offsets */
-    char **country;   /* pointer to country name strings */
-    char **cc;        /* pointer to country code strings */
-} orage_timezone_array;
-
-orage_timezone_array get_orage_timezones(int details, int ical);
-void free_orage_timezones(int details);



More information about the Xfce4-commits mailing list