jpilot-1.8.2/0000775000175000017500000000000012340262141010021 500000000000000jpilot-1.8.2/todo_gui.c0000664000175000017500000024245312340261240011727 00000000000000/******************************************************************************* * todo_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include "todo.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "password.h" #include "print.h" #include "export.h" #include "stock_buttons.h" /********************************* Constants **********************************/ #define TODO_MAX_COLUMN_LEN 80 #define MAX_RADIO_BUTTON_LEN 100 #define NUM_TODO_PRIORITIES 5 #define NUM_TODO_CAT_ITEMS 16 #define NUM_TODO_CSV_FIELDS 8 #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 /* RFCs use CRLF for Internet newline */ #define CRLF "\x0D\x0A" /******************************* Global vars **********************************/ /* Keeps track of whether code is using ToDo, or Tasks database * 0 is ToDo, 1 is Tasks */ static long todo_version=0; extern GtkWidget *glob_date_label; extern int glob_date_timer_tag; static GtkWidget *clist; static GtkWidget *todo_desc, *todo_note; static GObject *todo_desc_buffer, *todo_note_buffer; static GtkWidget *todo_completed_checkbox; static GtkWidget *private_checkbox; static struct tm due_date; static GtkWidget *due_date_button; static GtkWidget *todo_no_due_date_checkbox; static GtkWidget *radio_button_todo[NUM_TODO_PRIORITIES]; /* Need two extra slots for the ALL category and Edit Categories... */ static GtkWidget *todo_cat_menu_item1[NUM_TODO_CAT_ITEMS+2]; static GtkWidget *todo_cat_menu_item2[NUM_TODO_CAT_ITEMS]; static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *undelete_record_button; static GtkWidget *copy_record_button; static GtkWidget *cancel_record_button; static GtkWidget *category_menu1; static GtkWidget *category_menu2; static GtkWidget *pane; static GtkWidget *note_pane; static ToDoList *glob_todo_list=NULL; static ToDoList *export_todo_list=NULL; static struct sorted_cats sort_l[NUM_TODO_CAT_ITEMS]; static struct ToDoAppInfo todo_app_info; static int todo_category=CATEGORY_ALL; static int clist_col_selected; static int clist_row_selected; static int record_changed; /****************************** Prototypes ************************************/ static int todo_clear_details(void); static int todo_clist_redraw(void); static int todo_find(void); static void cb_add_new_record(GtkWidget *widget, gpointer data); static void connect_changed_signals(int con_or_dis); /****************************** Main Code *************************************/ /* Called once on initialization of GUI */ static void init(void) { time_t ltime; struct tm *now; long ivalue; time(<ime); now = localtime(<ime); memcpy(&due_date, now, sizeof(struct tm)); get_pref(PREF_TODO_DAYS_TILL_DUE, &ivalue, NULL); add_days_to_date(&due_date, ivalue); clist_row_selected = 0; clist_col_selected = 1; record_changed = CLEAR_FLAG; } static void update_due_button(GtkWidget *button, struct tm *t) { const char *short_date; char str[255]; if (t) { get_pref(PREF_SHORTDATE, NULL, &short_date); strftime(str, sizeof(str), short_date, t); gtk_label_set_text(GTK_LABEL(GTK_BIN(button)->child), str); } else { gtk_label_set_text(GTK_LABEL(GTK_BIN(button)->child), _("No Date")); } } static void cb_cal_dialog(GtkWidget *widget, gpointer data) { long fdow; int r = 0; struct tm t; GtkWidget *Pcheck_button; GtkWidget *Pbutton; Pcheck_button = todo_no_due_date_checkbox; memcpy(&t, &due_date, sizeof(t)); Pbutton = due_date_button; get_pref(PREF_FDOW, &fdow, NULL); r = cal_dialog(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Due Date"), fdow, &(t.tm_mon), &(t.tm_mday), &(t.tm_year)); if (r==CAL_DONE) { mktime(&t); memcpy(&due_date, &t, sizeof(due_date)); if (Pcheck_button) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Pcheck_button), FALSE); /* The above call sets due_date forward by n days, so we correct it */ memcpy(&due_date, &t, sizeof(due_date)); update_due_button(Pbutton, &t); } if (Pbutton) { update_due_button(Pbutton, &t); } } } int todo_print(void) { long this_many; MyToDo *mtodo; ToDoList *todo_list; ToDoList todo_list1; get_pref(PREF_PRINT_THIS_MANY, &this_many, NULL); todo_list=NULL; if (this_many==1) { mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mtodo < (MyToDo *)CLIST_MIN_DATA) { return EXIT_FAILURE; } memcpy(&(todo_list1.mtodo), mtodo, sizeof(MyToDo)); todo_list1.next=NULL; todo_list = &todo_list1; } if (this_many==2) { get_todos2(&todo_list, SORT_ASCENDING, 2, 2, 2, 2, todo_category); } if (this_many==3) { get_todos2(&todo_list, SORT_ASCENDING, 2, 2, 2, 2, CATEGORY_ALL); } print_todos(todo_list, PN); if ((this_many==2) || (this_many==3)) { free_ToDoList(&todo_list); } return EXIT_SUCCESS; } static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case NEW_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(undelete_record_button); break; case UNDELETE_FLAG: gtk_widget_show(undelete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(delete_record_button); break; default: return; } record_changed=new_state; } static void cb_record_changed(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if (GTK_CLIST(clist)->rows > 0) { set_new_button_to(MODIFY_FLAG); } else { set_new_button_to(NEW_FLAG); } } else if (record_changed==UNDELETE_FLAG) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is deleted.\n" "Undelete it or copy it to make changes.\n")); } } static void connect_changed_signals(int con_or_dis) { int i; static int connected=0; /* CONNECT */ if ((con_or_dis==CONNECT_SIGNALS) && (!connected)) { connected=1; for (i=0; iindefinite) { strcpy(due, "Never"); } else { get_pref(PREF_SHORTDATE, NULL, &short_date); strftime(due, sizeof(due), short_date, &(todo->due)); } complete=todo->complete ? yes : no; description=todo->description ? todo->description : empty; note=todo->note ? todo->note : empty; g_snprintf(text, len, "Due: %s\nPriority: %d\nComplete: %s\n\ Description: %s\nNote: %s\n", due, todo->priority, complete, description, note); return EXIT_SUCCESS; } /* * Start Import Code */ static int cb_todo_import(GtkWidget *parent_window, const char *file_path, int type) { FILE *in; char text[65536]; char description[65536]; char note[65536]; struct ToDo new_todo; unsigned char attrib; int i, ret, index; int import_all; ToDoList *todolist; ToDoList *temp_todolist; struct CategoryAppInfo cai; char old_cat_name[32]; int suggested_cat_num; int new_cat_num; int priv, indefinite, priority, completed; int year, month, day; in=fopen(file_path, "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), file_path); return EXIT_FAILURE; } /* CSV */ if (type==IMPORT_TYPE_CSV) { jp_logf(JP_LOG_DEBUG, "Todo import CSV [%s]\n", file_path); /* Get the first line containing the format and check for reasonableness */ if (fgets(text, sizeof(text), in) == NULL) { jp_logf(JP_LOG_WARN, "fgets failed %s %d\n", __FILE__, __LINE__); } ret = verify_csv_header(text, NUM_TODO_CSV_FIELDS, file_path); if (EXIT_FAILURE == ret) return EXIT_FAILURE; import_all=FALSE; while (1) { /* Read the category field */ ret = read_csv_field(in, text, sizeof(text)); if (feof(in)) break; #ifdef JPILOT_DEBUG printf("category is [%s]\n", text); #endif g_strlcpy(old_cat_name, text, 16); attrib=0; /* Figure out what the best category number is */ suggested_cat_num=0; for (i=0; inext) { index=temp_todolist->mtodo.unique_id-1; if (index<0) { g_strlcpy(old_cat_name, _("Unfiled"), 16); index=0; } else { g_strlcpy(old_cat_name, cai.name[index], 16); } /* Figure out what category it was in the dat file */ index=temp_todolist->mtodo.unique_id-1; suggested_cat_num=0; if (index>-1) { for (i=0; imtodo.todo), text, sizeof(text)); if (!import_all) { ret=import_record_ask(parent_window, pane, text, &(todo_app_info.category), old_cat_name, (temp_todolist->mtodo.attrib & 0x10), suggested_cat_num, &new_cat_num); } else { new_cat_num=suggested_cat_num; } if (ret==DIALOG_SAID_IMPORT_QUIT) break; if (ret==DIALOG_SAID_IMPORT_SKIP) continue; if (ret==DIALOG_SAID_IMPORT_ALL) import_all=TRUE; attrib = (new_cat_num & 0x0F) | ((temp_todolist->mtodo.attrib & 0x10) ? dlpRecAttrSecret : 0); if ((ret==DIALOG_SAID_IMPORT_YES) || (import_all)) { pc_todo_write(&(temp_todolist->mtodo.todo), NEW_PC_REC, attrib, NULL); } } free_ToDoList(&todolist); } todo_refresh(); fclose(in); return EXIT_SUCCESS; } int todo_import(GtkWidget *window) { char *type_desc[] = { N_("CSV (Comma Separated Values)"), N_("DAT/TDA (Palm Archive Formats)"), NULL }; int type_int[] = { IMPORT_TYPE_CSV, IMPORT_TYPE_DAT, 0 }; /* Hide ABA import of TaskDB until file format has been decoded */ /* FIXME: Uncomment when support for Tasks has been added if (todo_version==1) { type_desc[1] = NULL; type_int[1] = 0; } */ import_gui(window, pane, type_desc, type_int, cb_todo_import); return EXIT_SUCCESS; } /* * End Import Code */ /* * Start Export code */ static void cb_todo_export_ok(GtkWidget *export_window, GtkWidget *clist, int type, const char *filename) { MyToDo *mtodo; GList *list, *temp_list; FILE *out; struct stat statb; int i, r; const char *short_date; time_t ltime; struct tm *now = NULL; char *button_text[]={N_("OK")}; char *button_overwrite_text[]={N_("No"), N_("Yes")}; char text[1024]; char date_string[1024]; char str1[256], str2[256]; char pref_time[40]; char csv_text[65550]; char *p; gchar *end; char username[256]; char hostname[256]; const char *svalue; long userid; long char_set; char *utf; /* Open file for export, including corner cases where file exists or * can't be opened */ if (!stat(filename, &statb)) { if (S_ISDIR(statb.st_mode)) { g_snprintf(text, sizeof(text), _("%s is a directory"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } g_snprintf(text, sizeof(text), _("Do you want to overwrite file %s?"), filename); r = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_QUESTION, text, 2, button_overwrite_text); if (r!=DIALOG_SAID_2) { return; } } out = fopen(filename, "w"); if (!out) { g_snprintf(text, sizeof(text), _("Error opening file: %s"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } /* Write a header for TEXT file */ if (type == EXPORT_TYPE_TEXT) { get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(date_string, sizeof(date_string), "%s %s", str1, str2); fprintf(out, _("ToDo exported from %s %s on %s\n\n"), PN,VERSION,date_string); } /* Write a header to the CSV file */ if (type == EXPORT_TYPE_CSV) { fprintf(out, "CSV todo version "VERSION": Category, Private, Indefinite, Due Date, Priority, Completed, ToDo Text, Note\n"); } /* Special setup for ICAL export */ if (type == EXPORT_TYPE_ICALENDAR) { get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set < CHAR_SET_UTF) { jp_logf(JP_LOG_WARN, _("Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n")); } get_pref(PREF_USER, NULL, &svalue); /* Convert User Name stored in Palm character set */ g_strlcpy(text, svalue, 128); text[127] = '\0'; charset_p2j(text, 128, char_set); str_to_ical_str(username, sizeof(username), text); get_pref(PREF_USER_ID, &userid, NULL); gethostname(text, sizeof(hostname)); text[sizeof(hostname)-1]='\0'; str_to_ical_str(hostname, sizeof(hostname), text); time(<ime); now = gmtime(<ime); } get_pref(PREF_CHAR_SET, &char_set, NULL); list=GTK_CLIST(clist)->selection; for (i=0, temp_list=list; temp_list; temp_list = temp_list->next, i++) { mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mtodo) { continue; jp_logf(JP_LOG_WARN, _("Can't export todo %d\n"), (long) temp_list->data + 1); } switch (type) { case EXPORT_TYPE_CSV: utf = charset_p2newj(todo_app_info.category.name[mtodo->attrib & 0x0F], 16, char_set); str_to_csv_str(csv_text, utf); fprintf(out, "\"%s\",", csv_text); g_free(utf); fprintf(out, "\"%s\",", (mtodo->attrib & dlpRecAttrSecret) ? "1":"0"); fprintf(out, "\"%s\",", mtodo->todo.indefinite ? "1":"0"); if (mtodo->todo.indefinite) { fprintf(out, "\"\","); } else { strftime(text, sizeof(text), "%Y/%02m/%02d", &(mtodo->todo.due)); fprintf(out, "\"%s\",", text); } fprintf(out, "\"%d\",", mtodo->todo.priority); fprintf(out, "\"%s\",", mtodo->todo.complete ? "1":"0"); if (mtodo->todo.description) { str_to_csv_str(csv_text, mtodo->todo.description); fprintf(out, "\"%s\",", csv_text); } else { fprintf(out, "\"\","); } if (mtodo->todo.note) { str_to_csv_str(csv_text, mtodo->todo.note); fprintf(out, "\"%s\"\n", csv_text); } else { fprintf(out, "\"\","); } break; case EXPORT_TYPE_TEXT: utf = charset_p2newj(todo_app_info.category.name[mtodo->attrib & 0x0F], 16, char_set); fprintf(out, _("Category: %s\n"), utf); g_free(utf); fprintf(out, _("Private: %s\n"), (mtodo->attrib & dlpRecAttrSecret) ? _("Yes"):_("No")); if (mtodo->todo.indefinite) { fprintf(out, _("Due Date: None\n")); } else { strftime(text, sizeof(text), short_date, &(mtodo->todo.due)); fprintf(out, _("Due Date: %s\n"), text); } fprintf(out, _("Priority: %d\n"), mtodo->todo.priority); fprintf(out, _("Completed: %s\n"), mtodo->todo.complete ? _("Yes"):_("No")); if (mtodo->todo.description) { fprintf(out, _("Description: %s\n"), mtodo->todo.description); } if (mtodo->todo.note) { fprintf(out, _("Note: %s\n\n"), mtodo->todo.note); } break; case EXPORT_TYPE_ICALENDAR: /* RFC 2445: Internet Calendaring and Scheduling Core * Object Specification */ if (i == 0) { fprintf(out, "BEGIN:VCALENDAR"CRLF); fprintf(out, "VERSION:2.0"CRLF); fprintf(out, "PRODID:%s"CRLF, FPI_STRING); } fprintf(out, "BEGIN:VTODO"CRLF); if (mtodo->attrib & dlpRecAttrSecret) { fprintf(out, "CLASS:PRIVATE"CRLF); } fprintf(out, "UID:palm-todo-%08x-%08lx-%s@%s"CRLF, mtodo->unique_id, userid, username, hostname); fprintf(out, "DTSTAMP:%04d%02d%02dT%02d%02d%02dZ"CRLF, now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); str_to_ical_str(text, sizeof(text), todo_app_info.category.name[mtodo->attrib & 0x0F]); fprintf(out, "CATEGORIES:%s"CRLF, text); if (mtodo->todo.description) { g_strlcpy(str1, mtodo->todo.description, 51); /* truncate the string on a UTF-8 character boundary */ if (char_set > CHAR_SET_UTF) { if (!g_utf8_validate(str1, -1, (const gchar **)&end)) *end = 0; } } else { /* Handle pathological case with null description. */ str1[0] = '\0'; } if ((p = strchr(str1, '\n'))) { *p = '\0'; } str_to_ical_str(text, sizeof(text), str1); fprintf(out, "SUMMARY:%s%s"CRLF, text, strlen(str1) > 49 ? "..." : ""); str_to_ical_str(text, sizeof(text), mtodo->todo.description); fprintf(out, "DESCRIPTION:%s", text); if (mtodo->todo.note && mtodo->todo.note[0]) { str_to_ical_str(text, sizeof(text), mtodo->todo.note); fprintf(out, "\\n"CRLF" %s"CRLF, text); } else { fprintf(out, ""CRLF); } fprintf(out, "STATUS:%s"CRLF, mtodo->todo.complete ? "COMPLETED" : "NEEDS-ACTION"); fprintf(out, "PRIORITY:%d"CRLF, mtodo->todo.priority); if (!mtodo->todo.indefinite) { fprintf(out, "DUE;VALUE=DATE:%04d%02d%02d"CRLF, mtodo->todo.due.tm_year+1900, mtodo->todo.due.tm_mon+1, mtodo->todo.due.tm_mday); } fprintf(out, "END:VTODO"CRLF); if (temp_list->next == NULL) { fprintf(out, "END:VCALENDAR"CRLF); } break; default: jp_logf(JP_LOG_WARN, _("Unknown export type\n")); } } if (out) { fclose(out); } } static void cb_todo_update_clist(GtkWidget *clist, int category) { todo_update_clist(clist, NULL, &export_todo_list, category, FALSE); } static void cb_todo_export_done(GtkWidget *widget, const char *filename) { free_ToDoList(&export_todo_list); set_pref(PREF_TODO_EXPORT_FILENAME, 0, filename, TRUE); } int todo_export(GtkWidget *window) { int w, h, x, y; char *type_text[]={N_("Text"), N_("CSV"), N_("iCalendar"), NULL}; int type_int[]={EXPORT_TYPE_TEXT, EXPORT_TYPE_CSV, EXPORT_TYPE_ICALENDAR}; gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = gtk_paned_get_position(GTK_PANED(pane)); x+=40; export_gui(window, w, h, x, y, 5, sort_l, PREF_TODO_EXPORT_FILENAME, type_text, type_int, cb_todo_update_clist, cb_todo_export_done, cb_todo_export_ok ); return EXIT_SUCCESS; } /* * End Export Code */ /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; itodo.description) charset_j2p(mtodo->todo.description, strlen(mtodo->todo.description)+1, char_set); if (mtodo->todo.note) charset_j2p(mtodo->todo.note, strlen(mtodo->todo.note)+1, char_set); } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mtodo->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ flag = GPOINTER_TO_INT(data); if ((flag==MODIFY_FLAG) || (flag==DELETE_FLAG)) { jp_logf(JP_LOG_DEBUG, "calling delete_pc_record\n"); delete_pc_record(TODO, mtodo, flag); if (flag==DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected>0) { clist_row_selected--; } } } if (flag == DELETE_FLAG) { todo_clist_redraw(); } } static void cb_undelete_todo(GtkWidget *widget, gpointer data) { MyToDo *mtodo; int flag; int show_priv; mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mtodo < (MyToDo *)CLIST_MIN_DATA) { return; } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mtodo->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ jp_logf(JP_LOG_DEBUG, "mtodo->unique_id = %d\n",mtodo->unique_id); jp_logf(JP_LOG_DEBUG, "mtodo->rt = %d\n",mtodo->rt); flag = GPOINTER_TO_INT(data); if (flag==UNDELETE_FLAG) { if (mtodo->rt == DELETED_PALM_REC || mtodo->rt == DELETED_PC_REC) { undelete_pc_record(TODO, mtodo, flag); } /* Possible later addition of undelete for modified records else if (mtodo->rt == MODIFIED_PALM_REC) { cb_add_new_record(widget, GINT_TO_POINTER(COPY_FLAG)); } */ } todo_clist_redraw(); } static void cb_cancel(GtkWidget *widget, gpointer data) { set_new_button_to(CLEAR_FLAG); todo_refresh(); } static void cb_edit_cats(GtkWidget *widget, gpointer data) { struct ToDoAppInfo ai; char db_name[FILENAME_MAX]; char pdb_name[FILENAME_MAX]; char full_name[FILENAME_MAX]; unsigned char buffer[65536]; int num; size_t size; void *buf; struct pi_file *pf; #ifdef ENABLE_MANANA long ivalue; #endif jp_logf(JP_LOG_DEBUG, "cb_edit_cats\n"); #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { strcpy(pdb_name, "MananaDB.pdb"); strcpy(db_name, "MananaDB"); } else { strcpy(pdb_name, "ToDoDB.pdb"); strcpy(db_name, "ToDoDB"); } #else strcpy(pdb_name, "ToDoDB.pdb"); strcpy(db_name, "ToDoDB"); #endif get_home_file_name(pdb_name, full_name, sizeof(full_name)); buf=NULL; memset(&ai, 0, sizeof(ai)); pf = pi_file_open(full_name); pi_file_get_app_info(pf, &buf, &size); num = unpack_ToDoAppInfo(&ai, buf, size); if (num <= 0) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), pdb_name); return; } pi_file_close(pf); edit_cats(widget, db_name, &(ai.category)); size = pack_ToDoAppInfo(&ai, buffer, sizeof(buffer)); pdb_file_write_app_block(db_name, buffer, size); cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } static void cb_category(GtkWidget *item, int selection) { int b; if ((GTK_CHECK_MENU_ITEM(item))->active) { if (todo_category == selection) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (todo_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(todo_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(todo_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (selection==NUM_TODO_CAT_ITEMS+1) { cb_edit_cats(item, NULL); } else { todo_category = selection; } clist_row_selected = 0; jp_logf(JP_LOG_DEBUG, "todo_category = %d\n",todo_category); todo_update_clist(clist, category_menu1, &glob_todo_list, todo_category, TRUE); } } static void cb_check_button_no_due_date(GtkWidget *widget, gpointer data) { long till_due; struct tm *now; time_t ltime; if (GTK_TOGGLE_BUTTON(widget)->active) { update_due_button(due_date_button, NULL); } else { time(<ime); now = localtime(<ime); memcpy(&due_date, now, sizeof(struct tm)); get_pref(PREF_TODO_DAYS_TILL_DUE, &till_due, NULL); add_days_to_date(&due_date, till_due); update_due_button(due_date_button, &due_date); } } static int todo_clear_details(void) { time_t ltime; struct tm *now; int new_cat; int sorted_position; long default_due, till_due; time(<ime); now = localtime(<ime); /* Need to disconnect these signals first */ connect_changed_signals(DISCONNECT_SIGNALS); gtk_widget_freeze_child_notify(todo_desc); gtk_widget_freeze_child_notify(todo_note); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_desc_buffer), "", -1); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_note_buffer), "", -1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_todo[0]), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(todo_completed_checkbox), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), FALSE); get_pref(PREF_TODO_DAYS_DUE, &default_due, NULL); get_pref(PREF_TODO_DAYS_TILL_DUE, &till_due, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(todo_no_due_date_checkbox), ! default_due); memcpy(&due_date, now, sizeof(struct tm)); if (default_due) { add_days_to_date(&due_date, till_due); update_due_button(due_date_button, &due_date); } else { update_due_button(due_date_button, NULL); } gtk_widget_thaw_child_notify(todo_desc); gtk_widget_thaw_child_notify(todo_note); if (todo_category==CATEGORY_ALL) { new_cat = 0; } else { new_cat = todo_category; } sorted_position = find_sort_cat_pos(new_cat); if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(todo_cat_menu_item2[sorted_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } set_new_button_to(CLEAR_FLAG); connect_changed_signals(CONNECT_SIGNALS); return EXIT_SUCCESS; } static int todo_get_details(struct ToDo *new_todo, unsigned char *attrib) { int i; GtkTextIter start_iter; GtkTextIter end_iter; new_todo->indefinite = (GTK_TOGGLE_BUTTON(todo_no_due_date_checkbox)->active); if (!(new_todo->indefinite)) { new_todo->due.tm_mon = due_date.tm_mon; new_todo->due.tm_mday = due_date.tm_mday; new_todo->due.tm_year = due_date.tm_year; jp_logf(JP_LOG_DEBUG, "todo_get_details: setting due date=%d/%d/%d\n", new_todo->due.tm_mon, new_todo->due.tm_mday, new_todo->due.tm_year); } else { memset(&(new_todo->due), 0, sizeof(new_todo->due)); } new_todo->priority=1; for (i=0; iactive) { new_todo->priority=i+1; break; } } new_todo->complete = (GTK_TOGGLE_BUTTON(todo_completed_checkbox)->active); /* Can there be an entry with no description? */ /* Yes, but the Palm Pilot gui doesn't allow it to be entered on the Palm, */ /* it will show it though. I allow it. */ gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(todo_desc_buffer), &start_iter,&end_iter); new_todo->description = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(todo_desc_buffer), &start_iter,&end_iter,TRUE); gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(todo_note_buffer), &start_iter,&end_iter); new_todo->note = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(todo_note_buffer), &start_iter,&end_iter,TRUE); if (new_todo->note[0]=='\0') { free(new_todo->note); new_todo->note=NULL; } for (i=0; iactive) { *attrib = sort_l[i].cat_num; break; } } } if (GTK_TOGGLE_BUTTON(private_checkbox)->active) { *attrib |= dlpRecAttrSecret; } #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "attrib = %d\n", *attrib); jp_logf(JP_LOG_DEBUG, "indefinite=%d\n",new_todo->indefinite); if (!new_todo->indefinite) { jp_logf(JP_LOG_DEBUG, "due: %d/%d/%d\n",new_todo->due.tm_mon, new_todo->due.tm_mday, new_todo->due.tm_year); } jp_logf(JP_LOG_DEBUG, "priority=%d\n",new_todo->priority); jp_logf(JP_LOG_DEBUG, "complete=%d\n",new_todo->complete); jp_logf(JP_LOG_DEBUG, "description=[%s]\n",new_todo->description); jp_logf(JP_LOG_DEBUG, "note=[%s]\n",new_todo->note); #endif return EXIT_SUCCESS; } static void cb_add_new_record(GtkWidget *widget, gpointer data) { MyToDo *mtodo; struct ToDo new_todo; unsigned char attrib = 0; int flag; int show_priv; unsigned int unique_id; flag=GPOINTER_TO_INT(data); unique_id = 0; mtodo=NULL; /* Do masking like Palm OS 3.5 */ if ((flag==COPY_FLAG) || (flag==MODIFY_FLAG)) { show_priv = show_privates(GET_PRIVATES); mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mtodo < (MyToDo *)CLIST_MIN_DATA) { return; } if ((show_priv != SHOW_PRIVATES) && (mtodo->attrib & dlpRecAttrSecret)) { return; } } /* End Masking */ if (flag==CLEAR_FLAG) { /* Clear button was hit */ todo_clear_details(); connect_changed_signals(DISCONNECT_SIGNALS); set_new_button_to(NEW_FLAG); gtk_widget_grab_focus(GTK_WIDGET(todo_desc)); return; } if ((flag!=NEW_FLAG) && (flag!=MODIFY_FLAG) && (flag!=COPY_FLAG)) { return; } if (flag==MODIFY_FLAG) { mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); unique_id=mtodo->unique_id; if (mtodo < (MyToDo *)CLIST_MIN_DATA) { return; } if ((mtodo->rt==DELETED_PALM_REC) || (mtodo->rt==DELETED_PC_REC) || (mtodo->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("You can't modify a record that is deleted\n")); return; } } todo_get_details(&new_todo, &attrib); set_new_button_to(CLEAR_FLAG); if (flag==MODIFY_FLAG) { cb_delete_todo(NULL, data); if ((mtodo->rt==PALM_REC) || (mtodo->rt==REPLACEMENT_PALM_REC)) { pc_todo_write(&new_todo, REPLACEMENT_PALM_REC, attrib, &unique_id); } else { unique_id=0; pc_todo_write(&new_todo, NEW_PC_REC, attrib, &unique_id); } } else { unique_id=0; pc_todo_write(&new_todo, NEW_PC_REC, attrib, &unique_id); } free_ToDo(&new_todo); /* Don't return to modified record if search gui active */ if (!glob_find_id) { glob_find_id = unique_id; } todo_clist_redraw(); return; } /* Do masking like Palm OS 3.5 */ static void clear_mytodos(MyToDo *mtodo) { mtodo->unique_id=0; mtodo->attrib=mtodo->attrib & 0xF8; mtodo->todo.complete=0; mtodo->todo.priority=1; mtodo->todo.indefinite=1; if (mtodo->todo.description) { free(mtodo->todo.description); mtodo->todo.description=strdup(""); } if (mtodo->todo.note) { free(mtodo->todo.note); mtodo->todo.note=strdup(""); } return; } /* End Masking */ /* Function is used to sort clist based on the completed checkbox */ static gint GtkClistCompareCheckbox(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2) { GtkCListRow *row1; GtkCListRow *row2; MyToDo *mtodo1; MyToDo *mtodo2; struct ToDo *todo1; struct ToDo *todo2; row1 = (GtkCListRow *) ptr1; row2 = (GtkCListRow *) ptr2; mtodo1 = row1->data; mtodo2 = row2->data; todo1 = &(mtodo1->todo); todo2 = &(mtodo2->todo); if (todo1->complete && !todo2->complete) { return -1; } else if (todo2->complete && !todo1->complete) { return 1; } else { return 0; } } /* Function is used to sort clist based on the Due Date field */ static gint GtkClistCompareDates(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2) { GtkCListRow *row1, *row2; MyToDo *mtodo1,*mtodo2; struct ToDo *todo1, *todo2; time_t time1, time2; row1 = (GtkCListRow *) ptr1; row2 = (GtkCListRow *) ptr2; mtodo1 = row1->data; mtodo2 = row2->data; todo1 = &(mtodo1->todo); todo2 = &(mtodo2->todo); if ( !(todo1->indefinite) && (todo2->indefinite) ) { return -1; } if ( (todo1->indefinite) && !(todo2->indefinite) ) { return 1; } /* Both todos have due dates which requires further comparison */ time1 = mktime(&(todo1->due)); time2 = mktime(&(todo2->due)); return(time1 - time2); } static void cb_clist_click_column(GtkWidget *clist, int column) { MyToDo *mtodo; /* Remember currently selected item and return to it after sort * This is critically important because sorting without updating the * global variable clist_row_selected can cause data loss */ mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mtodo < (MyToDo *)CLIST_MIN_DATA) { glob_find_id = 0; } else { glob_find_id = mtodo->unique_id; } /* Clicking on same column toggles ascending/descending sort */ if (clist_col_selected == column) { if (GTK_CLIST(clist)->sort_type == GTK_SORT_ASCENDING) { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_DESCENDING); } else { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } } else /* Always sort in ascending order when changing sort column */ { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } clist_col_selected = column; gtk_clist_set_sort_column(GTK_CLIST(clist), column); switch (column) { case TODO_CHECK_COLUMN: /* Checkbox column */ gtk_clist_set_compare_func(GTK_CLIST(clist),GtkClistCompareCheckbox); break; case TODO_DATE_COLUMN: /* Due Date column */ gtk_clist_set_compare_func(GTK_CLIST(clist),GtkClistCompareDates); break; default: /* All other columns can use GTK default sort function */ gtk_clist_set_compare_func(GTK_CLIST(clist),NULL); break; } gtk_clist_sort (GTK_CLIST (clist)); /* Return to previously selected item */ todo_find(); } static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct ToDo *todo; MyToDo *mtodo; int b; int index, sorted_position; unsigned int unique_id = 0; time_t ltime; struct tm *now; if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (clist_row_selected == row) { return; } mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mtodo!=NULL) { unique_id = mtodo->unique_id; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ if (clist_row_selected >=0) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); } else { clist_row_selected = 0; clist_select_row(GTK_CLIST(clist), 0, 0); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { glob_find_id = unique_id; todo_find(); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } time(<ime); now = localtime(<ime); clist_row_selected=row; mtodo = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mtodo==NULL) { return; } if (mtodo->rt == DELETED_PALM_REC || (mtodo->rt == DELETED_PC_REC)) /* Possible later addition of undelete code for modified deleted records || mtodo->rt == MODIFIED_PALM_REC */ { set_new_button_to(UNDELETE_FLAG); } else { set_new_button_to(CLEAR_FLAG); } connect_changed_signals(DISCONNECT_SIGNALS); if (mtodo==NULL) { return; } todo=&(mtodo->todo); gtk_widget_freeze_child_notify(todo_desc); gtk_widget_freeze_child_notify(todo_note); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_desc_buffer), "", -1); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_note_buffer), "", -1); index = mtodo->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (todo_cat_menu_item2[sorted_position]==NULL) { /* Illegal category */ jp_logf(JP_LOG_DEBUG, "Category is not legal\n"); index = sorted_position = 0; sorted_position = find_sort_cat_pos(index); } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(todo_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); if (todo->description) { if (todo->description[0]) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_desc_buffer), todo->description, -1); } } if (todo->note) { if (todo->note[0]) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_note_buffer), todo->note, -1); } } if ( (todo->priority<1) || (todo->priority>5) ) { jp_logf(JP_LOG_WARN, _("Priority out of range\n")); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_todo[todo->priority-1]), TRUE); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(todo_completed_checkbox), todo->complete); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), mtodo->attrib & dlpRecAttrSecret); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(todo_no_due_date_checkbox), todo->indefinite); if (!todo->indefinite) { update_due_button(due_date_button, &(todo->due)); due_date.tm_mon=todo->due.tm_mon; due_date.tm_mday=todo->due.tm_mday; due_date.tm_year=todo->due.tm_year; } else { update_due_button(due_date_button, NULL); due_date.tm_mon=now->tm_mon; due_date.tm_mday=now->tm_mday; due_date.tm_year=now->tm_year; } gtk_widget_thaw_child_notify(todo_desc); gtk_widget_thaw_child_notify(todo_note); /* If they have clicked on the checkmark box then do a modify */ if (column==0) { gtk_signal_emit_by_name(GTK_OBJECT(todo_completed_checkbox), "clicked"); gtk_signal_emit_by_name(GTK_OBJECT(apply_record_button), "clicked"); } connect_changed_signals(CONNECT_SIGNALS); } static gboolean cb_key_pressed_left_side(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { GtkTextBuffer *text_buffer; GtkTextIter iter; if (event->keyval == GDK_Return) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); /* Position cursor at start of text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(next_widget)); gtk_text_buffer_get_start_iter(text_buffer, &iter); gtk_text_buffer_place_cursor(text_buffer, &iter); return TRUE; } return FALSE; } static gboolean cb_key_pressed_right_side(GtkWidget *widget, GdkEventKey *event, gpointer data) { if ((event->keyval == GDK_Return) && (event->state & GDK_SHIFT_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Call clist_selection to handle any cleanup such as a modified record */ cb_clist_selection(clist, clist_row_selected, TODO_PRIORITY_COLUMN, GINT_TO_POINTER(1), NULL); gtk_widget_grab_focus(GTK_WIDGET(clist)); return TRUE; } /* Call external editor for note text */ if (data != NULL && (event->keyval == GDK_e) && (event->state & GDK_CONTROL_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Get current text and place in temporary file */ GtkTextIter start_iter; GtkTextIter end_iter; char *text_out; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(todo_note_buffer), &start_iter, &end_iter); text_out = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(todo_note_buffer), &start_iter, &end_iter, TRUE); char tmp_fname[] = "jpilot.XXXXXX"; int tmpfd = mkstemp(tmp_fname); if (tmpfd < 0) { jp_logf(JP_LOG_WARN, _("Could not get temporary file name\n")); if (text_out) free(text_out); return TRUE; } FILE *fptr = fdopen(tmpfd, "w"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file for external editor\n")); if (text_out) free(text_out); return TRUE; } fwrite(text_out, strlen(text_out), 1, fptr); fwrite("\n", 1, 1, fptr); fclose(fptr); /* Call external editor */ char command[1024]; const char *ext_editor; get_pref(PREF_EXTERNAL_EDITOR, NULL, &ext_editor); if (!ext_editor) { jp_logf(JP_LOG_INFO, "External Editor command empty\n"); if (text_out) free(text_out); return TRUE; } if ((strlen(ext_editor) + strlen(tmp_fname) + 1) > sizeof(command)) { jp_logf(JP_LOG_WARN, _("External editor command too long to execute\n")); if (text_out) free(text_out); return TRUE; } g_snprintf(command, sizeof(command), "%s %s", ext_editor, tmp_fname); /* jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("executing command = [%s]\n"), command); */ if (system(command) == -1) { /* Read data back from temporary file into memo */ char text_in[0xFFFF]; size_t bytes_read; fptr = fopen(tmp_fname, "rb"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file from external editor\n")); return TRUE; } bytes_read = fread(text_in, 1, 0xFFFF, fptr); fclose(fptr); unlink(tmp_fname); text_in[--bytes_read] = '\0'; /* Strip final newline */ /* Only update text if it has changed */ if (strcmp(text_out, text_in)) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(todo_note_buffer), text_in, -1); } } if (text_out) free(text_out); return TRUE; } /* End of external editor if */ return FALSE; } void todo_clist_clear(GtkCList *clist) { GtkStyle *base_style, *row_style, *cell_style; int i; base_style = gtk_widget_get_style(GTK_WIDGET(clist)); for (i=0; irows ; i++) { row_style = gtk_clist_get_row_style(GTK_CLIST(clist), i); if (row_style && (row_style != base_style)) { g_object_unref(row_style); } cell_style = gtk_clist_get_cell_style(GTK_CLIST(clist), i, TODO_DATE_COLUMN); if (cell_style && (cell_style != base_style)) { g_object_unref(cell_style); } } gtk_clist_clear(GTK_CLIST(clist)); } void todo_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, ToDoList **todo_list, int category, int main) { int num_entries, entries_shown, i; gchar *empty_line[] = { "","","","","" }; GdkPixmap *pixmap_note; GdkPixmap *pixmap_check; GdkPixmap *pixmap_checked; GdkBitmap *mask_note; GdkBitmap *mask_check; GdkBitmap *mask_checked; ToDoList *temp_todo; char str[50]; char str2[TODO_MAX_COLUMN_LEN+2]; const char *svalue; long hide_completed, hide_not_due; long show_tooltips; int show_priv; time_t ltime; struct tm *now, *due; int comp_now, comp_due; free_ToDoList(todo_list); /* Need to get all records including private ones for the tooltips calculation */ num_entries = get_todos2(todo_list, SORT_ASCENDING, 2, 2, 1, 1, CATEGORY_ALL); /* Start by clearing existing entry if in main window */ if (main) { todo_clear_details(); } /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); if (main) { gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } todo_clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif /* Collect preferences and constant pixmaps for loop */ get_pref(PREF_TODO_HIDE_COMPLETED, &hide_completed, NULL); get_pref(PREF_TODO_HIDE_NOT_DUE, &hide_not_due, NULL); show_priv = show_privates(GET_PRIVATES); get_pixmaps(clist, PIXMAP_NOTE, &pixmap_note, &mask_note); get_pixmaps(clist, PIXMAP_BOX_CHECK, &pixmap_check, &mask_check); get_pixmaps(clist, PIXMAP_BOX_CHECKED, &pixmap_checked,&mask_checked); #ifdef __APPLE__ mask_note = NULL; mask_check = NULL; mask_checked = NULL; #endif /* Current time used for calculating overdue items */ time(<ime); now = localtime(<ime); comp_now=now->tm_year*380+now->tm_mon*31+now->tm_mday-1; entries_shown=0; for (temp_todo = *todo_list, i=0; temp_todo; temp_todo=temp_todo->next) { if ( ((temp_todo->mtodo.attrib & 0x0F) != category) && category != CATEGORY_ALL) { continue; } /* Do masking like Palm OS 3.5 */ if ((show_priv == MASK_PRIVATES) && (temp_todo->mtodo.attrib & dlpRecAttrSecret)) { gtk_clist_append(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_CHECK_COLUMN, "---"); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_PRIORITY_COLUMN, "---"); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_TEXT_COLUMN, "--------------------"); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_DATE_COLUMN, "----------"); clear_mytodos(&temp_todo->mtodo); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_todo->mtodo)); gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); entries_shown++; continue; } /* End Masking */ /* Allow a record found through search window to temporarily be displayed even if it would normally be hidden by option settings */ if (!glob_find_id || (glob_find_id != temp_todo->mtodo.unique_id)) { /* Hide the completed records if need be */ if (hide_completed && temp_todo->mtodo.todo.complete) { continue; } /* Hide the not due yet records if need be */ if ((hide_not_due) && (!(temp_todo->mtodo.todo.indefinite))) { due = &(temp_todo->mtodo.todo.due); comp_due=due->tm_year*380+due->tm_mon*31+due->tm_mday-1; if (comp_due > comp_now) { continue; } } } /* Hide the private records if need be */ if ((show_priv != SHOW_PRIVATES) && (temp_todo->mtodo.attrib & dlpRecAttrSecret)) { continue; } /* Add entry to clist */ gtk_clist_append(GTK_CLIST(clist), empty_line); /* Put a checkbox or checked checkbox pixmap up */ if (temp_todo->mtodo.todo.complete) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, TODO_CHECK_COLUMN, pixmap_checked, mask_checked); } else { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, TODO_CHECK_COLUMN, pixmap_check, mask_check); } /* Print the priority number */ sprintf(str, "%d", temp_todo->mtodo.todo.priority); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_PRIORITY_COLUMN, str); /* Put a note pixmap up */ if (temp_todo->mtodo.todo.note[0]) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, TODO_NOTE_COLUMN, pixmap_note, mask_note); } else { gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_NOTE_COLUMN, ""); } /* Print the due date */ if (!temp_todo->mtodo.todo.indefinite) { get_pref(PREF_SHORTDATE, NULL, &svalue); strftime(str, sizeof(str), svalue, &(temp_todo->mtodo.todo.due)); } else { sprintf(str, _("No date")); } gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_DATE_COLUMN, str); /* Print the todo text */ lstrncpy_remove_cr_lfs(str2, temp_todo->mtodo.todo.description, TODO_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, TODO_TEXT_COLUMN, str2); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_todo->mtodo)); /* Highlight row background depending on status */ switch (temp_todo->mtodo.rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_NEW_RED, CLIST_NEW_GREEN, CLIST_NEW_BLUE); break; case DELETED_PALM_REC: case DELETED_PC_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_DEL_RED, CLIST_DEL_GREEN, CLIST_DEL_BLUE); break; case MODIFIED_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_MOD_RED, CLIST_MOD_GREEN, CLIST_MOD_BLUE); break; default: if (temp_todo->mtodo.attrib & dlpRecAttrSecret) { set_bg_rgb_clist_row(clist, entries_shown, CLIST_PRIVATE_RED, CLIST_PRIVATE_GREEN, CLIST_PRIVATE_BLUE); } else { gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); } } /* Highlight dates of items overdue or due today */ if (!(temp_todo->mtodo.todo.indefinite)) { due = &(temp_todo->mtodo.todo.due); comp_due=due->tm_year*380+due->tm_mon*31+due->tm_mday-1; if (comp_due < comp_now) { set_fg_rgb_clist_cell(clist, entries_shown, TODO_DATE_COLUMN, CLIST_OVERDUE_RED, CLIST_OVERDUE_GREEN, CLIST_OVERDUE_BLUE); } else if (comp_due == comp_now) { set_fg_rgb_clist_cell(clist, entries_shown, TODO_DATE_COLUMN, CLIST_DUENOW_RED, CLIST_DUENOW_GREEN, CLIST_DUENOW_BLUE); } } entries_shown++; } jp_logf(JP_LOG_DEBUG, "entries_shown=%d\n",entries_shown); /* Sort the clist */ gtk_clist_sort(GTK_CLIST(clist)); if (main) { gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } /* If there are items in the list, highlight the selected row */ if ((main) && (entries_shown>0)) { /* First, select any record being searched for */ if (glob_find_id) { todo_find(); } /* Second, try the currently selected row */ else if (clist_row_selected < entries_shown) { clist_select_row(GTK_CLIST(clist), clist_row_selected, TODO_PRIORITY_COLUMN); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } /* Third, select row 0 if nothing else is possible */ else { clist_select_row(GTK_CLIST(clist), 0, TODO_PRIORITY_COLUMN); } } /* Unfreeze clist after all changes */ gtk_clist_thaw(GTK_CLIST(clist)); if (tooltip_widget) { get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); if (todo_list==NULL) { set_tooltip(show_tooltips, glob_tooltips, tooltip_widget, _("0 records"), NULL); } else { sprintf(str, _("%d of %d records"), entries_shown, num_entries); set_tooltip(show_tooltips, glob_tooltips, tooltip_widget, str, NULL); } } /* return focus to clist after any big operation which requires a redraw */ gtk_widget_grab_focus(GTK_WIDGET(clist)); } static int todo_find(void) { int r, found_at; if (glob_find_id) { r = clist_find_id(clist, glob_find_id, &found_at); if (r) { clist_select_row(GTK_CLIST(clist), found_at, TODO_PRIORITY_COLUMN); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), found_at)) { gtk_clist_moveto(GTK_CLIST(clist), found_at, 0, 0.5, 0.0); } } glob_find_id = 0; } return EXIT_SUCCESS; } static gboolean cb_key_pressed_tab(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { GtkTextIter cursor_pos_iter; GtkTextBuffer *text_buffer; if (event->keyval == GDK_Tab) { /* See if they are at the end of the text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); gtk_text_buffer_get_iter_at_mark(text_buffer,&cursor_pos_iter,gtk_text_buffer_get_insert(text_buffer)); if (gtk_text_iter_is_end(&cursor_pos_iter)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } } return FALSE; } static gboolean cb_key_pressed_shift_tab(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { if (event->keyval == GDK_ISO_Left_Tab) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } return FALSE; } /* This redraws the clist and goes back to the same line number */ static int todo_clist_redraw(void) { todo_update_clist(clist, category_menu1, &glob_todo_list, todo_category, TRUE); return EXIT_SUCCESS; } int todo_cycle_cat(void) { int b; int i, new_cat; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (todo_category == CATEGORY_ALL) { new_cat = -1; } else { new_cat = find_sort_cat_pos(todo_category); } for (i=0; i= NUM_TODO_CAT_ITEMS) { todo_category = CATEGORY_ALL; break; } if ((sort_l[new_cat].Pcat) && (sort_l[new_cat].Pcat[0])) { todo_category = sort_l[new_cat].cat_num; break; } } clist_row_selected = 0; return EXIT_SUCCESS; } int todo_refresh(void) { int index, index2; if (glob_find_id) { todo_category = CATEGORY_ALL; } if (todo_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index=find_sort_cat_pos(todo_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } todo_update_clist(clist, category_menu1, &glob_todo_list, todo_category, TRUE); if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(todo_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return EXIT_SUCCESS; } int todo_gui_cleanup(void) { int b; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } free_ToDoList(&glob_todo_list); connect_changed_signals(DISCONNECT_SIGNALS); set_pref(PREF_TODO_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); set_pref(PREF_TODO_NOTE_PANE, gtk_paned_get_position(GTK_PANED(note_pane)), NULL, TRUE); set_pref(PREF_LAST_TODO_CATEGORY, todo_category, NULL, TRUE); set_pref(PREF_TODO_SORT_COLUMN, clist_col_selected, NULL, TRUE); set_pref(PREF_TODO_SORT_ORDER, GTK_CLIST(clist)->sort_type, NULL, TRUE); todo_clist_clear(GTK_CLIST(clist)); return EXIT_SUCCESS; } /* Main function */ int todo_gui(GtkWidget *vbox, GtkWidget *hbox) { GtkWidget *scrolled_window; GtkWidget *pixmapwid; GdkPixmap *pixmap; GdkBitmap *mask; GtkWidget *vbox1, *vbox2; GtkWidget *hbox_temp, *hbox_temp2; GtkWidget *vbox_temp; GtkWidget *separator; GtkWidget *label; time_t ltime; struct tm *now; char str[MAX_RADIO_BUTTON_LEN]; int i; GSList *group; long ivalue; char *titles[]={"","","","",""}; GtkAccelGroup *accel_group; long char_set; long show_tooltips; char *cat_name; get_pref(PREF_TODO_VERSION, &todo_version, NULL); init(); get_todo_app_info(&todo_app_info); /* Initialize categories */ get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=1; ichild)), "label_high"); #endif /* "Apply Changes" button */ CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Right-side Category menu */ /* Clear GTK option menus before use */ for (i=0; i&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: jpilot-1.8.2/jpilot.h0000664000175000017500000000212612340261240011413 00000000000000/******************************************************************************* * jpilot.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* GUI cleanup routines for weekview and monthview windows */ void cb_monthview_quit(GtkWidget *widget, gpointer data); void cb_weekview_quit(GtkWidget *widget, gpointer data); jpilot-1.8.2/print_logo.h0000664000175000017500000000200512320101153012254 00000000000000/******************************************************************************* * print_logo.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001 by Colin Brough * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ void print_logo(FILE *f, int x, int y, float size); jpilot-1.8.2/otherconv.h0000664000175000017500000000276412320101153012123 00000000000000/******************************************************************************* * otherconv.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2004 by Amit Aronovitch * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * General charset conversion library header (using gconv) * Convert Palm <-> Unix: * Palm : Any - according to the "other-pda-charset" setup option. * Unix : UTF-8 */ /* otherconv_init: Call this before any conversion * (also use whenever other-pda-charset option changed) * * Returns 0 if OK, -1 if iconv could not be initialized * (probably because of bad charset string) */ int otherconv_init(void); /* otherconv_free: Call this when done */ void otherconv_free(void); char *other_to_UTF(const char *buf, int buf_len); void UTF_to_other(char *const buf, int buf_len); jpilot-1.8.2/libplugin.h0000664000175000017500000002620012340261240012076 00000000000000/******************************************************************************* * libplugin.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __LIBPLUGIN_H__ #define __LIBPLUGIN_H__ #include "config.h" #include #include #include #include "log.h" /* * PLUGIN API for J-Pilot */ #ifdef ENABLE_PROMETHEON #define PN "CoPilot" #else #define PN "J-Pilot" #endif #ifdef ENABLE_PROMETHEON #define EPN "copilot" #else #define EPN "jpilot" #endif /* * For versioning of files */ #define FILE_VERSION "version" #define FILE_VERSION2 "version2" #define FILE_VERSION2_CR "version2\n" typedef struct { unsigned char Offset[4]; /*4 bytes offset from BOF to record */ unsigned char attrib; unsigned char unique_ID[3]; } record_header; typedef struct { unsigned long header_len; unsigned long header_version; unsigned long rec_len; unsigned long unique_id; unsigned long rt; /* Record Type */ unsigned char attrib; } PC3RecordHeader; typedef struct mem_rec_header_s { unsigned int rec_num; unsigned int offset; unsigned int unique_id; unsigned char attrib; struct mem_rec_header_s *next; } mem_rec_header; typedef struct { char db_name[32]; unsigned char flags[2]; unsigned char version[2]; unsigned char creation_time[4]; unsigned char modification_time[4]; unsigned char backup_time[4]; unsigned char modification_number[4]; unsigned char app_info_offset[4]; unsigned char sort_info_offset[4]; char type[4]; /* Database ID */ char creator_id[4]; /* Application ID */ char unique_id_seed[4]; unsigned char next_record_list_id[4]; unsigned char number_of_records[2]; } RawDBHeader; #define LEN_RAW_DB_HEADER 78 typedef struct { char db_name[32]; unsigned int flags; unsigned int version; time_t creation_time; time_t modification_time; time_t backup_time; unsigned int modification_number; unsigned int app_info_offset; unsigned int sort_info_offset; char type[5];/*Database ID */ char creator_id[5];/*Application ID */ char unique_id_seed[5]; unsigned int next_record_list_id; unsigned int number_of_records; } DBHeader; int get_next_unique_pc_id(unsigned int *next_unique_id); /* used for jp_delete_record */ #define CLEAR_FLAG 1 #define CANCEL_FLAG 2 #define DELETE_FLAG 3 #define MODIFY_FLAG 4 #define NEW_FLAG 5 #define COPY_FLAG 6 #define UNDELETE_FLAG 7 #define CLIST_DEL_RED 0xCCCC #define CLIST_DEL_GREEN 0xCCCC #define CLIST_DEL_BLUE 0xCCCC #define CLIST_NEW_RED 55000 #define CLIST_NEW_GREEN 55000 #define CLIST_NEW_BLUE 65535 #define CLIST_MOD_RED 55000 #define CLIST_MOD_GREEN 65535 #define CLIST_MOD_BLUE 65535 #define CLIST_PRIVATE_RED 60000 #define CLIST_PRIVATE_GREEN 55000 #define CLIST_PRIVATE_BLUE 55000 #define CLIST_OVERDUE_RED 0xD900 #define CLIST_OVERDUE_GREEN 0x0000 #define CLIST_OVERDUE_BLUE 0x0000 #define CLIST_DUENOW_RED 4369 #define CLIST_DUENOW_GREEN 40863 #define CLIST_DUENOW_BLUE 35466 #define DIALOG_SAID_1 454 #define DIALOG_SAID_PRINT 454 #define DIALOG_SAID_FOURTH 454 #define DIALOG_SAID_2 455 #define DIALOG_SAID_LAST 455 #define DIALOG_SAID_3 456 #define DIALOG_SAID_CANCEL 456 #define DIALOG_SAID_4 457 #define JP_LOG_DEBUG 1 /*debugging info for programmers, and bug reports */ #define JP_LOG_INFO 2 /*info, and misc messages */ #define JP_LOG_WARN 4 /*worse messages */ #define JP_LOG_FATAL 8 /*even worse messages */ #define JP_LOG_STDOUT 256 /*messages always go to stdout */ #define JP_LOG_FILE 512 /*messages always go to the log file */ #define JP_LOG_GUI 1024 /*messages always go to the gui window */ #define JPILOT_EOF -7 /* This bit means that this record is of no importance anymore */ #define SPENT_PC_RECORD_BIT 256 typedef enum { PALM_REC = 100L, MODIFIED_PALM_REC = 101L, DELETED_PALM_REC = 102L, NEW_PC_REC = 103L, DELETED_PC_REC = SPENT_PC_RECORD_BIT | 104L, DELETED_DELETED_PALM_REC = SPENT_PC_RECORD_BIT | 105L, REPLACEMENT_PALM_REC = 106L } PCRecType; typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; void *buf; int size; } buf_rec; typedef struct { char *base_dir; int *major_version; int *minor_version; } jp_startup_info; struct search_result { char *line; unsigned int unique_id; struct search_result *next; }; void plugin_version(int *major_version, int *minor_version); int plugin_get_name(char *name, int len); int plugin_get_menu_name(char *name, int len); int plugin_get_help_name(char *name, int len); int plugin_get_db_name(char *db_name, int len); int plugin_startup(jp_startup_info *info); int plugin_gui(GtkWidget *vbox, GtkWidget *hbox, unsigned int unique_id); int plugin_help(char **text, int *width, int *height); int plugin_print(void); int plugin_import(GtkWidget *window); int plugin_export(GtkWidget *window); int plugin_gui_cleanup(void); int plugin_pre_sync_pre_connect(void); int plugin_pre_sync(void); int plugin_sync(int sd); int plugin_search(const char *search_string, int case_sense, struct search_result **sr); int plugin_post_sync(void); int plugin_exit_cleanup(void); int plugin_unpack_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len); int plugin_pack_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len); /* callbacks are needed for print */ void jp_init(void); /* This takes the value of $JPILOT_HOME and appends /.jpilot/ and {file} * onto it and puts it into full_name. max_size is the size if the * supplied buffer full_name */ int jp_get_home_file_name(const char *file, char *full_name, int max_size); /* * DB_name should be without filename ext, e.g. MemoDB * bufp is the packed app info block * size_in is the size of bufp */ int jp_pdb_file_write_app_block(const char *DB_name, void *bufp, int size_in); /* * widget is a widget inside the main window used to get main window handle * db_name should be without filename ext, e.g. MemoDB * cai is the category app info. This should be unpacked by the user since * category unpack functions are database specific. */ int jp_edit_cats(GtkWidget *widget, char *db_name, struct CategoryAppInfo *cai); /* file must not be open elsewhere when this is called, the first line is 0 */ int jp_install_remove_line(int deleted_line); int jp_install_append_line(char *line); /* * Get the application info block */ int jp_get_app_info(const char *DB_name, unsigned char **buf, int *buf_size); /* * Read a pdb file out of the $(JPILOT_HOME || HOME)/.jpilot/ directory * It also reads the PC file */ int jp_read_DB_files(const char *DB_name, GList **records); /* *This deletes a record from the appropriate Datafile */ int jp_delete_record(const char *DB_name, buf_rec *br, int flag); /* *This undeletes a record from the appropriate Datafile */ int jp_undelete_record(const char *DB_name, buf_rec *br, int flag); /* * Free the record list */ int jp_free_DB_records(GList **records); int jp_pc_write(const char *DB_name, buf_rec *br); const char *jp_strstr(const char *haystack, const char *needle, int case_sense); int pc_read_next_rec(FILE *in, buf_rec *br); int read_header(FILE *pc_in, PC3RecordHeader *header); int write_header(FILE *pc_out, PC3RecordHeader *header); /* * These 2 functions don't take full path names. * They are relative to $JPILOT_HOME/.jpilot/ */ int rename_file(char *old_filename, char *new_filename); int unlink_file(char *filename); /* */ /*Warning, this function will move the file pointer */ /* */ int get_app_info_size(FILE *in, int *size); /* mon 0-11 * day 1-31 * year (year - 1900) * This function will bring up the cal at mon, day, year * After a new date is selected it will return mon, day, year */ int jp_cal_dialog(GtkWindow *main_window, const char *title, int monday_is_fdow, int *mon, int *day, int *year); /* * The preferences interface makes it easy to read and write name/value pairs * to a file. Also access them efficiently. */ #define INTTYPE 1 #define CHARTYPE 2 /* I explain these below */ typedef struct { const char *name; int usertype; int filetype; long ivalue; char *svalue; int svalue_size; } prefType; /* char *name; */ /* The name of the preference, will be written to column 1 of the rc file * This needs to be set before reading the rc file. */ /* int usertype; */ /* INTTYPE or CHARTYPE, this is the type of value that the pref is. * This type of value will be returned and set by pref calls. */ /* int filetype; */ /* INTTYPE or CHARTYPE, this is the type of value that the pref is when * it is read from, or written to a file. * i.e., For some of my menus I have file type of int and usertype * of char. I want to use char, except I don't store the char because * of translations, so I store 3 for the 3rd option. It also allows * predefined allowed values for strings instead of anything goes. */ /* long ivalue; */ /* The long value to be returned if of type INT */ /* char *svalue; */ /* The long value to be returned if of type CHAR */ /* int svalue_size; */ /* The size of the memory allocated for the string, Do not change. */ /* * To use prefs you must allocate an array of prefType and call this function * before any others. * count is how many preferences in the array. */ void jp_pref_init(prefType prefs[], int count); /* * This function can be called to free strings allocated by preferences. * It should be called in the cleanup routine. */ void jp_free_prefs(prefType prefs[], int count); /* * This function retrieves a long value and a pointer to a string of a * preference structure. *string can be passed in as a NULL and NULL can * be returned if the preference is of type INT. */ int jp_get_pref(prefType prefs[], int which, long *n, const char **string); /* * This function sets a long value and a string of a preference structure. * string can be NULL if the preference is type INT. * string can be any length, memory will be allocated. */ int jp_set_pref(prefType prefs[], int which, long n, const char *string); /* * This function reads an rc file and sets the preferences from it. */ int jp_pref_read_rc_file(char *filename, prefType prefs[], int num_prefs); /* * This function writes preferences to an rc file. */ int jp_pref_write_rc_file(char *filename, prefType prefs[], int num_prefs); #endif jpilot-1.8.2/ltmain.sh0000644000175000017500000105204412336026316011574 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 jpilot-1.8.2/memo.h0000664000175000017500000000272412340261240011053 00000000000000/******************************************************************************* * memo.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __MEMO_H__ #define __MEMO_H__ #include #include "utils.h" int get_memo_app_info(struct MemoAppInfo *ai); void free_MemoList(MemoList **memo); int get_memos(MemoList **memo_list, int sort_order); int get_memos2(MemoList **memo_list, int sort_order, int modified, int deleted, int privates, int category); int pc_memo_write(struct Memo *memo, PCRecType rt, unsigned char attrib, unsigned int *unique_id); int memo_print(void); int memo_import(GtkWidget *window); int memo_export(GtkWidget *window); #endif jpilot-1.8.2/intltool-update.in0000664000175000017500000000000012336026316013412 00000000000000jpilot-1.8.2/config.rpath0000755000175000017500000003744412320612124012261 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2006 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $cc_basename in icc* | ecc*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix3*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | kfreebsd*-gnu | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; kfreebsd*-gnu) ;; freebsd* | dragonfly*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; interix3*) ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; knetbsd*-gnu) ;; netbsd*) ;; newsos6) ;; nto-qnx*) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.3*) ;; sysv4*MP*) ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < #include #include #include #include #include #include #include #include #ifdef HAVE_LOCALE_H # include #endif #ifdef HAVE_LANGINFO_H # include #endif #include #include #include "utils.h" #include "i18n.h" #include "otherconv.h" #include "libplugin.h" #include "datebook.h" #include "address.h" #include "install_user.h" #include "todo.h" #include "memo.h" #include "sync.h" #include "log.h" #include "prefs_gui.h" #include "prefs.h" #include "plugins.h" #include "alarms.h" #include "print.h" #include "restore.h" #include "password.h" #include "pidfile.h" #include "jpilot.h" #include "icons/jpilot-icon4.xpm" #include "icons/datebook.xpm" #include "icons/address.xpm" #include "icons/todo.xpm" #include "icons/memo.xpm" #include "icons/appl_menu_icons.h" #include "icons/lock_icons.h" #include "icons/sync.xpm" #include "icons/cancel_sync.xpm" #include "icons/backup.xpm" /********************************* Constants **********************************/ #define OUTPUT_MINIMIZE 383 #define OUTPUT_RESIZE 384 #define OUTPUT_SETSIZE 385 #define OUTPUT_CLEAR 386 #define MASK_WIDTH 0x08 #define MASK_HEIGHT 0x04 #define MASK_X 0x02 #define MASK_Y 0x01 /* #define PIPE_DEBUG */ /******************************* Global vars **********************************/ /* Application-wide globals */ int pipe_from_child, pipe_to_parent; int pipe_from_parent, pipe_to_child; /* Main GTK window for application */ GtkWidget *window; GtkWidget *glob_date_label; GtkTooltips *glob_tooltips; GtkWidget *glob_dialog=NULL; int glob_app = 0; unsigned char skip_plugins; gint glob_date_timer_tag; pid_t glob_child_pid; pid_t jpilot_master_pid; /* jpilot.c file globals */ static GtkWidget *g_hbox, *g_vbox0; static GtkWidget *g_hbox2, *g_vbox0_1; static GtkTextView *g_output_text; static GtkTextBuffer *g_output_text_buffer; static GtkWidget *output_pane; static GtkWidget *button_locked; static GtkWidget *button_masklocked; static GtkWidget *button_unlocked; static GtkWidget *button_sync; static GtkWidget *button_cancel_sync; static GtkWidget *button_backup; static GtkCheckMenuItem *menu_hide_privates; static GtkCheckMenuItem *menu_show_privates; static GtkCheckMenuItem *menu_mask_privates; extern GtkWidget *weekview_window; extern GtkWidget *monthview_window; /****************************** Prototypes ************************************/ static void cb_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data); static void install_gui_and_size(GtkWidget *main_window); /****************************** Main Code *************************************/ static int create_main_boxes(void) { g_hbox2 = gtk_hbox_new(FALSE, 0); g_vbox0_1 = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(g_hbox), g_hbox2, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g_vbox0), g_vbox0_1, FALSE, FALSE, 0); return EXIT_SUCCESS; } static int gui_cleanup(void) { #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif #ifdef ENABLE_PLUGINS plugin_list = NULL; plugin_list = get_plugin_list(); /* Find out which (if any) plugin to call a gui_cleanup on */ for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->number == glob_app) { if (plugin->plugin_gui_cleanup) { plugin->plugin_gui_cleanup(); } break; } } } #endif switch (glob_app) { case DATEBOOK: datebook_gui_cleanup(); break; case ADDRESS: address_gui_cleanup(); break; case TODO: todo_gui_cleanup(); break; case MEMO: memo_gui_cleanup(); break; default: break; } return EXIT_SUCCESS; } #ifdef ENABLE_PLUGINS void call_plugin_gui(int number, int unique_id) { struct plugin_s *plugin; GList *plugin_list, *temp_list; if (!number) { return; } gui_cleanup(); plugin_list = NULL; plugin_list = get_plugin_list(); /* Destroy main boxes and recreate them */ gtk_widget_destroy(g_vbox0_1); gtk_widget_destroy(g_hbox2); create_main_boxes(); if (glob_date_timer_tag) { gtk_timeout_remove(glob_date_timer_tag); } /* Find out which plugin we are calling */ for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->number == number) { glob_app = plugin->number; if (plugin->plugin_gui) { plugin->plugin_gui(g_vbox0_1, g_hbox2, unique_id); } break; } } } } static void cb_plugin_gui(GtkWidget *widget, int number) { call_plugin_gui(number, 0); } /* Redraws plugin GUI after structure changing event such as category editing */ void plugin_gui_refresh(int unique_id) { call_plugin_gui(glob_app, unique_id); } static void call_plugin_help(int number) { struct plugin_s *plugin; GList *plugin_list, *temp_list; char *button_text[]={N_("OK")}; char *text; int width, height; if (!number) { return; } plugin_list = NULL; plugin_list = get_plugin_list(); /* Find out which plugin we are calling */ for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->number == number) { if (plugin->plugin_help) { text = NULL; plugin->plugin_help(&text, &width, &height); if (text) { dialog_generic(GTK_WINDOW(window), plugin->help_name, DIALOG_INFO, text, 1, button_text); free(text); } } break; } } } } static void cb_plugin_help(GtkWidget *widget, int number) { call_plugin_help(number); } #endif static void cb_print(GtkWidget *widget, gpointer data) { #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif char *button_text[]={N_("OK")}; switch (glob_app) { case DATEBOOK: if (print_gui(window, DATEBOOK, 1, 0x07) == DIALOG_SAID_PRINT) { datebook_print(print_day_week_month); } return; case ADDRESS: if (print_gui(window, ADDRESS, 0, 0x00) == DIALOG_SAID_PRINT) { address_print(); } return; case TODO: if (print_gui(window, TODO, 0, 0x00) == DIALOG_SAID_PRINT) { todo_print(); } return; case MEMO: if (print_gui(window, MEMO, 0, 0x00) == DIALOG_SAID_PRINT) { memo_print(); } return; } #ifdef ENABLE_PLUGINS plugin_list = NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (glob_app == plugin->number) { if (plugin->plugin_print) { plugin->plugin_print(); return; } } } } #endif dialog_generic(GTK_WINDOW(window), _("Print"), DIALOG_WARNING, _("There is no print support for this conduit."), 1, button_text); } static void cb_restore(GtkWidget *widget, gpointer data) { int r; int w, h, x, y; jp_logf(JP_LOG_DEBUG, "cb_restore()\n"); gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = w/2; x+=40; r = restore_gui(window, w, h, x, y); /* Fork successful, child sync process started */ if (glob_child_pid && (r == EXIT_SUCCESS)) { gtk_widget_hide(button_sync); gtk_widget_show(button_cancel_sync); } } static void cb_import(GtkWidget *widget, gpointer data) { #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif char *button_text[]={N_("OK")}; switch (glob_app) { case DATEBOOK: datebook_import(window); return; case ADDRESS: address_import(window); return; case TODO: todo_import(window); return; case MEMO: memo_import(window); return; } #ifdef ENABLE_PLUGINS plugin_list = NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (glob_app == plugin->number) { if (plugin->plugin_import) { plugin->plugin_import(window); return; } } } } #endif dialog_generic(GTK_WINDOW(window), _("Import"), DIALOG_WARNING, _("There is no import support for this conduit."), 1, button_text); } static void cb_export(GtkWidget *widget, gpointer data) { #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif char *button_text[]={N_("OK")}; switch (glob_app) { case DATEBOOK: datebook_export(window); return; case ADDRESS: address_export(window); return; case TODO: todo_export(window); return; case MEMO: memo_export(window); return; } #ifdef ENABLE_PLUGINS plugin_list = NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (glob_app == plugin->number) { if (plugin->plugin_export) { plugin->plugin_export(window); return; } } } } #endif dialog_generic(GTK_WINDOW(window), _("Export"), DIALOG_WARNING, _("There is no export support for this conduit."), 1, button_text); } static void cb_private(GtkWidget *widget, gpointer data) { int privates, was_privates; int r_dialog = 0; static int skip_false_call = 0; #ifdef ENABLE_PRIVATE char ascii_password[64]; int r_pass; int retry; #endif if (skip_false_call) { skip_false_call = 0; return; } was_privates = show_privates(GET_PRIVATES); privates = show_privates(GPOINTER_TO_INT(data)); /* no changes */ if (was_privates == privates) return; switch (privates) { case MASK_PRIVATES: gtk_widget_hide(button_locked); gtk_widget_show(button_masklocked); gtk_widget_hide(button_unlocked); break; case HIDE_PRIVATES: gtk_widget_show(button_locked); gtk_widget_hide(button_masklocked); gtk_widget_hide(button_unlocked); break; case SHOW_PRIVATES: /* Ask for the password, or don't depending on configure option */ #ifdef ENABLE_PRIVATE memset(ascii_password, 0, sizeof(ascii_password)); if (was_privates != SHOW_PRIVATES) { retry=FALSE; do { r_dialog = dialog_password(GTK_WINDOW(window), ascii_password, retry); r_pass = verify_password(ascii_password); retry=TRUE; } while ((r_pass==FALSE) && (r_dialog==2)); } #else r_dialog = 2; #endif if (r_dialog==2) { gtk_widget_hide(button_locked); gtk_widget_hide(button_masklocked); gtk_widget_show(button_unlocked); } else { /* wrong or canceled password, hide the entries */ gtk_check_menu_item_set_active(menu_hide_privates, TRUE); cb_private(NULL, GINT_TO_POINTER(HIDE_PRIVATES)); return; } break; } if (widget) { /* Setting the state of the menu causes a signal to be emitted * which calls cb_private again. * This second call needs to be ignored */ skip_false_call = 1; switch (privates) { case MASK_PRIVATES: gtk_check_menu_item_set_active(menu_mask_privates, TRUE); break; case HIDE_PRIVATES: gtk_check_menu_item_set_active(menu_hide_privates, TRUE); break; case SHOW_PRIVATES: gtk_check_menu_item_set_active(menu_show_privates, TRUE); break; } } if (was_privates != privates) cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } static void cb_install_user(GtkWidget *widget, gpointer data) { int r; r = install_user_gui(window); /* Fork successful, child sync process started */ if (glob_child_pid && (r == EXIT_SUCCESS)) { gtk_widget_hide(button_sync); gtk_widget_show(button_cancel_sync); } } void cb_app_button(GtkWidget *widget, gpointer data) { int app; int refresh; app = GPOINTER_TO_INT(data); /* If the current and selected apps are the same then just refresh screen */ refresh = (app==glob_app); /* Tear down GUI when switching apps or on forced REDRAW */ if ((!refresh) || (app==REDRAW)) { gui_cleanup(); if (glob_date_timer_tag) { gtk_timeout_remove(glob_date_timer_tag); } gtk_widget_destroy(g_vbox0_1); gtk_widget_destroy(g_hbox2); create_main_boxes(); if (app==REDRAW) { app = glob_app; } } switch (app) { case DATEBOOK: if (refresh) { datebook_refresh(TRUE, TRUE); } else { glob_app = DATEBOOK; datebook_gui(g_vbox0_1, g_hbox2); } break; case ADDRESS: if (refresh) { address_cycle_cat(); address_refresh(); } else { glob_app = ADDRESS; address_gui(g_vbox0_1, g_hbox2); } break; case TODO: if (refresh) { todo_cycle_cat(); todo_refresh(); } else { glob_app = TODO; todo_gui(g_vbox0_1, g_hbox2); } break; case MEMO: if (refresh) { memo_cycle_cat(); memo_refresh(); } else { glob_app = MEMO; memo_gui(g_vbox0_1, g_hbox2); } break; default: /* recursion */ if ((glob_app==DATEBOOK) || (glob_app==ADDRESS) || (glob_app==TODO) || (glob_app==MEMO) ) cb_app_button(NULL, GINT_TO_POINTER(glob_app)); break; } } static void sync_sig_handler (int sig) { unsigned int flags; int r; flags = skip_plugins ? SYNC_NO_PLUGINS : 0; r = setup_sync(flags); /* Fork successful, child sync process started */ if (glob_child_pid && (r == EXIT_SUCCESS)) { gtk_widget_hide(button_sync); gtk_widget_show(button_cancel_sync); } } static void cb_sync(GtkWidget *widget, unsigned int flags) { long ivalue; int r; /* confirm file installation */ get_pref(PREF_CONFIRM_FILE_INSTALL, &ivalue, NULL); if (ivalue) { char file[FILENAME_MAX]; char home_dir[FILENAME_MAX]; struct stat buf; /* If there are files to be installed, ask the user right before sync */ get_home_file_name("", home_dir, sizeof(home_dir)); g_snprintf(file, sizeof(file), "%s/"EPN".install", home_dir); if (!stat(file, &buf)) { if (buf.st_size > 0) { install_gui_and_size(window); } } } r = setup_sync(flags); /* Fork successful, child sync process started */ if (glob_child_pid && (r == EXIT_SUCCESS)) { gtk_widget_hide(button_sync); gtk_widget_show(button_cancel_sync); } } void cb_cancel_sync(GtkWidget *widget, unsigned int flags); void cb_cancel_sync(GtkWidget *widget, unsigned int flags) { if (glob_child_pid) { jp_logf(JP_LOG_GUI, "****************************************\n"); jp_logf(JP_LOG_GUI, _(" Cancelling HotSync\n")); jp_logf(JP_LOG_GUI, "****************************************\n"); kill(glob_child_pid, SIGTERM); } gtk_widget_hide(button_cancel_sync); gtk_widget_show(button_sync); } /* * This is called when the user name from the palm doesn't match * or the user ID from the palm is 0 */ static int bad_sync_exit_status(int exit_status) { char text1[] = /*-------------------------------------------*/ N_("This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain."); char text2[] = /*-------------------------------------------*/ N_("This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain."); char *button_text[]={N_("Cancel Sync"), N_("Sync Anyway") }; if (!GTK_IS_WINDOW(window)) { return EXIT_FAILURE; } if ((exit_status == SYNC_ERROR_NOT_SAME_USERID) || (exit_status == SYNC_ERROR_NOT_SAME_USER)) { return dialog_generic(GTK_WINDOW(window), _("Sync Problem"), DIALOG_WARNING, _(text1), 2, button_text); } if (exit_status == SYNC_ERROR_NULL_USERID) { return dialog_generic(GTK_WINDOW(window), _("Sync Problem"), DIALOG_ERROR, _(text2), 1, button_text); } return EXIT_FAILURE; } void output_to_pane(const char *str) { int w, h, new_y; long ivalue; GtkWidget *pane_hbox; GtkRequisition size_requisition; /* Adjust window height to user preference or minimum size */ get_pref(PREF_OUTPUT_HEIGHT, &ivalue, NULL); /* Make them look at something if output happens */ if (ivalue < 50) { /* Ask GTK for size which is just large enough to show both buttons */ pane_hbox = gtk_paned_get_child2(GTK_PANED(output_pane)); gtk_widget_size_request(pane_hbox, &size_requisition); ivalue = size_requisition.height + 1; set_pref(PREF_OUTPUT_HEIGHT, ivalue, NULL, TRUE); } gdk_window_get_size(window->window, &w, &h); new_y = h - ivalue; gtk_paned_set_position(GTK_PANED(output_pane), new_y); /* Output text to window */ GtkTextIter end_iter; GtkTextMark *end_mark; gboolean scroll_to_end = FALSE; gdouble sbar_value, sbar_page_size, sbar_upper; /* The window position scrolls with new input if the user has left * the scrollbar at the bottom of the window. Otherwise, if the user * is scrolling back through the log then jpilot does nothing and defers * to the user. */ /* Get position of scrollbar */ sbar_value = g_output_text->vadjustment->value; sbar_page_size = g_output_text->vadjustment->page_size; sbar_upper = g_output_text->vadjustment->upper; /* Keep scrolling to the end only if we are already near(1 window) of the end * OR the window has just been created and is blank */ if ((abs((sbar_value+sbar_page_size) - sbar_upper) < sbar_page_size) || sbar_page_size == 1) { scroll_to_end = TRUE; } gtk_text_buffer_get_end_iter(g_output_text_buffer, &end_iter); if (! g_utf8_validate(str, -1, NULL)) { gchar *utf8_text; utf8_text = g_locale_to_utf8 (str, -1, NULL, NULL, NULL); gtk_text_buffer_insert(g_output_text_buffer, &end_iter, utf8_text, -1); g_free(utf8_text); } else gtk_text_buffer_insert(g_output_text_buffer, &end_iter, str, -1); if (scroll_to_end) { end_mark = gtk_text_buffer_create_mark(g_output_text_buffer, NULL, &end_iter, TRUE); gtk_text_buffer_move_mark(g_output_text_buffer, end_mark, &end_iter); gtk_text_view_scroll_to_mark(g_output_text, end_mark, 0, TRUE, 0.0, 0.0); gtk_text_buffer_delete_mark(g_output_text_buffer, end_mark); } } static void cb_read_pipe_from_child(gpointer data, gint in, GdkInputCondition condition) { int num; char buf_space[1026]; char *buf; int buf_len; fd_set fds; struct timeval tv; int ret, done; char *Pstr1, *Pstr2, *Pstr3; int user_len; char password[MAX_PREF_LEN]; int password_len; unsigned long user_id; int i, reason; int command; char user[MAX_PREF_LEN]; char command_str[80]; long char_set; const char *svalue; char title[MAX_PREF_LEN+256]; char *user_name; /* This is so we can always look at the previous char in buf */ buf = &buf_space[1]; buf[-1]='A'; /* that looks weird */ done=0; while (!done) { buf[0]='\0'; buf_len=0; /* Read until "\0\n", or buffer full */ for (i=0; i<1022; i++) { buf[i]='\0'; /* Linux modifies tv in the select call */ tv.tv_sec=0; tv.tv_usec=0; FD_ZERO(&fds); FD_SET(in, &fds); ret=select(in+1, &fds, NULL, NULL, &tv); if ((ret<1) || (!FD_ISSET(in, &fds))) { done=1; break; } ret = read(in, &(buf[i]), 1); if (ret <= 0) { done=1; break; } if ((buf[i-1]=='\0')&&(buf[i]=='\n')) { buf_len=buf_len-1; break; } buf_len++; if (buf_len >= 1022) { buf[buf_len]='\0'; break; } } if (buf_len < 1) break; /* Look for the command */ command=0; sscanf(buf, "%d:", &command); Pstr1 = strstr(buf, ":"); if (Pstr1 != NULL) { Pstr1++; } #ifdef PIPE_DEBUG printf("command=%d [%s]\n", command, Pstr1); #endif if (Pstr1) { switch (command) { case PIPE_PRINT: /* Output the text to the Sync window */ output_to_pane(Pstr1); break; case PIPE_USERID: /* Save user ID as pref */ num = sscanf(Pstr1, "%lu", &user_id); if (num > 0) { jp_logf(JP_LOG_DEBUG, "pipe_read: user id = %lu\n", user_id); set_pref(PREF_USER_ID, user_id, NULL, TRUE); } else { jp_logf(JP_LOG_DEBUG, "pipe_read: trouble reading user id\n"); } break; case PIPE_USERNAME: /* Save username as pref */ Pstr2 = strchr(Pstr1, '\"'); if (Pstr2) { Pstr2++; Pstr3 = strchr(Pstr2, '\"'); if (Pstr3) { user_len = Pstr3 - Pstr2; if (user_len > MAX_PREF_LEN) { user_len = MAX_PREF_LEN; } g_strlcpy(user, Pstr2, user_len+1); jp_logf(JP_LOG_DEBUG, "pipe_read: user = %s\n", user); set_pref(PREF_USER, 0, user, TRUE); } } break; case PIPE_PASSWORD: /* Save password as pref */ Pstr2 = strchr(Pstr1, '\"'); if (Pstr2) { Pstr2++; Pstr3 = strchr(Pstr2, '\"'); if (Pstr3) { password_len = Pstr3 - Pstr2; if (password_len > MAX_PREF_LEN) { password_len = MAX_PREF_LEN; } g_strlcpy(password, Pstr2, password_len+1); jp_logf(JP_LOG_DEBUG, "pipe_read: password = %s\n", password); set_pref(PREF_PASSWORD, 0, password, TRUE); } } break; case PIPE_WAITING_ON_USER: #ifdef PIPE_DEBUG printf("waiting on user\n"); #endif /* Look for the reason */ num = sscanf(Pstr1, "%d", &reason); #ifdef PIPE_DEBUG printf("reason %d\n", reason); #endif if (num > 0) { jp_logf(JP_LOG_DEBUG, "pipe_read: reason = %d\n", reason); } else { jp_logf(JP_LOG_DEBUG, "pipe_read: trouble reading reason\n"); } if ((reason == SYNC_ERROR_NOT_SAME_USERID) || (reason == SYNC_ERROR_NOT_SAME_USER) || (reason == SYNC_ERROR_NULL_USERID)) { /* Future code */ /* This is where to add an option for adding user or user id to possible ids to sync with. */ ret = bad_sync_exit_status(reason); #ifdef PIPE_DEBUG printf("ret=%d\n", ret); #endif if (ret == DIALOG_SAID_2) { sprintf(command_str, "%d:\n", PIPE_SYNC_CONTINUE); } else { sprintf(command_str, "%d:\n", PIPE_SYNC_CANCEL); } if (write(pipe_to_child, command_str, strlen(command_str)) < 0) { jp_logf(JP_LOG_WARN, "write failed %s %d\n", __FILE__, __LINE__); } fsync(pipe_to_child); } break; case PIPE_FINISHED: /* Update main window title as user name may have changed */ get_pref(PREF_CHAR_SET, &char_set, NULL); get_pref(PREF_USER, NULL, &svalue); strcpy(title, PN" "VERSION); if ((svalue) && (svalue[0])) { strcat(title, _(" User: ")); user_name = charset_p2newj(svalue, -1, char_set); strcat(title, user_name); gtk_window_set_title(GTK_WINDOW(window), title); free(user_name); } /* And redraw GUI */ if (Pstr1) { cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } break; default: jp_logf(JP_LOG_WARN, _("Unknown command from sync process\n")); jp_logf(JP_LOG_WARN, "buf=[%s]\n", buf); } } } } static void cb_about(GtkWidget *widget, gpointer data) { char *button_text[]={N_("OK")}; char about[256]; char options[1024]; int w, h; gdk_window_get_size(window->window, &w, &h); w = w/2; h = 1; g_snprintf(about, sizeof(about), _("About %s"), PN); get_compile_options(options, sizeof(options)); if (GTK_IS_WINDOW(window)) { dialog_generic(GTK_WINDOW(window), about, DIALOG_INFO, options, 1, button_text); } } /* Experimental webmenu that has never been used in practice */ #ifdef WEBMENU #define NETSCAPE_EXISTING 0 #define NETSCAPE_NEW_WINDOW 1 #define NETSCAPE_NEW 2 #define MOZILLA_EXISTING 3 #define MOZILLA_NEW_WINDOW 4 #define MOZILLA_NEW_TAB 5 #define MOZILLA_NEW 6 #define GALEON_EXISTING 7 #define GALEON_NEW_WINDOW 8 #define GALEON_NEW_TAB 9 #define GALEON_NEW 10 #define OPERA_EXISTING 11 #define OPERA_NEW_WINDOW 12 #define OPERA_NEW 13 #define GNOME_URL 14 #define LYNX_NEW 15 #define LINKS_NEW 16 #define W3M_NEW 17 #define KONQUEROR_NEW 18 static struct url_command { int id; char *desc; char *command; }; /* These strings were taken from xchat 2.0.0 */ static struct url_command url_commands[]={ {NETSCAPE_EXISTING, "/Web/Netscape/Open jpilot.org in existing", "netscape -remote 'openURL(http://jpilot.org)'"}, {NETSCAPE_NEW_WINDOW, "/Web/Netscape/Open jpilot.org in new window", "netscape -remote 'openURL(http://jpilot.org,new-window)'"}, {NETSCAPE_NEW, "/Web/Netscape/Open jpilot.org in new Netscape", "netscape http://jpilot.org"}, {MOZILLA_EXISTING, "/Web/Mozilla/Open jpilot.org in existing", "mozilla -remote 'openURL(http://jpilot.org)'"}, {MOZILLA_NEW_WINDOW, "/Web/Mozilla/Open jpilot.org in new window", "mozilla -remote 'openURL(http://jpilot.org,new-window)'"}, {MOZILLA_NEW_TAB, "/Web/Mozilla/Open jpilot.org in new tab", "mozilla -remote 'openURL(http://jpilot.org,new-tab)'"}, {MOZILLA_NEW, "/Web/Mozilla/Open jpilot.org in new Mozilla", "mozilla http://jpilot.org"}, {GALEON_EXISTING, "/Web/Galeon/Open jpilot.org in existing", "galeon -x 'http://jpilot.org'"}, {GALEON_NEW_WINDOW, "/Web/Galeon/Open jpilot.org in new window", "galeon -w 'http://jpilot.org'"}, {GALEON_NEW_TAB, "/Web/Galeon/Open jpilot.org in new tab", "galeon -n 'http://jpilot.org'"}, {GALEON_NEW, "/Web/Galeon/Open jpilot.org in new Galeon", "galeon 'http://jpilot.org'"}, {OPERA_EXISTING, "/Web/Opera/Open jpilot.org in existing", "opera -remote 'openURL(http://jpilot.org)' &"}, {OPERA_NEW_WINDOW, "/Web/Opera/Open jpilot.org in new window", "opera -remote 'openURL(http://jpilot.org,new-window)' &"}, {OPERA_NEW, "/Web/Opera/Open jpilot.org in new Opera", "opera http://jpilot.org &"}, {GNOME_URL, "/Web/GnomeUrl/Gnome URL Handler for jpilot.org", "gnome-moz-remote http://jpilot.org"}, {LYNX_NEW, "/Web/Lynx/Lynx jpilot.org", "xterm -e lynx http://jpilot.org &"}, {LINKS_NEW, "/Web/Links/Links jpilot.org", "xterm -e links http://jpilot.org &"}, {W3M_NEW, "/Web/W3M/w3m jpilot.org", "xterm -e w3m http://jpilot.org &"}, {KONQUEROR_NEW, "/Web/Konqueror/Konqueror jpilot.org", "konqueror http://jpilot.org"} }; static void cb_web(GtkWidget *widget, gpointer data) { int sel; sel=GPOINTER_TO_INT(data); jp_logf(JP_LOG_INFO, PN": executing %s\n", url_commands[sel].command); if (system(url_commands[sel].command) == -1) { jp_logf(JP_LOG_WARN, "system call failed %s %d\n", __FILE__, __LINE__); } } #endif static void install_gui_and_size(GtkWidget *main_window) { int w, h, x, y; gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = w/2; x+=40; install_gui(main_window, w, h, x, y); } static void cb_install_gui(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_install_gui()\n"); install_gui_and_size(window); } #include static guint8 *get_inline_pixbuf_data(const char **xpm_icon_data, gint icon_size) { GdkPixbuf *pixbuf; GdkPixdata *pixdata; GdkPixbuf *scaled_pb; guint8 *data; guint len; pixbuf = gdk_pixbuf_new_from_xpm_data(xpm_icon_data); if (!pixbuf) return NULL; if (gdk_pixbuf_get_width(pixbuf) != icon_size || gdk_pixbuf_get_height(pixbuf) != icon_size) { scaled_pb = gdk_pixbuf_scale_simple(pixbuf, icon_size, icon_size, GDK_INTERP_BILINEAR); g_object_unref(pixbuf); pixbuf = scaled_pb; } pixdata = (GdkPixdata*)g_malloc(sizeof(GdkPixdata)); gdk_pixdata_from_pixbuf(pixdata, pixbuf, FALSE); data = gdk_pixdata_serialize(pixdata, &len); g_object_unref(pixbuf); g_free(pixdata); return data; } static void get_main_menu(GtkWidget *my_window, GtkWidget **menubar, GList *plugin_list) { #define ICON(icon) "", icon #define ICON_XPM(icon, size) "", get_inline_pixbuf_data(icon, size) GtkItemFactoryEntry menu_items1[]={ { _("/_File"), NULL, NULL, 0, "", NULL }, { _("/File/tear"), NULL, NULL, 0, "", NULL }, { _("/File/_Find"), "F", cb_search_gui, 0, ICON(GTK_STOCK_FIND) }, { _("/File/sep1"), NULL, NULL, 0, "", NULL }, { _("/File/_Install"), "I", cb_install_gui, 0, ICON(GTK_STOCK_OPEN) }, { _("/File/Import"), NULL, cb_import, 0, ICON(GTK_STOCK_GO_FORWARD) }, { _("/File/Export"), NULL, cb_export, 0, ICON(GTK_STOCK_GO_BACK) }, { _("/File/Preferences"), "S", cb_prefs_gui, 0, ICON(GTK_STOCK_PREFERENCES) }, { _("/File/_Print"), "P", cb_print, 0, ICON(GTK_STOCK_PRINT) }, { _("/File/sep1"), NULL, NULL, 0, "", NULL }, { _("/File/Install User"), NULL, cb_install_user,0, ICON_XPM(user_icon, 16) }, { _("/File/Restore Handheld"), NULL, cb_restore, 0, ICON(GTK_STOCK_REDO) }, { _("/File/sep1"), NULL, NULL, 0, "", NULL }, { _("/File/_Quit"), "Q", cb_delete_event,0, ICON(GTK_STOCK_QUIT) }, { _("/_View"), NULL, NULL, 0, "", NULL }, { _("/View/Hide Private Records"), NULL, cb_private, HIDE_PRIVATES, "", NULL }, { _("/View/Show Private Records"), NULL, cb_private, SHOW_PRIVATES, _("/View/Hide Private Records"), NULL }, { _("/View/Mask Private Records"), NULL, cb_private, MASK_PRIVATES, _("/View/Hide Private Records"), NULL }, { _("/View/sep1"), NULL, NULL, 0, "", NULL }, { _("/View/Datebook"), "F1", cb_app_button, DATEBOOK, ICON_XPM(date_menu_icon, 16) }, { _("/View/Addresses"), "F2", cb_app_button, ADDRESS, ICON_XPM(addr_menu_icon, 16) }, { _("/View/Todos"), "F3", cb_app_button, TODO, ICON_XPM(todo_menu_icon, 14) }, { _("/View/Memos"), "F4", cb_app_button, MEMO, ICON(GTK_STOCK_JUSTIFY_LEFT) }, { _("/_Plugins"), NULL, NULL, 0, "", NULL }, #ifdef WEBMENU { _("/_Web"), NULL, NULL, 0, "", NULL },/* web */ { _("/Web/Netscape"), NULL, NULL, 0, "", NULL }, { url_commands[NETSCAPE_EXISTING].desc, NULL, cb_web, NETSCAPE_EXISTING, NULL, NULL }, { url_commands[NETSCAPE_NEW_WINDOW].desc,NULL, cb_web, NETSCAPE_NEW_WINDOW,NULL, NULL }, { url_commands[NETSCAPE_NEW].desc, NULL, cb_web, NETSCAPE_NEW, NULL, NULL }, { _("/Web/Mozilla"), NULL, NULL, 0, "", NULL }, { url_commands[MOZILLA_EXISTING].desc, NULL, cb_web, MOZILLA_EXISTING, NULL, NULL }, { url_commands[MOZILLA_NEW_WINDOW].desc, NULL, cb_web, MOZILLA_NEW_WINDOW, NULL, NULL }, { url_commands[MOZILLA_NEW_TAB].desc, NULL, cb_web, MOZILLA_NEW_TAB, NULL, NULL }, { url_commands[MOZILLA_NEW].desc, NULL, cb_web, MOZILLA_NEW, NULL, NULL }, { _("/Web/Galeon"), NULL, NULL, 0, "", NULL }, { url_commands[GALEON_EXISTING].desc, NULL, cb_web, GALEON_EXISTING, NULL, NULL }, { url_commands[GALEON_NEW_WINDOW].desc, NULL, cb_web, GALEON_NEW_WINDOW, NULL, NULL }, { url_commands[GALEON_NEW_TAB].desc, NULL, cb_web, GALEON_NEW_TAB, NULL, NULL }, { url_commands[GALEON_NEW].desc, NULL, cb_web, GALEON_NEW, NULL, NULL }, { _("/Web/Opera"), NULL, NULL, 0, "", NULL }, { url_commands[OPERA_EXISTING].desc, NULL, cb_web, OPERA_EXISTING, NULL, NULL }, { url_commands[OPERA_NEW_WINDOW].desc, NULL, cb_web, OPERA_NEW_WINDOW, NULL, NULL }, { url_commands[OPERA_NEW].desc, NULL, cb_web, OPERA_NEW, NULL, NULL }, { _("/Web/GnomeUrl"), NULL, NULL, 0, "", NULL }, { url_commands[GNOME_URL].desc, NULL, cb_web, GNOME_URL, NULL, NULL }, { _("/Web/Lynx"), NULL, NULL, 0, "", NULL }, { url_commands[LYNX_NEW].desc, NULL, cb_web, LYNX_NEW, NULL, NULL }, { _("/Web/Links"), NULL, NULL, 0, "", NULL }, { url_commands[LINKS_NEW].desc, NULL, cb_web, LINKS_NEW, NULL, NULL }, { _("/Web/W3M"), NULL, NULL, 0, "", NULL }, { url_commands[W3M_NEW].desc, NULL, cb_web, W3M_NEW, NULL, NULL }, { _("/Web/Konqueror"), NULL, NULL, 0, "", NULL }, { url_commands[KONQUEROR_NEW].desc, NULL, cb_web, KONQUEROR_NEW, NULL, NULL }, #endif { _("/_Help"), NULL, NULL, 0, "", NULL }, { _("/Help/About J-Pilot"), NULL, cb_about, 0, ICON(GTK_STOCK_DIALOG_INFO) }, { "END", NULL, NULL, 0, NULL, NULL } }; GtkItemFactory *item_factory; GtkAccelGroup *accel_group; gint nmenu_items; GtkItemFactoryEntry *menu_items2; int i1, i2; unsigned int i; char temp_str[255]; #ifdef ENABLE_PLUGINS int count, help_count; struct plugin_s *p; int str_i; char **plugin_menu_strings; char **plugin_help_strings; GList *temp_list; char *F_KEYS[]={"F5","F6","F7","F8","F9","F10","F11","F12"}; int f_key_count; #endif /* Irix doesn't like non-constant expressions in a static initializer */ /* So we have to do this to keep the compiler happy */ for (i=0; inext) { p = (struct plugin_s *)temp_list->data; if (p->menu_name) { count++; } } /* Count the help/ entries */ for (help_count=0, temp_list = plugin_list; temp_list; temp_list = temp_list->next) { p = (struct plugin_s *)temp_list->data; if (p->help_name) { help_count++; } } plugin_menu_strings = plugin_help_strings = NULL; if (count) { plugin_menu_strings = malloc(count * sizeof(char *)); } if (help_count) { plugin_help_strings = malloc(help_count * sizeof(char *)); } /* Create plugin menu strings */ str_i = 0; for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { p = (struct plugin_s *)temp_list->data; if (p->menu_name) { g_snprintf(temp_str, sizeof(temp_str), _("/_Plugins/%s"), p->menu_name); plugin_menu_strings[str_i++]=strdup(temp_str); } } /* Create help menu strings */ str_i = 0; for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { p = (struct plugin_s *)temp_list->data; if (p->help_name) { g_snprintf(temp_str, sizeof(temp_str), _("/_Help/%s"), p->help_name); plugin_help_strings[str_i++]=strdup(temp_str); } } #endif nmenu_items = (sizeof (menu_items1) / sizeof (menu_items1[0])) - 2; #ifdef ENABLE_PLUGINS if (count) { nmenu_items = nmenu_items + count + 1; } nmenu_items = nmenu_items + help_count; #endif menu_items2=malloc(nmenu_items * sizeof(GtkItemFactoryEntry)); if (!menu_items2) { jp_logf(JP_LOG_WARN, "get_main_menu(): %s\n", _("Out of memory")); return; } /* Copy the first part of the array until Plugins */ for (i1=i2=0; ; i1++, i2++) { if (!strcmp(menu_items1[i1].path, _("/_Plugins"))) { break; } menu_items2[i2]=menu_items1[i1]; } #ifdef ENABLE_PLUGINS if (count) { /* This is the /_Plugins entry */ menu_items2[i2]=menu_items1[i1]; i1++; i2++; str_i=0; for (temp_list = plugin_list, f_key_count=0; temp_list; temp_list = temp_list->next, f_key_count++) { p = (struct plugin_s *)temp_list->data; if (!p->menu_name) { f_key_count--; continue; } menu_items2[i2].path=plugin_menu_strings[str_i]; if (f_key_count < 8) { menu_items2[i2].accelerator=F_KEYS[f_key_count]; } else { menu_items2[i2].accelerator=NULL; } menu_items2[i2].callback=cb_plugin_gui; menu_items2[i2].callback_action=p->number; menu_items2[i2].item_type=0; str_i++; i2++; } } else { /* Skip the /_Plugins entry */ i1++; } #else /* Skip the /_Plugins entry */ i1++; #endif /* Copy the last part of the array until END */ for (; strcmp(menu_items1[i1].path, "END"); i1++, i2++) { menu_items2[i2]=menu_items1[i1]; } #ifdef ENABLE_PLUGINS if (help_count) { str_i=0; for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { p = (struct plugin_s *)temp_list->data; if (!p->help_name) { continue; } menu_items2[i2].path=plugin_help_strings[str_i]; menu_items2[i2].accelerator=NULL; menu_items2[i2].callback=cb_plugin_help; menu_items2[i2].callback_action=p->number; menu_items2[i2].item_type=0; str_i++; i2++; } } #endif accel_group = gtk_accel_group_new(); /* This function initializes the item factory. * Param 1: The type of menu - can be GTK_TYPE_MENU_BAR, GTK_TYPE_MENU, * or GTK_TYPE_OPTION_MENU. * Param 2: The path of the menu. * Param 3: A pointer to a gtk_accel_group. The item factory sets up * the accelerator table while generating menus. */ item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", accel_group); /* This function generates the menu items. Pass the item factory, * the number of items in the array, the array itself, and any * callback data for the the menu items. */ gtk_item_factory_create_items(item_factory, nmenu_items, menu_items2, NULL); /* Attach the new accelerator group to the window. */ gtk_window_add_accel_group(GTK_WINDOW(my_window), accel_group); if (menubar) { /* Finally, return the actual menu bar created by the item factory. */ *menubar = gtk_item_factory_get_widget (item_factory, "
"); } free(menu_items2); #ifdef ENABLE_PLUGINS if (count) { for (str_i=0; str_i < count; str_i++) { free(plugin_menu_strings[str_i]); } free(plugin_menu_strings); } if (help_count) { for (str_i=0; str_i < help_count; str_i++) { free(plugin_help_strings[str_i]); } free(plugin_help_strings); } #endif menu_hide_privates = GTK_CHECK_MENU_ITEM(gtk_item_factory_get_widget( item_factory, _("/View/Hide Private Records"))); menu_show_privates = GTK_CHECK_MENU_ITEM(gtk_item_factory_get_widget( item_factory, _("/View/Show Private Records"))); menu_mask_privates = GTK_CHECK_MENU_ITEM(gtk_item_factory_get_widget( item_factory, _("/View/Mask Private Records"))); } static void cb_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { int pw, ph; int x,y; #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif /* gdk_window_get_deskrelative_origin(window->window, &x, &y); */ gdk_window_get_origin(window->window, &x, &y); jp_logf(JP_LOG_DEBUG, "x=%d, y=%d\n", x, y); gdk_window_get_size(window->window, &pw, &ph); set_pref(PREF_WINDOW_WIDTH, pw, NULL, FALSE); set_pref(PREF_WINDOW_HEIGHT, ph, NULL, FALSE); set_pref(PREF_LAST_APP, glob_app, NULL, TRUE); gui_cleanup(); if (weekview_window) cb_weekview_quit(weekview_window, NULL); if (monthview_window) cb_monthview_quit(monthview_window, NULL); #ifdef ENABLE_PLUGINS plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->plugin_exit_cleanup) { jp_logf(JP_LOG_DEBUG, "calling plugin_exit_cleanup\n"); plugin->plugin_exit_cleanup(); } } } #endif if (glob_child_pid) { jp_logf(JP_LOG_DEBUG, "killing %d\n", glob_child_pid); kill(glob_child_pid, SIGTERM); } /* Save preferences in jpilot.rc */ pref_write_rc_file(); cleanup_pc_files(); cleanup_pidfile(); gtk_main_quit(); } static void cb_output(GtkWidget *widget, gpointer data) { int flags; int w, h, output_height; flags=GPOINTER_TO_INT(data); if ((flags==OUTPUT_MINIMIZE) || (flags==OUTPUT_RESIZE)) { jp_logf(JP_LOG_DEBUG,"paned pos = %d\n", gtk_paned_get_position(GTK_PANED(output_pane))); gdk_window_get_size(window->window, &w, &h); output_height = (h - gtk_paned_get_position(GTK_PANED(output_pane))); set_pref(PREF_OUTPUT_HEIGHT, output_height, NULL, TRUE); if (flags==OUTPUT_MINIMIZE) { gtk_paned_set_position(GTK_PANED(output_pane), h); } jp_logf(JP_LOG_DEBUG,"output height = %d\n", output_height); } if (flags==OUTPUT_CLEAR) { gtk_text_buffer_set_text(g_output_text_buffer, "", -1); } } static gint cb_output_idle(gpointer data) { cb_output(NULL, data); /* returning false removes this handler from being called again */ return FALSE; } static gint cb_output2(GtkWidget *widget, GdkEventButton *event, gpointer data) { /* Because the pane isn't redrawn yet we can't get positions from it. * So we have to call back after everything is drawn */ gtk_idle_add(cb_output_idle, data); return EXIT_SUCCESS; } static gint cb_check_version(gpointer main_window) { int major, minor, micro; int r; char str_ver[8]; jp_logf(JP_LOG_DEBUG, "cb_check_version\n"); r = sscanf(VERSION, "%d.%d.%d", &major, &minor, µ); if (r!=3) { jp_logf(JP_LOG_DEBUG, "couldn't parse VERSION\n"); return FALSE; } /* These shouldn't be greater than 100, but just in case */ major %= 100; minor %= 100; micro %= 100; sprintf(str_ver, "%02d%02d%02d", major, minor, micro); set_pref(PREF_VERSION, 0, str_ver, 1); return FALSE; } int main(int argc, char *argv[]) { GtkWidget *main_vbox; GtkWidget *temp_hbox; GtkWidget *temp_vbox; GtkWidget *button_datebook,*button_address,*button_todo,*button_memo; GtkWidget *button; GtkWidget *separator; GtkStyle *style; GdkBitmap *mask; GtkWidget *pixmapwid; GdkPixmap *pixmap; GtkWidget *menubar = NULL; GtkWidget *scrolled_window; GtkAccelGroup *accel_group; /* Extract first day of week preference from locale in GTK2 */ int pref_fdow = 0; #ifdef HAVE__NL_TIME_FIRST_WEEKDAY char *langinfo; int week_1stday = 0; int first_weekday = 1; unsigned int week_origin; #else # ifdef ENABLE_NLS char *week_start; # endif #endif unsigned char skip_past_alarms; unsigned char skip_all_alarms; int filedesc[2]; long ivalue; const char *svalue; int i, ret, height, width; char title[MAX_PREF_LEN+256]; long pref_width, pref_height, show_tooltips; long char_set; char *geometry_str=NULL; int iconify = 0; #ifdef ENABLE_PLUGINS GList *plugin_list; GList *temp_list; struct plugin_s *plugin; jp_startup_info info; #endif int pid; int remote_sync = FALSE; #if defined(ENABLE_NLS) # ifdef HAVE_LOCALE_H char *current_locale; # endif #endif skip_plugins=FALSE; skip_past_alarms=FALSE; skip_all_alarms=FALSE; /* log all output to a file */ glob_log_file_mask = JP_LOG_INFO | JP_LOG_WARN | JP_LOG_FATAL | JP_LOG_STDOUT; glob_log_stdout_mask = JP_LOG_INFO | JP_LOG_WARN | JP_LOG_FATAL | JP_LOG_STDOUT; glob_log_gui_mask = JP_LOG_FATAL | JP_LOG_WARN | JP_LOG_GUI; glob_find_id = 0; /* Directory ~/.jpilot is created with permissions of 700 to prevent anyone * but the user from looking at potentially sensitive files. * Files within the directory have permission 600 */ umask(0077); /* enable internationalization(i18n) before printing any output */ #if defined(ENABLE_NLS) # ifdef HAVE_LOCALE_H current_locale = setlocale(LC_ALL, ""); # endif bindtextdomain(EPN, LOCALEDIR); textdomain(EPN); #endif pref_init(); /* read jpilot.rc file for preferences */ pref_read_rc_file(); /* Extract first day of week preference from locale in GTK2 */ # ifdef HAVE__NL_TIME_FIRST_WEEKDAY /* GTK 2.8 libraries */ langinfo = nl_langinfo(_NL_TIME_FIRST_WEEKDAY); first_weekday = langinfo[0]; langinfo = nl_langinfo(_NL_TIME_WEEK_1STDAY); week_origin = GPOINTER_TO_INT(langinfo); if (week_origin == 19971130) /* Sunday */ week_1stday = 0; else if (week_origin == 19971201) /* Monday */ week_1stday = 1; else g_warning ("Unknown value of _NL_TIME_WEEK_1STDAY.\n"); pref_fdow = (week_1stday + first_weekday - 1) % 7; # else /* GTK 2.6 libraries */ # if defined(ENABLE_NLS) week_start = dgettext("gtk20", "calendar:week_start:0"); if (strncmp("calendar:week_start:", week_start, 20) == 0) { pref_fdow = *(week_start + 20) - '0'; } else { pref_fdow = -1; } # endif # endif if (pref_fdow > 1) pref_fdow = 1; if (pref_fdow < 0) pref_fdow = 0; set_pref_possibility(PREF_FDOW, pref_fdow, TRUE); if (otherconv_init()) { printf("Error: could not set character encoding\n"); exit(0); } get_pref(PREF_WINDOW_WIDTH, &pref_width, NULL); get_pref(PREF_WINDOW_HEIGHT, &pref_height, NULL); /* parse command line options */ for (i=1; inext) { plugin = (struct plugin_s *)temp_list->data; jp_logf(JP_LOG_DEBUG, "plugin: [%s] was loaded\n", plugin->name); if (plugin) { if (plugin->plugin_startup) { info.base_dir = strdup(BASE_DIR); jp_logf(JP_LOG_DEBUG, "calling plugin_startup for [%s]\n", plugin->name); plugin->plugin_startup(&info); if (info.base_dir) { free(info.base_dir); } } } } #endif glob_date_timer_tag=0; glob_child_pid=0; /* Create a pipe to send data from sync child to parent */ if (pipe(filedesc) < 0) { jp_logf(JP_LOG_FATAL, _("Unable to open pipe\n")); exit(-1); } pipe_from_child = filedesc[0]; pipe_to_parent = filedesc[1]; /* Create a pipe to send data from parent to sync child */ if (pipe(filedesc) < 0) { jp_logf(JP_LOG_FATAL, _("Unable to open pipe\n")); exit(-1); } pipe_from_parent = filedesc[0]; pipe_to_child = filedesc[1]; get_pref(PREF_CHAR_SET, &char_set, NULL); switch (char_set) { case CHAR_SET_JAPANESE: gtk_rc_parse("gtkrc.ja"); break; case CHAR_SET_TRADITIONAL_CHINESE: gtk_rc_parse("gtkrc.zh_TW.Big5"); break; case CHAR_SET_KOREAN: gtk_rc_parse("gtkrc.ko"); break; /* Since Now, these are not supported yet. */ #if 0 case CHAR_SET_SIMPLIFIED_CHINESE: gtk_rc_parse("gtkrc.zh_CN"); break; case CHAR_SET_1250: gtk_rc_parse("gtkrc.???"); break; case CHAR_SET_1251: gtk_rc_parse("gtkrc.iso-8859-5"); break; case CHAR_SET_1251_B: gtk_rc_parse("gtkrc.ru"); break; #endif default: break; /* do nothing */ } jpilot_master_pid = getpid(); gtk_init(&argc, &argv); read_gtkrc_file(); get_pref(PREF_USER, NULL, &svalue); strcpy(title, PN" "VERSION); if ((svalue) && (svalue[0])) { strcat(title, _(" User: ")); /* Convert user name so that it can be displayed in window title */ /* We assume user name is coded in jpilot.rc as it is on the Palm Pilot */ { char *newvalue; newvalue = charset_p2newj(svalue, -1, char_set); strcat(title, newvalue); free(newvalue); } } window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", title, NULL); /* Set default size and position of main window */ ret = 0; if (geometry_str) { ret = gtk_window_parse_geometry(GTK_WINDOW(window), geometry_str); } if ((!geometry_str) || (ret != 1)) { gtk_window_set_default_size(GTK_WINDOW(window), pref_width, pref_height); } if (iconify) { gtk_window_iconify(GTK_WINDOW(window)); } /* Set a handler for delete_event that immediately exits GTK. */ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(cb_delete_event), NULL); gtk_container_set_border_width(GTK_CONTAINER(window), 0); main_vbox = gtk_vbox_new(FALSE, 0); g_hbox = gtk_hbox_new(FALSE, 0); g_vbox0 = gtk_vbox_new(FALSE, 0); /* Output Pane */ output_pane = gtk_vpaned_new(); gtk_signal_connect(GTK_OBJECT(output_pane), "button_release_event", GTK_SIGNAL_FUNC(cb_output2), GINT_TO_POINTER(OUTPUT_RESIZE)); gtk_container_add(GTK_CONTAINER(window), output_pane); gtk_paned_pack1(GTK_PANED(output_pane), main_vbox, FALSE, FALSE); /* Create the Menu Bar at the top */ #ifdef ENABLE_PLUGINS get_main_menu(window, &menubar, plugin_list); #else get_main_menu(window, &menubar, NULL); #endif gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(main_vbox), g_hbox, TRUE, TRUE, 3); gtk_container_set_border_width(GTK_CONTAINER(g_hbox), 10); gtk_box_pack_start(GTK_BOX(g_hbox), g_vbox0, FALSE, FALSE, 3); /* Output Text scrolled window */ temp_hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(temp_hbox), 5); gtk_paned_pack2(GTK_PANED(output_pane), temp_hbox, FALSE, TRUE); temp_vbox = gtk_vbox_new(FALSE, 3); gtk_container_set_border_width(GTK_CONTAINER(temp_vbox), 6); gtk_box_pack_end(GTK_BOX(temp_hbox), temp_vbox, FALSE, FALSE, 0); g_output_text = GTK_TEXT_VIEW(gtk_text_view_new()); g_output_text_buffer = gtk_text_view_get_buffer(g_output_text); gtk_text_view_set_cursor_visible(g_output_text, FALSE); gtk_text_view_set_editable(g_output_text, FALSE); gtk_text_view_set_wrap_mode(g_output_text, GTK_WRAP_WORD); scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(g_output_text)); gtk_box_pack_start_defaults(GTK_BOX(temp_hbox), scrolled_window); button = gtk_button_new_from_stock(GTK_STOCK_CLEAR); gtk_box_pack_start(GTK_BOX(temp_vbox), button, TRUE, TRUE, 3); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_output), GINT_TO_POINTER(OUTPUT_CLEAR)); button = gtk_button_new_from_stock(GTK_STOCK_REMOVE); gtk_box_pack_start(GTK_BOX(temp_vbox), button, TRUE, TRUE, 3); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_output), GINT_TO_POINTER(OUTPUT_MINIMIZE)); /* "Datebook" button */ temp_hbox = gtk_hbox_new(FALSE, 0); button_datebook = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_datebook), "clicked", GTK_SIGNAL_FUNC(cb_app_button), GINT_TO_POINTER(DATEBOOK)); gtk_box_pack_start(GTK_BOX(g_vbox0), temp_hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(temp_hbox), button_datebook, TRUE, FALSE, 0); /* "Address" button */ temp_hbox = gtk_hbox_new(FALSE, 0); button_address = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_address), "clicked", GTK_SIGNAL_FUNC(cb_app_button), GINT_TO_POINTER(ADDRESS)); gtk_box_pack_start(GTK_BOX(g_vbox0), temp_hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(temp_hbox), button_address, TRUE, FALSE, 0); /* "Todo" button */ temp_hbox = gtk_hbox_new(FALSE, 0); button_todo = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_todo), "clicked", GTK_SIGNAL_FUNC(cb_app_button), GINT_TO_POINTER(TODO)); gtk_box_pack_start(GTK_BOX(g_vbox0), temp_hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(temp_hbox), button_todo, TRUE, FALSE, 0); /* "Memo" button */ temp_hbox = gtk_hbox_new(FALSE, 0); button_memo = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_memo), "clicked", GTK_SIGNAL_FUNC(cb_app_button), GINT_TO_POINTER(MEMO)); gtk_box_pack_start(GTK_BOX(g_vbox0), temp_hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(temp_hbox), button_memo, TRUE, FALSE, 0); gtk_widget_set_name(button_datebook, "button_app"); gtk_widget_set_name(button_address, "button_app"); gtk_widget_set_name(button_todo, "button_app"); gtk_widget_set_name(button_memo, "button_app"); /* Create tooltips */ glob_tooltips = gtk_tooltips_new(); /* Get preference to show tooltips */ get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); /* Create key accelerator */ accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); /* Lock/Unlock/Mask buttons */ button_locked = gtk_button_new(); button_masklocked = gtk_button_new(); button_unlocked = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_locked), "clicked", GTK_SIGNAL_FUNC(cb_private), GINT_TO_POINTER(SHOW_PRIVATES)); gtk_signal_connect(GTK_OBJECT(button_masklocked), "clicked", GTK_SIGNAL_FUNC(cb_private), GINT_TO_POINTER(HIDE_PRIVATES)); gtk_signal_connect(GTK_OBJECT(button_unlocked), "clicked", GTK_SIGNAL_FUNC(cb_private), GINT_TO_POINTER(MASK_PRIVATES)); gtk_box_pack_start(GTK_BOX(g_vbox0), button_locked, FALSE, FALSE, 20); gtk_box_pack_start(GTK_BOX(g_vbox0), button_masklocked, FALSE, FALSE, 20); gtk_box_pack_start(GTK_BOX(g_vbox0), button_unlocked, FALSE, FALSE, 20); set_tooltip(show_tooltips, glob_tooltips, button_locked, _("Show private records Ctrl+Z"), NULL); gtk_widget_add_accelerator(button_locked, "clicked", accel_group, GDK_z, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button_masklocked, _("Hide private records Ctrl+Z"), NULL); gtk_widget_add_accelerator(button_masklocked, "clicked", accel_group, GDK_z, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button_unlocked, _("Mask private records Ctrl+Z"), NULL); gtk_widget_add_accelerator(button_unlocked, "clicked", accel_group, GDK_z, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); /* "Sync" button */ button_sync = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_sync), "clicked", GTK_SIGNAL_FUNC(cb_sync), GINT_TO_POINTER(skip_plugins ? SYNC_NO_PLUGINS : 0)); gtk_box_pack_start(GTK_BOX(g_vbox0), button_sync, FALSE, FALSE, 3); set_tooltip(show_tooltips, glob_tooltips, button_sync, _("Sync your palm to the desktop Ctrl+Y"), NULL); gtk_widget_add_accelerator(button_sync, "clicked", accel_group, GDK_y, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); /* "Cancel Sync" button */ button_cancel_sync = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_cancel_sync), "clicked", GTK_SIGNAL_FUNC(cb_cancel_sync), NULL); gtk_box_pack_start(GTK_BOX(g_vbox0), button_cancel_sync, FALSE, FALSE, 3); set_tooltip(show_tooltips, glob_tooltips, button_cancel_sync, _("Stop Sync process"), NULL); /* "Backup" button in left column */ button_backup = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(button_backup), "clicked", GTK_SIGNAL_FUNC(cb_sync), GINT_TO_POINTER (skip_plugins ? SYNC_NO_PLUGINS | SYNC_FULL_BACKUP : SYNC_FULL_BACKUP)); gtk_box_pack_start(GTK_BOX(g_vbox0), button_backup, FALSE, FALSE, 3); set_tooltip(show_tooltips, glob_tooltips, button_backup, _("Sync your palm to the desktop\n" "and then do a backup"), NULL); /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(g_vbox0), separator, FALSE, TRUE, 5); /* Creates the 2 main boxes that are changeable */ create_main_boxes(); gtk_widget_show_all(window); gtk_widget_show(window); style = gtk_widget_get_style(window); /* Jpilot Icon pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, NULL, jpilot_icon4_xpm); gdk_window_set_icon(window->window, NULL, pixmap, mask); gdk_window_set_icon_name(window->window, PN); /* Create "Datebook" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], datebook_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_datebook), pixmapwid); gtk_button_set_relief(GTK_BUTTON(button_datebook), GTK_RELIEF_NONE); /* Create "Address" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], address_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_address), pixmapwid); gtk_button_set_relief(GTK_BUTTON(button_address), GTK_RELIEF_NONE); /* Create "Todo" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], todo_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_todo), pixmapwid); gtk_button_set_relief(GTK_BUTTON(button_todo), GTK_RELIEF_NONE); /* Create "Memo" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], memo_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_memo), pixmapwid); gtk_button_set_relief(GTK_BUTTON(button_memo), GTK_RELIEF_NONE); /* Show locked/unlocked/masked button */ #ifdef ENABLE_PRIVATE gtk_widget_show(button_locked); gtk_widget_hide(button_masklocked); gtk_widget_hide(button_unlocked); #else gtk_widget_hide(button_locked); gtk_widget_hide(button_masklocked); gtk_widget_show(button_unlocked); #endif /* Create "locked" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], locked_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_locked), pixmapwid); /* Create "masked" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], masklocked_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_masklocked), pixmapwid); /* Create "unlocked" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], unlocked_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_unlocked), pixmapwid); /* Create "sync" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], sync_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_sync), pixmapwid); /* Create "cancel sync" pixmap */ /* Hide until sync process started */ gtk_widget_hide(button_cancel_sync); pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], cancel_sync_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_cancel_sync), pixmapwid); /* Create "backup" pixmap */ pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], backup_xpm); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); gtk_container_add(GTK_CONTAINER(button_backup), pixmapwid); set_tooltip(show_tooltips, glob_tooltips, button_datebook, _("Datebook/Go to Today"), NULL); set_tooltip(show_tooltips, glob_tooltips, button_address, _("Address Book"), NULL); set_tooltip(show_tooltips, glob_tooltips, button_todo, _("ToDo List"), NULL); set_tooltip(show_tooltips, glob_tooltips, button_memo, _("Memo Pad"), NULL); /* Set a callback for our pipe from the sync child process */ gdk_input_add(pipe_from_child, GDK_INPUT_READ, cb_read_pipe_from_child, window); get_pref(PREF_LAST_APP, &ivalue, NULL); /* We don't want to start up to a plugin because the plugin might * repeatedly segfault. Of course main apps can do that, but since I * handle the email support... */ if ((ivalue==ADDRESS) || (ivalue==DATEBOOK) || (ivalue==TODO) || (ivalue==MEMO)) { cb_app_button(NULL, GINT_TO_POINTER(ivalue)); } /* Set the pane size */ width = height = 0; gdk_window_get_size(window->window, &width, &height); gtk_paned_set_position(GTK_PANED(output_pane), height); alarms_init(skip_past_alarms, skip_all_alarms); /* In-line code to switch user to UTF-8 encoding. * Should probably be made a subroutine */ { long utf_encoding; char *button_text[] = { N_("Do it now"), N_("Remind me later"), N_("Don't tell me again!") }; /* check if a UTF-8 one is used */ if (char_set >= CHAR_SET_UTF) set_pref(PREF_UTF_ENCODING, 1, NULL, TRUE); get_pref(PREF_UTF_ENCODING, &utf_encoding, NULL); if (0 == utf_encoding) { /* user has not switched to UTF */ int ret; char text[1000]; g_snprintf(text, sizeof(text), _("J-Pilot uses the GTK2 graphical toolkit. " "This version of the toolkit uses UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters (accents for example).\n" "\n" /* Coded to reuse existing i18n strings */ "Go to the menu \"%s\" and change the \"%s\"."), _("/File/Preferences"), _("Character Set")); ret = dialog_generic(GTK_WINDOW(window), _("Select a UTF-8 encoding"), DIALOG_QUESTION, text, 3, button_text); switch (ret) { case DIALOG_SAID_1: cb_prefs_gui(NULL, window); break; case DIALOG_SAID_2: /* Do nothing and remind user at next program invocation */ break; case DIALOG_SAID_3: set_pref(PREF_UTF_ENCODING, 1, NULL, TRUE); break; } } } gtk_idle_add(cb_check_version, window); gtk_main(); otherconv_free(); return EXIT_SUCCESS; } jpilot-1.8.2/jpilotrc.steel0000664000175000017500000001160012320101153012614 00000000000000style "window" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } } style "fileselect" = "window" { text[NORMAL] = { 0.0, 0.0, 1.0 } # fg of file selection lists base[NORMAL] = { 0.85, 0.9, 1.0 } # bg of file selection lists } style "frame" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 1.0, 1.0, 1.0 } } style "label" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } } style "label_high" { fg[NORMAL] = { 0.0, 0.0, 0.8 } } style "today" { base[NORMAL] = { 1.0, 0.38, .38 } } style "tooltips" { fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 1.0, 0.98, .84 } } style "button" { # This shows all the possible states for a button. # The only one that doesn't apply is the SELECTED state. fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.5, 0.5, 0.7 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 0.4, 0.4, 0.6 } #fg[NORMAL] = { 0.9, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { .475, .490, .757 } } style "button_app" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.6, 0.6, 0.8 } } style "toggle_button" = "button" { } style "radio_button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.4, 0.4, 0.6 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } #bg[ACTIVE] = { 1.0, 1.0, 0.0 } fg[NORMAL] = { 0.25, 0.25, 0.38 } bg[NORMAL] = { 0.4, 0.4, 0.6 } } style "spin_button" { fg[PRELIGHT] = { 0.0, 0.0, 0.0 } bg[PRELIGHT] = { 0.95, 0.95, 0.71 } fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } base[NORMAL] = { 0.85, 0.9, 1.0 } #bg for text portion of spin button fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { .78, .78, .78 } } style "text" { #This is how to use a different font under GTK 2.x #font_name = "Sans 12" fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } fg[PRELIGHT] = { 0.0, 0.0, 0.0 } bg[PRELIGHT] = { 0.5, 0.5, 0.7 } #fg[SELECTED] = { 0.0, 0.0, 0.0 } #bg[SELECTED] = { 0.9, 0.8, 1.0 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } bg[ACTIVE] = { 0.4, 0.4, 0.6 } #bg of scrollbars fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } #fg of scrollbar buttons when insensitive bg[INSENSITIVE] = { 0.4, 0.4, 0.6 } #bg of scrollbar buttons when insensitive text[NORMAL] = { 0.0, 0.0, 1.0 } base[NORMAL] = { 0.85, 0.9, 1.0 } text[ACTIVE] = { 0.0, 0.0, 1.0 } #fg of selected text after focus has left base[ACTIVE] = { 0.85, 0.9, 1.0 } #bg of selected text after focus has left } style "menu" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.4, 0.6 } fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.5, 0.5, 0.7 } fg[ACTIVE] = { 0.0, 1.0, 0.0 } bg[ACTIVE] = { 0.4, 0.4, 0.6 } fg[SELECTED] = { 1.0, 0.0, 0.0 } bg[SELECTED] = { 1.0, 0.0, 0.5 } } style "notebook" { bg[NORMAL] = { 0.4, 0.4, 0.6 } fg[NORMAL] = { 0.9, 0.9, 0.9 } bg[ACTIVE] = { 0.3, 0.3, 0.5 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } } style "calendar" { fg[NORMAL] = { 1.0, 1.0, 1.0 } # month/year text bg[NORMAL] = { 0.5, 0.5, 0.7 } # month/year bg and out-of-month days fg[PRELIGHT] = { 1.0, 1.0, 0.0 } # prelights for month/year arrows bg[PRELIGHT] = { 0.4, 0.4, 0.6 } # prelights for month/year arrows text[NORMAL] = { 1.0, 1.0, 1.0 } # day numbers text[SELECTED] = { 1.0, 1.0, 1.0 } # selected day and week numbers fg base[SELECTED] = { 0.5, 0.5, 0.7 } # selected day and week numbers bg text[ACTIVE] = { 1.0, 1.0, 1.0 } # week numbers fg when focus is not on widget base[ACTIVE] = { 0.5, 0.5, 0.7 } # week numbers bg when focus is not on widget base[NORMAL] = { 0.4, 0.4, 0.6 } # bg for calendar } ################################################################################ # These set the widget types to use the styles defined above. widget_class "GtkWindow" style "window" widget_class "GtkDialog" style "window" widget_class "GtkMessageDialog" style "window" widget_class "GtkFileSelection*" style "fileselect" widget_class "GtkFontSel*" style "notebook" widget_class "*GtkNotebook" style "notebook" widget_class "*GtkButton*" style "button" widget_class "*GtkCheckButton*" style "radio_button" widget_class "*GtkRadioButton*" style "radio_button" widget_class "*GtkToggleButton*" style "toggle_button" widget_class "*GtkSpinButton" style "spin_button" widget_class "*Menu*" style "menu" widget_class "*GtkText" style "text" widget_class "*GtkTextView" style "text" widget_class "*GtkEntry" style "text" widget_class "*GtkCList" style "text" widget_class "*GtkVScrollbar" style "text" widget_class "*GtkHScrollbar" style "text" widget_class "*GtkLabel" style "label" widget_class "*GtkEventBox" style "label" widget_class "*GtkFrame" style "frame" widget_class "*GtkCalendar" style "calendar" ############################################################ # These set the widget types for named gtk widgets in the C code widget "*.button_app" style "button_app" widget "*.label_high" style "label_high" widget "*.today" style "today" widget "*tooltip*" style "tooltips" jpilot-1.8.2/jpilot.xpm0000664000175000017500000000226412320101153011765 00000000000000/* XPM */ static char * jpilot_xpm[] = { "24 32 17 1", " c None", ". c #FFFF00", "+ c #666667", "@ c #4C4C4C", "# c #000000", "$ c #191919", "% c #7F7F00", "& c #FFFFFF", "* c #999999", "= c #333333", "- c #B2B2B2", "; c #7F7F7F", "> c #E5E5E5", ", c #CCCCCC", "' c #00FFFF", ") c #7F0000", "! c #007F7F", " #$===$ ", " #$@++@=$ ", " $@++@++$# ", " #=+@@->,+@# ", " #@+@*&&>-,# ", " $@+@,&&>,-$ ", " $+@@>&>;-;# ", " #=+%@--;%;$#$$# ", " $=+.*.;%.*%@%.%$# ", " $@@%.%.......-..=#", " #=+@+.*;%%%*.....%=", " #@++*...%$#$)%.*..@", " #=+@+,-.%$ ##$=%%%", " #$+@++>>--$ ##", " $@@++;>&&,$ #$$$## ", " #=++@@;&&&>$ $;**;=#", " $@+@@@-&&&>=# +--'-+#", " #=+++@@,&,>&+=#$*'-,,= ", " $@+@+@;&&*->*@@%*---;$ ", "#$@++@@*>-+@;*@+*'**;=# ", "#@+@@+@++@+@@*@+-,*++=# ", "$@@@+;+@+@++;-++,,,*@=$#", "=@+@%.%+++@,,*+=!*-*%.*$", "=+@@*..%.%,&&-*#$%...%=#", "=++..-...*>&&&>$+.-..% ", "@@;......->&&&&%.....= ", "=+@...*.%,&&&&-%...%=# ", "=+@%.*...>&&&&*..;%$# ", "$++@;.*..>&&>-%.%$# ", "#=@+%...*&>,;*..$ ", " #===%.*+*@$$%%= ", " ##$)%%$## #$# "}; jpilot-1.8.2/autogen.sh0000775000175000017500000000173112320101153011735 00000000000000# Exit if a command fails set -e # Echo commands before they execute to help show progress set -x # Clear files that will be rebuilt by autoconf, automake, & autoheader rm -f configure Makefile Makefile.in config.h.in # autopoint is a lightweight gettextize which copies required files # but does not change Makefile.am autopoint --force # Copy over scripts to allow internationalization intltoolize --force --copy --automake # Copy over scripts for libtool libtoolize --force --copy --automake # Update aclocal after other scripts have run aclocal -I m4 # Create config.h.in from configure.in autoheader # Create Makefile.in from Makefile.am & configure.in automake --add-missing --foreign # Create config.h, Makefile, & configure script autoconf # By default, run configure after generating build environment if test x$NOCONFIGURE = x; then echo Running configure $conf_flags "$@" ... ./configure $conf_flags "$@" \ || exit 1 else echo Skipping configure process. fi jpilot-1.8.2/jpilot.spec0000664000175000017500000001132212336026331012121 00000000000000%define version 1.8.2 Name: jpilot Summary: Desktop organizer software for the Palm Pilot Version: 1.8.2 Release: 1 License: GPL Group: Applications/Productivity Source: http://jpilot.org/jpilot-1.8.2.tar.gz URL: http://www.jpilot.org Packager: Judd Montgomery Prefix: /usr BuildRoot: %{_tmppath}/%{name}-1.8.2-root Requires: pilot-link >= 0.12.5 %description J-Pilot is a desktop organizer application for the palm pilot that runs under Linux and Unix using X-Windows and GTK+. It is similar in functionality to the one that 3Com distributes and has many features not found in the 3Com desktop. %define _prefix %{prefix} %define _mandir %{prefix}/share/man %define _infodir %{prefix}/share/info %define _libdir %{prefix}/lib %define _datadir %{prefix}/share %define _docdir %{prefix}/share/doc/%{name} %prep %setup -q %build if [ ! -f ./configure ]; then ./autogen.sh --prefix=%{prefix} --mandir=%{_mandir} else %configure --prefix=%{prefix} --mandir=%{_mandir} fi make %install rm -rf $RPM_BUILD_ROOT strip jpilot make DESTDIR=$RPM_BUILD_ROOT install %post %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %{_bindir}/jpilot %{_bindir}/jpilot-dial %{_bindir}/jpilot-dump %{_bindir}/jpilot-merge %{_bindir}/jpilot-sync %{_libdir}/jpilot/plugins/libexpense.la %{_libdir}/jpilot/plugins/libexpense.so %{_libdir}/jpilot/plugins/libkeyring.la %{_libdir}/jpilot/plugins/libkeyring.so %{_libdir}/jpilot/plugins/libsynctime.la %{_libdir}/jpilot/plugins/libsynctime.so %{_docdir}/AUTHORS %{_docdir}/BUGS %{_docdir}/ChangeLog %{_docdir}/COPYING %{_docdir}/INSTALL %{_docdir}/README %{_docdir}/TODO %{_docdir}/icons/README %{_docdir}/icons/jpilot-icon1.xpm %{_docdir}/icons/jpilot-icon2.xpm %{_docdir}/icons/jpilot-icon3.xpm %{_docdir}/icons/jpilot-icon4.xpm %{_docdir}/manual/jpilot-address.png %{_docdir}/manual/jpilot-datebook.png %{_docdir}/manual/jpilot-expense.png %{_docdir}/manual/jpilot-install.png %{_docdir}/manual/jpilot-memo.png %{_docdir}/manual/jpilot-prefs-1.png %{_docdir}/manual/jpilot-prefs-2.png %{_docdir}/manual/jpilot-prefs-3.png %{_docdir}/manual/jpilot-prefs-4.png %{_docdir}/manual/jpilot-prefs-5.png %{_docdir}/manual/jpilot-prefs-6.png %{_docdir}/manual/jpilot-prefs-7.png %{_docdir}/manual/jpilot-prefs-8.png %{_docdir}/manual/jpilot-print.png %{_docdir}/manual/jpilot-search.png %{_docdir}/manual/jpilot-todo.png %{_docdir}/manual/jpilot-toplogo.jpg %{_docdir}/manual/manual.html %{_docdir}/manual/plugin.html %{_datadir}/jpilot/AddressDB.pdb %{_datadir}/jpilot/CalendarDB-PDat.pdb %{_datadir}/jpilot/ContactsDB-PAdd.pdb %{_datadir}/jpilot/DatebookDB.pdb %{_datadir}/jpilot/ExpenseDB.pdb %{_datadir}/jpilot/MananaDB.pdb %{_datadir}/jpilot/Memo32DB.pdb %{_datadir}/jpilot/MemoDB.pdb %{_datadir}/jpilot/MemosDB-PMem.pdb %{_datadir}/jpilot/TasksDB-PTod.pdb %{_datadir}/jpilot/ToDoDB.pdb %{_datadir}/jpilot/jpilotrc.blue %{_datadir}/jpilot/jpilotrc.default %{_datadir}/jpilot/jpilotrc.green %{_datadir}/jpilot/jpilotrc.purple %{_datadir}/jpilot/jpilotrc.steel %{_datadir}/locale/*/LC_MESSAGES/jpilot.mo %{_mandir}/man1/jpilot-dial.1.gz %{_mandir}/man1/jpilot-dump.1.gz %{_mandir}/man1/jpilot-merge.1.gz %{_mandir}/man1/jpilot-sync.1.gz %{_mandir}/man1/jpilot.1.gz %{_datadir}/applications/jpilot.desktop %changelog * Mon Apr 11 2011 rikster5 - Add jpilot-merge to distribution * Mon Mar 08 2010 rikster5 - Use autoconf to replace VERSION rather than %version which is RedHat specific * Mon Mar 08 2010 rikster5 - Use autoconf to replace VERSION rather than %version which is RedHat specific * Sun Mar 07 2010 rikster5 - Revamped to include all files from 1.8.0 release * Sat Feb 28 2010 rikster5 - Updated for 1.8.0 release * Sat Sep 24 2005 Judd Montgomery - Updated for SuSE 9.3 * Sat Feb 22 2003 Judd Montgomery - fixed jpilotrc.* and empty/* files not being included * Sat Feb 22 2003 Vladimir Bormotov - call autogen.sh if no configure found - installation improvements - Oct 8, 2002 updated for automake build * Tue Jun 5 2001 Christian W. Zuckschwerdt - moved jpilot.spec to jpilot.spec.in and autoconf'ed it. - fixed this spec file so we don't need superuser privileges. - changed the hardcoded path into rpm macros * Wed Nov 22 2000 Matthew Vanecek - deleted the calls to 'install' in the % install section since this is already done in the Makefile. - Deleted the %attr tags from the %files list and made the default attribute to -,root,root. - changed the /usr/ to % {prefix}/ - Added the % post section - Added the % clean section - Changed the description jpilot-1.8.2/jpilot-sync.c0000664000175000017500000002144312340261240012363 00000000000000/******************************************************************************* * jpilot-sync.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #ifdef HAVE_LOCALE_H # include #endif #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "sync.h" #include "plugins.h" #include "otherconv.h" /******************************* Global vars **********************************/ int pipe_to_parent, pipe_from_parent; pid_t glob_child_pid; unsigned char skip_plugins; /* Start Hack */ /* FIXME: The following is a hack. * The variables below are global variables in jpilot.c which are unused in * this code but must be instantiated for the code to compile. * The same is true of the functions which are only used in GUI mode. */ pid_t jpilot_master_pid = -1; int *glob_date_label; GtkWidget *glob_dialog; GtkTooltips *glob_tooltips; gint glob_date_timer_tag; void output_to_pane(const char *str) { return; } void cb_app_button(GtkWidget *widget, gpointer data) { return; } void cb_cancel_sync(GtkWidget *widget, unsigned int flags) { return; } /* End Hack */ /****************************** Main Code *************************************/ static void fprint_jps_usage_string(FILE *out) { fprintf(out, "%s-sync [ -v || -h || [-d] [-P] [-b] [-l] [-p port] ]\n", EPN); fprintf(out, _(" J-Pilot preferences are read to get sync info such as port, rate, number of backups, etc.\n")); fprintf(out, _(" -v display version and compile options\n")); fprintf(out, _(" -h display help text\n")); fprintf(out, _(" -d display debug info to stdout\n")); fprintf(out, _(" -P skip loading plugins\n")); fprintf(out, _(" -b sync, and then do a backup\n")); fprintf(out, _(" -l loop, otherwise sync once and exit\n")); fprintf(out, _(" -p {port} use this port to sync on instead of default\n")); } static void sig_handler(int sig) { #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; #endif jp_logf(JP_LOG_DEBUG, "caught signal %d\n", sig); #ifdef ENABLE_PLUGINS plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->plugin_exit_cleanup) { jp_logf(JP_LOG_DEBUG, "calling plugin_exit_cleanup\n"); plugin->plugin_exit_cleanup(); } } } #endif exit(0); } int main(int argc, char *argv[]) { int flags; int r, i; int loop; char port[MAX_PREF_LEN]; #ifdef ENABLE_PLUGINS struct plugin_s *plugin; GList *plugin_list, *temp_list; jp_startup_info info; #endif /* enable internationalization(i18n) before printing any output */ #if defined(ENABLE_NLS) # ifdef HAVE_LOCALE_H char *current_locale; current_locale = setlocale(LC_ALL, ""); # endif bindtextdomain(EPN, LOCALEDIR); textdomain(EPN); #endif port[0]='\0'; glob_child_pid=0; loop=0; skip_plugins=0; flags = SYNC_NO_FORK; /* Read preferences from jpilot.rc file */ pref_init(); pref_read_rc_file(); if (otherconv_init()) { printf("Error: could not set encoding\n"); exit(1); } pipe_from_parent=STDIN_FILENO; pipe_to_parent=STDOUT_FILENO; glob_log_stdout_mask = JP_LOG_INFO | JP_LOG_WARN | JP_LOG_FATAL | JP_LOG_STDOUT | JP_LOG_GUI; /* Parse command line options */ for (i=1; inext) { plugin = (struct plugin_s *)temp_list->data; jp_logf(JP_LOG_DEBUG, "plugin: [%s] was loaded\n", plugin->name); if (plugin) { if (plugin->plugin_startup) { info.base_dir = strdup(BASE_DIR); jp_logf(JP_LOG_DEBUG, "calling plugin_startup for [%s]\n", plugin->name); plugin->plugin_startup(&info); if (info.base_dir) { free(info.base_dir); } } } } #endif /* After plugin startups are called we want to make sure that cleanups * will be called */ signal(SIGHUP, sig_handler); signal(SIGINT, sig_handler); signal(SIGTERM, sig_handler); do { r = setup_sync(flags); switch (r) { case 0: /* sync successful */ break; case SYNC_ERROR_BIND: printf("\n"); printf(_("Error: connecting to port %s\n"), port); break; case SYNC_ERROR_LISTEN: printf("\n"); printf(_("Error: pi_listen\n")); break; case SYNC_ERROR_OPEN_CONDUIT: printf("\n"); printf(_("Error: opening conduit to handheld\n")); break; case SYNC_ERROR_PI_ACCEPT: printf("\n"); printf(_("Error: pi_accept\n")); break; case SYNC_ERROR_NOT_SAME_USER: printf("\n"); printf(_("Error: ")); printf(_("This handheld does not have the same user name.\n")); printf(_("as the one that was synced the last time.\n")); printf(_("Syncing with different handhelds to the same directory can destroy data.\n")); #ifdef ENABLE_PROMETHEON printf(_(" COPILOT_HOME")); #else printf(_(" JPILOT_HOME")); #endif printf(_(" environment variable can be used to sync different handhelds,\n")); printf(_(" to different directories for the same UNIX user name.\n")); break; case SYNC_ERROR_NOT_SAME_USERID: printf("\n"); printf(_("This handheld does not have the same user ID.\n")); printf(_("as the one that was synced the last time.\n")); printf(_(" Syncing with different handhelds to the same directory can destroy data.\n")); #ifdef ENABLE_PROMETHEON printf(_(" COPILOT_HOME")); #else printf(_(" JPILOT_HOME")); #endif printf(_(" environment variable can be used to sync different handhelds,\n")); printf(_(" to different directories for the same UNIX user name.\n")); break; case SYNC_ERROR_NULL_USERID: printf("\n"); printf(_("Error: ")); printf(_("This handheld has a NULL user ID.\n")); printf(_("Every handheld must have a unique user ID in order to sync properly.\n")); printf(_("If the handheld has been hard reset, \n")); printf(_(" use restore from within "EPN" to restore it.\n")); printf(_("Otherwise, to add a new user name and ID\n")); printf(_(" use \"install-user %s name numeric_id\"\n"), port); break; default: printf("\n"); printf(_("Error: sync returned error %d\n"), r); } sleep(1); } while (loop); otherconv_free(); return r; } jpilot-1.8.2/sync.c0000664000175000017500000037054112340261240011072 00000000000000/******************************************************************************* * sync.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #ifdef USE_FLOCK # include #else # include #endif #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "sync.h" #include "log.h" #include "prefs.h" #include "datebook.h" #include "plugins.h" #include "libplugin.h" #include "password.h" /********************************* Constants **********************************/ #define FD_ERROR 1001 #define MAX_DBNAME 50 #ifndef min # define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #define USE_LOCKING /* #define PIPE_DEBUG */ /* #define JPILOT_DEBUG */ /* #define SYNC_CAT_DEBUG */ /******************************* Global vars **********************************/ extern int pipe_to_parent, pipe_from_parent; extern pid_t glob_child_pid; /****************************** Prototypes ************************************/ /* From jpilot.c for restoring sync icon after successful sync */ extern void cb_cancel_sync(GtkWidget *widget, unsigned int flags); static int pi_file_install_VFS(const int fd, const char *basename, const int socket, const char *vfspath, progress_func f); static int findVFSPath(int sd, const char *path, long *volume, char *rpath, int *rpathlen); /****************************** Main Code *************************************/ static void sig_handler(int sig) { int status = 0; jp_logf(JP_LOG_DEBUG, "caught signal SIGCHLD\n"); /* wait for any child processes */ waitpid(-1, &status, WNOHANG); /* SIGCHLD status is 0 for innocuous events like suspend/resume. */ /* We specifically exit with return code 255 to trigger this cleanup */ if (status > 0) { glob_child_pid = 0; cb_cancel_sync(NULL, 0); } } #ifdef USE_LOCKING static int sync_lock(int *fd) { pid_t pid; char lock_file[FILENAME_MAX]; int r; char str[12]; #ifndef USE_FLOCK struct flock lock; #endif get_home_file_name("sync_pid", lock_file, sizeof(lock_file)); *fd = open(lock_file, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (*fd<0) { jp_logf(JP_LOG_WARN, _("open lock file failed\n")); return EXIT_FAILURE; } #ifndef USE_FLOCK lock.l_type = F_WRLCK; lock.l_start = 0; lock.l_whence = SEEK_SET; lock.l_len = 0; /* Lock to the end of file */ r = fcntl(*fd, F_SETLK, &lock); #else r = flock(*fd, LOCK_EX | LOCK_NB); #endif if (r == -1){ jp_logf(JP_LOG_WARN, _("lock failed\n")); if (read(*fd, str, 10) < 0) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } pid = atoi(str); jp_logf(JP_LOG_FATAL, _("sync file is locked by pid %d\n"), pid); close(*fd); return EXIT_FAILURE; } else { jp_logf(JP_LOG_DEBUG, "lock succeeded\n"); pid=getpid(); sprintf(str, "%d\n", pid); if (write(*fd, str, strlen(str)+1) < 0) { jp_logf(JP_LOG_WARN, "write failed %s %d\n", __FILE__, __LINE__); } if (ftruncate(*fd, strlen(str)+1) == -1) { jp_logf(JP_LOG_WARN, "ftruncate failed %s %d\n", __FILE__, __LINE__); } } return EXIT_SUCCESS; } static int sync_unlock(int fd) { pid_t pid; char lock_file[FILENAME_MAX]; int r; char str[12]; #ifndef USE_FLOCK struct flock lock; #endif get_home_file_name("sync_pid", lock_file, sizeof(lock_file)); #ifndef USE_FLOCK lock.l_type = F_UNLCK; lock.l_start = 0; lock.l_whence = SEEK_SET; lock.l_len = 0; r = fcntl(fd, F_SETLK, &lock); #else r = flock(fd, LOCK_UN | LOCK_NB); #endif if (r == -1) { jp_logf(JP_LOG_WARN, _("unlock failed\n")); if (read(fd, str, 10) < 0) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } pid = atoi(str); jp_logf(JP_LOG_WARN, _("sync is locked by pid %d\n"), pid); close(fd); return EXIT_FAILURE; } else { jp_logf(JP_LOG_DEBUG, "unlock succeeded\n"); if (ftruncate(fd, 0) == -1) { jp_logf(JP_LOG_WARN, "ftruncate failed %s %d\n", __FILE__, __LINE__); } close(fd); } return EXIT_SUCCESS; } #endif static const char *get_error_str(int error) { static char buf[10]; switch (error) { case SYNC_ERROR_BIND: return "SYNC_ERROR_BIND"; case SYNC_ERROR_LISTEN: return "SYNC_ERROR_LISTEN"; case SYNC_ERROR_OPEN_CONDUIT: return "SYNC_ERROR_OPEN_CONDUIT"; case SYNC_ERROR_PI_ACCEPT: return "SYNC_ERROR_PI_ACCEPT"; case SYNC_ERROR_READSYSINFO: return "SYNC_ERROR_PI_CONNECT"; case SYNC_ERROR_PI_CONNECT: return "SYNC_ERROR_READSYSINFO"; case SYNC_ERROR_NOT_SAME_USER: return "SYNC_ERROR_NOT_SAME_USER"; case SYNC_ERROR_NOT_SAME_USERID: return "SYNC_ERROR_NOT_SAME_USERID"; case SYNC_ERROR_NULL_USERID: return "SYNC_ERROR_NULL_USERID"; default: sprintf(buf, "%d", error); return NULL; } } /* Attempt to match records * * Ideally, one would have comparison routines on a per DB_name basis. * This involves a lot of overhead and packing/unpacking of records * and the routines are not written. * * A simpler way to compare records is to use memcmp. Some databases, * however, do not pack tightly into memory and have gaps which are * do-not-cares during comparison. These gaps can assume any value * but for comparison they are zeroed out, the same value that * pilot-link uses. * * For databases that we have no knowledge of only simple comparisons * such as record length are possible. This is almost always good * enough but single character changes will not be caught. */ static int match_records(char *DB_name, void *rrec, int rrec_len, int rattr, int rcategory, void *lrec, int lrec_len, int lattr, int lcategory) { if (!rrec || !lrec) return FALSE; if (rrec_len != lrec_len) return FALSE; if (rcategory != lcategory) return FALSE; if ((rattr & dlpRecAttrSecret) != (lattr & dlpRecAttrSecret)) { return FALSE; } /* memcmp works for a few specific databases */ if (!strcmp(DB_name,"DatebookDB") || !strcmp(DB_name,"CalendarDB-PDat")) { /* Hack for gapfill byte */ set_byte(rrec+7,0); return !(memcmp(lrec, rrec, lrec_len)); } if (!strcmp(DB_name,"AddressDB")) return !(memcmp(lrec, rrec, lrec_len)); if (!strcmp(DB_name,"ContactsDB-PAdd")) { /* Hack for gapfill bytes */ set_byte(rrec+4,(get_byte(rrec+4)) & 0x0F); set_byte(rrec+6,0); set_byte(lrec+16,0); set_byte(rrec+16,0); return !(memcmp(lrec, rrec, lrec_len)); } if (!strcmp(DB_name,"ToDoDB")) return !(memcmp(lrec, rrec, lrec_len)); if (!strcmp(DB_name,"MemoDB") || !strcmp(DB_name,"Memo32DB") || !strcmp(DB_name,"MemosDB-PMem")) { return !(memcmp(lrec, rrec, lrec_len)); } if (!strcmp(DB_name,"ExpenseDB")) { /* Hack for gapfill byte */ set_byte(rrec+5,0); return !(memcmp(lrec, rrec, lrec_len)); } if (!strcmp(DB_name,"Keys-Gtkr")) return !(memcmp(lrec, rrec, lrec_len)); /* Lengths match and no other checks possible */ return TRUE; } static void filename_make_legal(char *s) { char *p; for (p=s; *p; p++) { if (*p=='/') { *p='?'; } } } static int wait_for_response(int sd) { int i; char buf[1024]; int buf_len, ret; fd_set fds; struct timeval tv; int command; #ifdef PIPE_DEBUG printf("child: wait_for_response()\n"); #endif /* For jpilot-sync */ /* We should never get to this function, but just in case. */ if (pipe_to_parent==STDOUT_FILENO) { return PIPE_SYNC_CANCEL; } /* Prevent the palm from timing out */ pi_watchdog(sd, 7); /* 120 iterations is 2 minutes */ for (i=0; i<120; i++) { #ifdef PIPE_DEBUG printf("child wait_for_response() for\n"); printf("pipe_from_parent = %d\n", pipe_from_parent); #endif /* Linux modifies tv in the select call */ tv.tv_sec=1; tv.tv_usec=0; FD_ZERO(&fds); FD_SET(pipe_from_parent, &fds); ret=select(pipe_from_parent+1, &fds, NULL, NULL, &tv); /* if (ret<0) { int err=errno; jp_logf(JP_LOG_WARN, "sync select %s\n", strerror(err)); }*/ if (ret==0) continue; /* this happens when waiting, probably a signal in pilot-link */ if (!FD_ISSET(pipe_from_parent, &fds)) { #ifdef PIPE_DEBUG printf("sync !FD_ISSET\n"); #endif continue; } buf[0]='\0'; /* Read until newline, null, or end */ buf_len=0; for (i=0; i<1022; i++) { ret = read(pipe_from_parent, &(buf[i]), 1); /* Error */ if (ret<1) { int err=errno; printf("ret<1\n"); printf("read from parent: %s\n", strerror(err)); jp_logf(JP_LOG_WARN, "read from parent %s\n", strerror(err)); break; } #ifdef PIPE_DEBUG printf("ret=%d read %d[%d]\n", ret, buf[i], buf[i]); #endif /* EOF */ #ifdef PIPE_DEBUG if (ret==0) { printf("ret==0\n"); break; } #endif buf_len++; if ((buf[i]=='\n')) break; } if (buf_len >= 1022) { buf[1022] = '\0'; } else { if (buf_len > 0) { buf[buf_len]='\0'; } } /* Look for the command */ sscanf(buf, "%d:", &command); #ifdef PIPE_DEBUG printf("command from parent=%d\n", command); printf("buf=[%s]\n", buf); #endif break; } /* Back to normal */ pi_watchdog(sd, 0); return command; } static int jp_pilot_connect(int *Psd, const char *device) { int sd; int ret; struct SysInfo sys_info; *Psd=0; sd = pi_socket(PI_AF_PILOT, PI_SOCK_STREAM, PI_PF_DLP); if (sd < 0) { int err = errno; perror("pi_socket"); jp_logf(JP_LOG_WARN, "pi_socket %s\n", strerror(err)); return EXIT_FAILURE; } ret = pi_bind(sd, device); if (ret < 0) { jp_logf(JP_LOG_WARN, "pi_bind error: %s %s\n", device, strerror(errno)); jp_logf(JP_LOG_WARN, _("Check your sync port and settings\n")); pi_close(sd); return SYNC_ERROR_BIND; } ret = pi_listen(sd, 1); if (ret < 0) { perror("pi_listen"); jp_logf(JP_LOG_WARN, "pi_listen %s\n", strerror(errno)); pi_close(sd); return SYNC_ERROR_LISTEN; } sd = pi_accept(sd, 0, 0); if(sd < 0) { perror("pi_accept"); jp_logf(JP_LOG_WARN, "pi_accept %s\n", strerror(errno)); pi_close(sd); return SYNC_ERROR_PI_ACCEPT; } /* We must do this to take care of the password being required to sync * on Palm OS 4.x */ if (dlp_ReadSysInfo(sd, &sys_info) < 0) { jp_logf(JP_LOG_WARN, "dlp_ReadSysInfo error\n"); pi_close(sd); return SYNC_ERROR_READSYSINFO; } *Psd=sd; return EXIT_SUCCESS; } static void free_file_name_list(GList **Plist) { GList *list, *temp_list; if (!Plist) return; list = *Plist; for (temp_list = list; temp_list; temp_list = temp_list->next) { if (temp_list->data) { free(temp_list->data); } } g_list_free(list); *Plist=NULL; } static void move_removed_apps(GList *file_list) { DIR *dir; struct dirent *dirent; char full_backup_path[FILENAME_MAX]; char full_remove_path[FILENAME_MAX]; char full_backup_file[FILENAME_MAX]; char full_remove_file[FILENAME_MAX]; char home_dir[FILENAME_MAX]; GList *list, *temp_list; int found; list = file_list; #ifdef JPILOT_DEBUG printf("printing file list\n"); for (temp_list = file_list; temp_list; temp_list = temp_list->next) { if (temp_list->data) { printf("File list [%s]\n", (char *)temp_list->data); } } #endif get_home_file_name("", home_dir, sizeof(home_dir)); /* Make sure the removed directory exists */ g_snprintf(full_remove_path, sizeof(full_remove_path), "%s/backup_removed", home_dir); mkdir(full_remove_path, 0700); g_snprintf(full_backup_path, sizeof(full_backup_path), "%s/backup/", home_dir); jp_logf(JP_LOG_DEBUG, "opening [%s]\n", full_backup_path); dir = opendir(full_backup_path); if (dir) { while ((dirent = readdir(dir))) { jp_logf(JP_LOG_DEBUG, "dirent->d_name = [%s]\n", dirent->d_name); found=FALSE; if (!strcmp(dirent->d_name, ".")) continue; if (!strcmp(dirent->d_name, "..")) continue; for (temp_list = list; temp_list; temp_list = temp_list->next) { if (temp_list->data) { if (!strcmp((char *)temp_list->data, dirent->d_name)) { found=TRUE; break; } } } if (!found) { g_snprintf(full_backup_file, sizeof(full_backup_file), "%s/backup/%s", home_dir, dirent->d_name); g_snprintf(full_remove_file, sizeof(full_remove_file), "%s/backup_removed/%s", home_dir, dirent->d_name); jp_logf(JP_LOG_DEBUG, "[%s] not found\n", dirent->d_name); jp_logf(JP_LOG_DEBUG, " moving [%s]\n to [%s]\n", full_backup_file, full_remove_file); rename(full_backup_file, full_remove_file); } } closedir(dir); } } static int is_backup_dir(char *name) { int i; /* backup dirs are of the form backupMMDDHHMM */ if (strncmp(name, "backup", 6)) { return FALSE; } for (i=6; i<14; i++) { if (name[i]=='\0') { return FALSE; } if (!isdigit(name[i])) { return FALSE; } } if (name[i]!='\0') { return FALSE; } return TRUE; } static int compare_back_dates(char *s1, char *s2) { /* backupMMDDhhmm */ int i1, i2; if ((strlen(s1) < 8) || (strlen(s2) < 8)) { return 0; } i1 = atoi(&s1[6]); i2 = atoi(&s2[6]); /* Try to guess the year crossover with a 6 month window */ if (((i1/1000000) <= 3) && ((i2/1000000) >= 10)) { return 1; } if (((i1/1000000) >= 10) && ((i2/1000000) <= 3)) { return 2; } if (i1>i2) { return 1; } if (i1d_name); /* Just to make sure nothing too wrong is deleted */ len = strlen(dirent->d_name); if (len < 4) { continue; } g_strlcpy(last4, dirent->d_name+len-4, 5); if ((strcmp(last4, ".pdb")==0) || (strcmp(last4, ".prc")==0) || (strcmp(last4, ".pqa")==0)) { unlink(full_src); } } closedir(dir); } rmdir(full_path); return EXIT_SUCCESS; } static int get_oldest_newest_dir(char *oldest, char *newest, int *count) { DIR *dir; struct dirent *dirent; char home_dir[FILENAME_MAX]; int r; get_home_file_name("", home_dir, sizeof(home_dir)); jp_logf(JP_LOG_DEBUG, "rotate_backups: opening dir %s\n", home_dir); *count = 0; oldest[0]='\0'; newest[0]='\0'; dir = opendir(home_dir); if (!dir) { return EXIT_FAILURE; } *count = 0; while((dirent = readdir(dir))) { if (is_backup_dir(dirent->d_name)) { jp_logf(JP_LOG_DEBUG, "backup dir [%s]\n", dirent->d_name); (*count)++; if (oldest[0]=='\0') { strcpy(oldest, dirent->d_name); /* jp_logf(JP_LOG_DEBUG, "oldest is now %s\n", oldest);*/ } if (newest[0]=='\0') { strcpy(newest, dirent->d_name); /* jp_logf(JP_LOG_DEBUG, "newest is now %s\n", newest);*/ } r = compare_back_dates(oldest, dirent->d_name); if (r==1) { strcpy(oldest, dirent->d_name); /* jp_logf(JP_LOG_DEBUG, "oldest is now %s\n", oldest);*/ } r = compare_back_dates(newest, dirent->d_name); if (r==2) { strcpy(newest, dirent->d_name); /* jp_logf(JP_LOG_DEBUG, "newest is now %s\n", newest);*/ } } } closedir(dir); return EXIT_SUCCESS; } static int sync_rotate_backups(const int num_backups) { DIR *dir; struct dirent *dirent; char home_dir[FILENAME_MAX]; char full_name[FILENAME_MAX]; char full_newdir[FILENAME_MAX]; char full_backup[FILENAME_MAX]; char full_oldest[FILENAME_MAX]; char full_src[FILENAME_MAX]; char full_dest[FILENAME_MAX]; int r; int count, safety; char oldest[20]; char newest[20]; char newdir[20]; time_t ltime; struct tm *now; get_home_file_name("", home_dir, sizeof(home_dir)); /* We use safety because if removing the directory fails then we * will get stuck in an endless loop */ for (safety=100; safety>0; safety--) { r = get_oldest_newest_dir(oldest, newest, &count); if (r<0) { jp_logf(JP_LOG_WARN, _("Unable to read home dir\n")); break; } if (count > num_backups) { sprintf(full_oldest, "%s/%s", home_dir, oldest); jp_logf(JP_LOG_DEBUG, "count=%d, num_backups=%d\n", count, num_backups); jp_logf(JP_LOG_DEBUG, "removing dir [%s]\n", full_oldest); sync_remove_r(full_oldest); } else { break; } } /* Now we should have the same number of backups (or less) as num_backups */ time(<ime); now = localtime(<ime); /* Create the new backup directory */ g_snprintf(newdir, sizeof(newdir), "backup%02d%02d%02d%02d", now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min); if (strncmp(newdir, newest, sizeof(newdir))) { g_snprintf(full_newdir, sizeof(full_newdir), "%s/%s", home_dir, newdir); if (mkdir(full_newdir, 0700)==0) { count++; } } /* Copy from the newest backup, if it exists */ if (strncmp(newdir, newest, sizeof(newdir))) { g_snprintf(full_backup, sizeof(full_backup), "%s/backup", home_dir); g_snprintf(full_newdir, sizeof(full_newdir), "%s/%s", home_dir, newdir); dir = opendir(full_backup); if (dir) { while ((dirent = readdir(dir))) { g_snprintf(full_src, sizeof(full_src), "%s/%s", full_backup, dirent->d_name); g_snprintf(full_dest, sizeof(full_dest), "%s/%s", full_newdir, dirent->d_name); jp_copy_file(full_src, full_dest); } closedir(dir); } } /* Remove the oldest backup if needed */ if (count > num_backups) { if ( (oldest[0]!='\0') && (strncmp(newdir, oldest, sizeof(newdir))) ) { g_snprintf(full_oldest, sizeof(full_oldest), "%s/%s", home_dir, oldest); jp_logf(JP_LOG_DEBUG, "removing dir [%s]\n", full_oldest); sync_remove_r(full_oldest); } } /* Delete the symlink */ g_snprintf(full_name, sizeof(full_name), "%s/backup", home_dir); unlink(full_name); /* Create the symlink */ if (symlink(newdir, full_name) != 0) { jp_logf(JP_LOG_WARN, "symlink failed %s %d\n", __FILE__, __LINE__); } return EXIT_SUCCESS; } static int unpack_datebook_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct AppointmentAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "unpack_datebook_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); r = unpack_AppointmentAppInfo(&ai, ai_raw, len); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "jp_unpack_AppointmentAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_datebook_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct AppointmentAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "pack_datebook_cai_into_ai\n"); r = unpack_AppointmentAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_AppointmentAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); r = pack_AppointmentAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_AppointmentAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int unpack_calendar_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct CalendarAppInfo ai; int r; pi_buffer_t pi_buf; jp_logf(JP_LOG_DEBUG, "unpack_calendar_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); pi_buf.data = ai_raw; pi_buf.used = len; pi_buf.allocated = len; r = unpack_CalendarAppInfo(&ai, &pi_buf); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "unpack_CalendarAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_calendar_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct CalendarAppInfo ai; int r; pi_buffer_t pi_buf; jp_logf(JP_LOG_DEBUG, "pack_calendar_cai_into_ai\n"); pi_buf.data = ai_raw; pi_buf.used = len; pi_buf.allocated = len; r = unpack_CalendarAppInfo(&ai, &pi_buf); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_CalendarAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); pi_buf.data = NULL; pi_buf.used = 0; pi_buf.allocated = 0; r = pack_CalendarAppInfo(&ai, &pi_buf); memcpy(ai_raw, pi_buf.data, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_CalendarAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int unpack_address_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct AddressAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "unpack_address_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); r = unpack_AddressAppInfo(&ai, ai_raw, len); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "unpack_AddressAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_address_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct AddressAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "pack_address_cai_into_ai\n"); r = unpack_AddressAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_AddressAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); r = pack_AddressAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_AddressAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int unpack_contact_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ContactAppInfo ai; int r; pi_buffer_t pi_buf; jp_logf(JP_LOG_DEBUG, "unpack_contact_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); pi_buf.data = ai_raw; pi_buf.used = len; pi_buf.allocated = len; r = jp_unpack_ContactAppInfo(&ai, &pi_buf); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "jp_unpack_ContactAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_contact_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ContactAppInfo ai; int r; pi_buffer_t *pi_buf; jp_logf(JP_LOG_DEBUG, "pack_contact_cai_into_ai\n"); pi_buf = pi_buffer_new(len); pi_buffer_append(pi_buf, ai_raw, len); r = jp_unpack_ContactAppInfo(&ai, pi_buf); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "jp_unpack_ContactAppInfo failed %s %d\n", __FILE__, __LINE__); pi_buffer_free(pi_buf); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); //r = jp_pack_ContactAppInfo(&ai, ai_raw, len); r = jp_pack_ContactAppInfo(&ai, pi_buf); //undo check buffer sizes memcpy(ai_raw, pi_buf->data, pi_buf->used); pi_buffer_free(pi_buf); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "jp_pack_ContactAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int unpack_todo_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ToDoAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "unpack_todo_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); r = unpack_ToDoAppInfo(&ai, ai_raw, len); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "unpack_ToDoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_todo_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ToDoAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "pack_todo_cai_into_ai\n"); r = unpack_ToDoAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_ToDoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); r = pack_ToDoAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_ToDoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int unpack_memo_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct MemoAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "unpack_memo_cai_from_ai\n"); /* Bug 1922 in pilot-link-0.12.3 and below. * unpack_MemoAppInfo does not zero out all bytes of the * appinfo struct and so it must be cleared here with a memset. * Can be removed from this and all other unpack routines when * Bug 1922 is fixed. * RW: 6/1/2008 */ memset(&ai, 0, sizeof(ai)); r = unpack_MemoAppInfo(&ai, ai_raw, len); if ((r <= 0) || (len <= 0)) { jp_logf(JP_LOG_DEBUG, "unpack_MemoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } static int pack_memo_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct MemoAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "pack_memo_cai_into_ai\n"); r = unpack_MemoAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_MemoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); r = pack_MemoAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_MemoAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* * Fetch the databases from the palm if modified */ static void fetch_extra_DBs2(int sd, struct DBInfo info, char *palm_dbname[]) { struct pi_file *pi_fp; char full_name[FILENAME_MAX]; struct stat statb; struct utimbuf times; int i; int found; char db_copy_name[MAX_DBNAME]; char creator[5]; found = 0; for (i=0; palm_dbname[i]; i++) { if (palm_dbname[i]==NULL) break; if (!strcmp(info.name, palm_dbname[i])) { jp_logf(JP_LOG_DEBUG, "Found extra DB\n"); found=1; break; } } if (!found) { return; } g_strlcpy(db_copy_name, info.name, MAX_DBNAME-5); if (info.flags & dlpDBFlagResource) { strcat(db_copy_name,".prc"); } else if (strncmp(db_copy_name + strlen(db_copy_name) - 4, ".pqa", 4)) { strcat(db_copy_name,".pdb"); } filename_make_legal(db_copy_name); get_home_file_name(db_copy_name, full_name, sizeof(full_name)); statb.st_mtime = 0; stat(full_name, &statb); creator[0] = (info.creator & 0xFF000000) >> 24; creator[1] = (info.creator & 0x00FF0000) >> 16; creator[2] = (info.creator & 0x0000FF00) >> 8; creator[3] = (info.creator & 0x000000FF); creator[4] = '\0'; /* If modification times are the same then we don't need to fetch it */ if (info.modifyDate == statb.st_mtime) { jp_logf(JP_LOG_DEBUG, "%s up to date, modify date (1) %ld\n", info.name, info.modifyDate); jp_logf(JP_LOG_GUI, _("%s (Creator ID '%s') is up to date, fetch skipped.\n"), db_copy_name, creator); return; } jp_logf(JP_LOG_GUI, _("Fetching '%s' (Creator ID '%s')... "), info.name, creator); info.flags &= 0xff; pi_fp = pi_file_create(full_name, &info); if (pi_fp==0) { jp_logf(JP_LOG_WARN, _("Failed, unable to create file %s\n"), full_name); return; } if (pi_file_retrieve(pi_fp, sd, 0, NULL)<0) { jp_logf(JP_LOG_WARN, _("Failed, unable to back up database %s\n"), info.name); times.actime = 0; times.modtime = 0; } else { jp_logf(JP_LOG_GUI, _("OK\n")); times.actime = info.createDate; times.modtime = info.modifyDate; } pi_file_close(pi_fp); /* Set the create and modify times of local file to same as on palm */ utime(full_name, ×); } /* * Fetch the databases from the palm if modified */ static int fetch_extra_DBs(int sd, char *palm_dbname[]) { int cardno, start; struct DBInfo info; int dbIndex; pi_buffer_t *buffer; jp_logf(JP_LOG_DEBUG, "fetch_extra_DBs()\n"); start=cardno=0; buffer = pi_buffer_new(32 * sizeof(struct DBInfo)); /* Pilot-link 0.12 can return multiple db infos if the DLP is 1.2 and above */ while(dlp_ReadDBList(sd, cardno, dlpDBListRAM | dlpDBListMultiple, start, buffer)>0) { for (dbIndex=0; dbIndex < (buffer->used / sizeof(struct DBInfo)); dbIndex++) { memcpy(&info, buffer->data + (dbIndex * sizeof(struct DBInfo)), sizeof(struct DBInfo)); start=info.index+1; fetch_extra_DBs2(sd, info, palm_dbname); } } pi_buffer_free(buffer); return EXIT_SUCCESS; } /* * Fetch the databases from the palm if modified * * Be sure to call free_file_name_list(&file_list); before returning from * anywhere in this function. */ static int sync_fetch(int sd, unsigned int flags, const int num_backups, int fast_sync) { struct pi_file *pi_fp; char full_name[FILENAME_MAX]; char full_backup_name[FILENAME_MAX]; char creator[5]; struct stat statb; struct utimbuf times; int i, r; int main_app; int skip_file; int cardno, start; struct DBInfo info; char db_copy_name[MAX_DBNAME]; GList *file_list; GList *end_of_list; int palmos_error; int dbIndex; pi_buffer_t *buffer; #ifdef ENABLE_PLUGINS GList *temp_list; GList *plugin_list; struct plugin_s *plugin; #endif char *file_name; /* rename_dbnames is used to modify this list to newer databases if needed*/ char palm_dbname[][32]={ "DatebookDB", "AddressDB", "ToDoDB", "MemoDB", #ifdef ENABLE_MANANA "MananaDB", #endif "Saved Preferences", "" }; char *extra_dbname[]={ "Saved Preferences", NULL }; typedef struct skip_db_t { unsigned int flags; unsigned int not_flags; const char *creator; char *dbname; } skip_db_t ; skip_db_t skip_db[] = { { 0, dlpDBFlagResource, "AvGo", NULL }, { 0, dlpDBFlagResource, "psys", "Unsaved Preferences" }, { 0, 0, "a68k", NULL}, { 0, 0, "appl", NULL}, { 0, 0, "boot", NULL}, { 0, 0, "Fntl", NULL}, { 0, 0, "PMHa", NULL}, { 0, 0, "PMNe", NULL}, { 0, 0, "ppp_", NULL}, { 0, 0, "u8EZ", NULL}, { 0, 0, NULL, NULL} }; unsigned int full_backup; jp_logf(JP_LOG_DEBUG, "sync_fetch flags=0x%x, num_backups=%d, fast=%d\n", flags, num_backups, fast_sync); rename_dbnames(palm_dbname); end_of_list=NULL; full_backup = flags & SYNC_FULL_BACKUP; /* Fast sync still needs to fetch Saved Preferences before exiting */ if (fast_sync && !full_backup) { fetch_extra_DBs(sd, extra_dbname); return EXIT_SUCCESS; } if (full_backup) { jp_logf(JP_LOG_DEBUG, "Full Backup\n"); pi_watchdog(sd,10); /* prevent Palm timing out on long disk copy times */ sync_rotate_backups(num_backups); pi_watchdog(sd,0); /* back to normal behavior */ } start=cardno=0; file_list=NULL; end_of_list=NULL; buffer = pi_buffer_new(32 * sizeof(struct DBInfo)); while( (r=dlp_ReadDBList(sd, cardno, dlpDBListRAM | dlpDBListMultiple, start, buffer)) > 0) { for (dbIndex=0; dbIndex < (buffer->used / sizeof(struct DBInfo)); dbIndex++) { memcpy(&info, buffer->data + (dbIndex * sizeof(struct DBInfo)), sizeof(struct DBInfo)); start=info.index+1; creator[0] = (info.creator & 0xFF000000) >> 24; creator[1] = (info.creator & 0x00FF0000) >> 16; creator[2] = (info.creator & 0x0000FF00) >> 8; creator[3] = (info.creator & 0x000000FF); creator[4] = '\0'; #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "dbname = %s\n",info.name); jp_logf(JP_LOG_DEBUG, "exclude from sync = %d\n",info.miscFlags & dlpDBMiscFlagExcludeFromSync); jp_logf(JP_LOG_DEBUG, "flag backup = %d\n",info.flags & dlpDBFlagBackup); /* jp_logf(JP_LOG_DEBUG, "type = %x\n",info.type);*/ jp_logf(JP_LOG_DEBUG, "Creator ID = [%s]\n", creator); #endif if (full_backup) { /* Look at the skip list */ skip_file=0; for (i=0; skip_db[i].creator || skip_db[i].dbname; i++) { if (skip_db[i].creator && !strcmp(creator, skip_db[i].creator)) { if (skip_db[i].dbname && strcmp(info.name,skip_db[i].dbname)) { continue; /* Only creator matched, not DBname. */ } else { if (skip_db[i].flags && (info.flags & skip_db[i].flags) != skip_db[i].flags) { skip_file=1; break; } else if (skip_db[i].not_flags && !(info.flags & skip_db[i].not_flags)) { skip_file=1; break; } else if (!skip_db[i].flags && !skip_db[i].not_flags) { skip_file=1; break; } } } if (skip_db[i].dbname && !strcmp(info.name,skip_db[i].dbname)) { if (skip_db[i].flags && (info.flags & skip_db[i].flags) != skip_db[i].flags) { skip_file=1; break; } else if (skip_db[i].not_flags && (info.flags & skip_db[i].not_flags)) { skip_file=1; break; } else if (!skip_db[i].flags && !skip_db[i].not_flags) { skip_file=1; break; } } } if (skip_file) { jp_logf(JP_LOG_GUI, _("Skipping %s (Creator ID '%s')\n"), info.name, creator); continue; } } main_app = 0; skip_file = 0; for (i=0; palm_dbname[i][0]; i++) { if (!strcmp(info.name, palm_dbname[i])) { jp_logf(JP_LOG_DEBUG, "Found main app\n"); main_app = 1; /* Skip if conduit is not enabled in preferences */ if (!full_backup) { switch (i) { case 0: if (!get_pref_int_default(PREF_SYNC_DATEBOOK, 1)) { skip_file = 1; } break; case 1: if (!get_pref_int_default(PREF_SYNC_ADDRESS, 1)) { skip_file = 1; } break; case 2: if (!get_pref_int_default(PREF_SYNC_TODO, 1)) { skip_file = 1; } break; case 3: if (!get_pref_int_default(PREF_SYNC_MEMO, 1)) { skip_file = 1; } break; #ifdef ENABLE_MANANA case 4: if (!get_pref_int_default(PREF_SYNC_MANANA, 1)) { skip_file = 1; } break; #endif } /* end switch */ } /* end if checking for excluded conduits */ break; } /* end if checking for main app */ } /* for loop over main app names */ /* skip main app conduit as necessary */ if (skip_file) continue; #ifdef ENABLE_PLUGINS plugin_list = get_plugin_list(); if (!main_app) { skip_file = 0; for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (!strcmp(info.name, plugin->db_name)) { jp_logf(JP_LOG_DEBUG, "Found plugin\n"); main_app = 1; /* Skip if conduit is not enabled */ if (!full_backup && !plugin->sync_on) { skip_file = 1; } break; } } } #endif /* skip plugin conduit as necessary */ if (skip_file) continue; g_strlcpy(db_copy_name, info.name, MAX_DBNAME-5); if (info.flags & dlpDBFlagResource) { strcat(db_copy_name,".prc"); } else if (strncmp(db_copy_name + strlen(db_copy_name) - 4, ".pqa", 4)) { strcat(db_copy_name,".pdb"); } filename_make_legal(db_copy_name); if (!strcmp(db_copy_name, "Graffiti ShortCuts .prc")) { /* Make a special exception for the graffiti shortcuts. * We want to save it as this to avoid the confusion of * having 2 different versions around */ strcpy(db_copy_name, "Graffiti ShortCuts.prc"); } get_home_file_name(db_copy_name, full_name, sizeof(full_name)); get_home_file_name("backup/", full_backup_name, sizeof(full_backup_name)); strcat(full_backup_name, db_copy_name); /* Add this to our file name list if not manually skipped */ jp_logf(JP_LOG_DEBUG, "appending [%s]\n", db_copy_name); file_list = g_list_prepend(file_list, strdup(db_copy_name)); if ( !fast_sync && !full_backup && !main_app ) { continue; } #ifdef JPILOT_DEBUG if (main_app) { jp_logf(JP_LOG_DEBUG, "main_app is set\n"); } #endif if (main_app && !fast_sync) { file_name = full_name; } else { file_name = full_backup_name; } statb.st_mtime = 0; stat(file_name, &statb); #ifdef JPILOT_DEBUG jp_logf(JP_LOG_GUI, "palm dbtime= %d, local dbtime = %d\n", info.modifyDate, statb.st_mtime); jp_logf(JP_LOG_GUI, "flags=0x%x\n", info.flags); jp_logf(JP_LOG_GUI, "backup_flag=%d\n", info.flags & dlpDBFlagBackup); #endif /* If modification times are the same then we don't need to fetch it */ if (info.modifyDate == statb.st_mtime) { jp_logf(JP_LOG_DEBUG, "%s up to date, modify date (2) %ld\n", info.name, info.modifyDate); jp_logf(JP_LOG_GUI, _("%s (Creator ID '%s') is up to date, fetch skipped.\n"), db_copy_name, creator); continue; } jp_logf(JP_LOG_GUI, _("Fetching '%s' (Creator ID '%s')... "), info.name, creator); info.flags &= 0xff; pi_fp = pi_file_create(file_name, &info); if (pi_fp==0) { jp_logf(JP_LOG_WARN, _("Failed, unable to create file %s\n"), main_app ? full_name : full_backup_name); continue; } if (pi_file_retrieve(pi_fp, sd, 0, NULL)<0) { jp_logf(JP_LOG_WARN, _("Failed, unable to back up database %s\n"), info.name); times.actime = 0; times.modtime = 0; } else { jp_logf(JP_LOG_GUI, _("OK\n")); times.actime = info.createDate; times.modtime = info.modifyDate; } pi_file_close(pi_fp); /* Set the create and modify times of local file to same as on palm */ utime(file_name, ×); /* This call preserves the file times */ if (main_app && !fast_sync && full_backup) { jp_copy_file(full_name, full_backup_name); } } } pi_buffer_free(buffer); palmos_error = pi_palmos_error(sd); if (palmos_error==dlpErrNotFound) { jp_logf(JP_LOG_DEBUG, "Good return code (dlpErrNotFound)\n"); if (full_backup) { jp_logf(JP_LOG_DEBUG, "Removing apps not found on the palm\n"); move_removed_apps(file_list); } } else { jp_logf(JP_LOG_WARN, "ReadDBList returned = %d\n", r); jp_logf(JP_LOG_WARN, "palmos_error = %d\n", palmos_error); jp_logf(JP_LOG_WARN, "dlp_strerror is %s\n", dlp_strerror(palmos_error)); } free_file_name_list(&file_list); return EXIT_SUCCESS; } static int sync_install(char *filename, int sd, char *vfspath) { struct pi_file *f; struct DBInfo info; char *Pc; char log_entry[256]; int r, try_again; long char_set; char creator[5]; int sdcard_install; get_pref(PREF_CHAR_SET, &char_set, NULL); Pc = strrchr(filename, '/'); if (!Pc) { Pc = filename; } else { Pc++; } sdcard_install = (vfspath != NULL); jp_logf(JP_LOG_GUI, _("Installing %s "), Pc); f = pi_file_open(filename); if (f==NULL && !sdcard_install) { int fd; if ((fd = open(filename, O_RDONLY)) < 0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: '%s': %s!\n"), filename, strerror(errno)); } else { close(fd); jp_logf(JP_LOG_WARN, _("\nUnable to sync file: '%s': file corrupted?\n"), filename); } return EXIT_FAILURE; } if (f != NULL) { memset(&info, 0, sizeof(info)); pi_file_get_info(f, &info); creator[0] = (info.creator & 0xFF000000) >> 24; creator[1] = (info.creator & 0x00FF0000) >> 16, creator[2] = (info.creator & 0x0000FF00) >> 8, creator[3] = (info.creator & 0x000000FF); creator[4] = '\0'; } if (!sdcard_install) { jp_logf(JP_LOG_GUI, _("(Creator ID '%s')... "), creator); r = pi_file_install(f, sd, 0, NULL); } else { if (f != NULL) { jp_logf(JP_LOG_GUI, _("(Creator ID '%s') "), creator); } jp_logf(JP_LOG_GUI, _("(SDcard dir %s)... "), vfspath); const char *basename = strrchr(filename, '/'); if (!basename) { basename = filename; } else { basename++; } int fd; if ((fd = open(filename, O_RDONLY)) < 0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: '%s': %s!\n"), filename, strerror(errno)); pi_file_close(f); return EXIT_FAILURE; } r = pi_file_install_VFS(fd, basename, sd, vfspath, NULL); close(fd); } if (r<0 && !sdcard_install) { try_again = 0; /* TODO: make this generic? Not sure it would work 100% of the time */ /* Here we make a special exception for graffiti */ if (!strcmp(info.name, "Graffiti ShortCuts")) { strcpy(info.name, "Graffiti ShortCuts "); /* This requires a reset */ info.flags |= dlpDBFlagReset; info.flags |= dlpDBFlagNewer; pi_file_close(f); pdb_file_write_dbinfo(filename, &info); f = pi_file_open(filename); if (f==0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: %s\n"), filename); return EXIT_FAILURE; } try_again = 1; } else if (!strcmp(info.name, "Graffiti ShortCuts ")) { strcpy(info.name, "Graffiti ShortCuts"); /* This requires a reset */ info.flags |= dlpDBFlagReset; info.flags |= dlpDBFlagNewer; pi_file_close(f); pdb_file_write_dbinfo(filename, &info); f = pi_file_open(filename); if (f==0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: %s\n"), filename); return EXIT_FAILURE; } try_again = 1; } /* Here we make a special exception for Net Prefs */ if (!strcmp(info.name, "Net Prefs")) { strcpy(info.name, "Net Prefs "); /* This requires a reset */ info.flags |= dlpDBFlagReset; info.flags |= dlpDBFlagNewer; pi_file_close(f); pdb_file_write_dbinfo(filename, &info); f = pi_file_open(filename); if (f==0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: %s\n"), filename); return EXIT_FAILURE; } try_again = 1; } else if (!strcmp(info.name, "Net Prefs ")) { strcpy(info.name, "Net Prefs"); /* This requires a reset */ info.flags |= dlpDBFlagReset; info.flags |= dlpDBFlagNewer; pi_file_close(f); pdb_file_write_dbinfo(filename, &info); f = pi_file_open(filename); if (f==0) { jp_logf(JP_LOG_WARN, _("\nUnable to open file: %s\n"), filename); return EXIT_FAILURE; } try_again = 1; } if (try_again) { /* Try again */ r = pi_file_install(f, sd, 0, NULL); } } if (r<0) { g_snprintf(log_entry, sizeof(log_entry), _("Install %s failed"), Pc); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); dlp_AddSyncLogEntry(sd, "\n");; jp_logf(JP_LOG_GUI, _("Failed.\n")); jp_logf(JP_LOG_WARN, "%s\n", log_entry); if (f) pi_file_close(f); return EXIT_FAILURE; } else { g_snprintf(log_entry, sizeof(log_entry), _("Installed %s"), Pc); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); dlp_AddSyncLogEntry(sd, "\n");; jp_logf(JP_LOG_GUI, _("OK\n")); } if (f) pi_file_close(f); return EXIT_SUCCESS; } /* file must not be open elsewhere when this is called */ /* the first line is 0 */ static int sync_process_install_file(int sd) { FILE *in; FILE *out; char line[1002]; char *Pc; int r, line_count; char vfsdir[] = "/PALM/Launcher/"; // Install location for SDCARD files in = jp_open_home_file(EPN".install", "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s%s\n"), EPN, ".install"); return EXIT_FAILURE; } out = jp_open_home_file(EPN".install.tmp", "w"); if (!out) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s%s\n"), EPN, ".install.tmp"); fclose(in); return EXIT_FAILURE; } for (line_count=0; (!feof(in)); line_count++) { line[0]='\0'; Pc = fgets(line, 1000, in); if (!Pc) { break; } if (line[strlen(line)-1]=='\n') { line[strlen(line)-1]='\0'; } if (line[0] == '\001') { /* found SDCARD indicator */ r = sync_install(&(line[1]), sd, vfsdir); } else { r = sync_install(line, sd, NULL); } if (r==0) { continue; } fprintf(out, "%s\n", line); } fclose(in); fclose(out); rename_file(EPN".install.tmp", EPN".install"); return EXIT_SUCCESS; } static int sync_categories(char *DB_name, int sd, int (*unpack_cai_from_ai)(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len), int (*pack_cai_into_ai)(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) ) { struct CategoryAppInfo local_cai, remote_cai, orig_remote_cai; char full_name[FILENAME_MAX]; char pdb_name[FILENAME_MAX]; char log_entry[256]; struct pi_file *pf; pi_buffer_t *buffer; size_t local_cai_size; int remote_cai_size; unsigned char buf[65536]; int db; void *Papp_info; char tmp_name[18]; int tmp_int; int i, r, Li, Ri; int found_name, found_ID; int found_name_at, found_ID_at; int found_a_slot; int move_from_idx[NUM_CATEGORIES]; int move_to_idx[NUM_CATEGORIES]; int move_i = 0; int loop; long char_set; jp_logf(JP_LOG_DEBUG, "sync_categories for %s\n", DB_name); get_pref(PREF_CHAR_SET, &char_set, NULL); g_snprintf(pdb_name, sizeof(pdb_name), "%s%s", DB_name, ".pdb"); get_home_file_name(pdb_name, full_name, sizeof(full_name)); Papp_info=NULL; memset(&local_cai, 0, sizeof(local_cai)); memset(&remote_cai, 0, sizeof(remote_cai)); pf = pi_file_open(full_name); if (!pf) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading file: %s\n"), __FILE__, __LINE__, full_name); return EXIT_FAILURE; } pi_file_get_app_info(pf, &Papp_info, &local_cai_size); if (local_cai_size <= 0) { jp_logf(JP_LOG_WARN, _("%s:%d Error getting app info %s\n"), __FILE__, __LINE__, full_name); return EXIT_FAILURE; } r = unpack_cai_from_ai(&local_cai, Papp_info, local_cai_size); if (EXIT_SUCCESS != r) { jp_logf(JP_LOG_WARN, _("%s:%d Error unpacking app info %s\n"), __FILE__, __LINE__, full_name); return EXIT_FAILURE; } pi_file_close(pf); /* Open the applications database, store access handle in db */ r = dlp_OpenDB(sd, 0, dlpOpenReadWrite, DB_name, &db); if (r < 0) { /* File unable to be opened. * Return an error but let the main record sync process * do the logging to the GUI and Palm */ jp_logf(JP_LOG_DEBUG, "sync_categories: Unable to open file: %s\n", DB_name); return EXIT_FAILURE; } buffer = pi_buffer_new(0xFFFF); /* buffer size passed in cannot be any larger than 0xffff */ remote_cai_size = dlp_ReadAppBlock(sd, db, 0, -1, buffer); jp_logf(JP_LOG_DEBUG, "readappblock r=%d\n", remote_cai_size); if ((remote_cai_size<=0) || (remote_cai_size > sizeof(buf))) { jp_logf(JP_LOG_WARN, _("Error reading appinfo block for %s\n"), DB_name); dlp_CloseDB(sd, db); pi_buffer_free(buffer); return EXIT_FAILURE; } memcpy(buf, buffer->data, remote_cai_size); pi_buffer_free(buffer); r = unpack_cai_from_ai(&remote_cai, buf, remote_cai_size); if (EXIT_SUCCESS != r) { jp_logf(JP_LOG_WARN, _("%s:%d Error unpacking app info %s\n"), __FILE__, __LINE__, full_name); return EXIT_FAILURE; } memcpy(&orig_remote_cai, &remote_cai, sizeof(remote_cai)); /* Do a memcmp first to see if nothing has changed, the common case */ if (!memcmp(&(local_cai), &(remote_cai), sizeof(local_cai))) { jp_logf(JP_LOG_DEBUG, "Category app info match, nothing to do %s\n", DB_name); dlp_CloseDB(sd, db); return EXIT_SUCCESS; } #ifdef SYNC_CAT_DEBUG printf("--- pre-sync CategoryAppInfo\n"); printf("--- DB_name [%s]\n", DB_name); printf("--- local: size is %d ---\n", local_cai_size); for (i=0; i Li) { /* Need to reprocess this Li index because a new one has * has been swapped in. */ Li--; } continue; } } if ((!found_name) && (found_ID)) { if (local_cai.renamed[Li]) { /* 3: Change remote category name to match local at index Li */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 3\n", Li); #endif g_strlcpy(remote_cai.name[found_ID_at], local_cai.name[Li], PILOTCAT_NAME_SZ); continue; } else { if (remote_cai.renamed[found_ID_at]) { /* 3a1: Category has been renamed on Palm. Undocumented */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 3a1\n", Li); #endif continue; } else { /* 3a2: Category has been deleted on Palm. Undocumented */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 3a2\n", Li); printf("cat %d deleted remote, del cat on local\n", Li); printf(" local cat name %s\n", local_cai.name[Li]); #endif local_cai.renamed[Li]=0; local_cai.name[Li][0]='\0'; local_cai.ID[Li]=0; remote_cai.name[found_ID_at][0]='\0'; remote_cai.ID[found_ID_at]=0; remote_cai.renamed[found_ID_at]=0; jp_logf(JP_LOG_DEBUG, "Moving local recs category %d to Unfiled\n", Li); /* Move only changed records(pc3) to Unfiled. Records in pdb * will be handled by sync record process */ edit_cats_change_cats_pc3(DB_name, Li, 0); continue; } } } if ((!found_name) && (!found_ID)) { if (remote_cai.name[Li][0]=='\0') { /* 4: Add local category to remote */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 4\n", Li); #endif g_strlcpy(remote_cai.name[Li], local_cai.name[Li], PILOTCAT_NAME_SZ); remote_cai.ID[Li]=local_cai.ID[Li]; remote_cai.renamed[Li]=0; continue; } else { if (!remote_cai.renamed[Li]) { /* 5a: Category was deleted locally and a new one replaced it. * Undocumented by Palm. */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 5a\n", Li); #endif /* Move the old category's records to Unfiled */ jp_logf(JP_LOG_DEBUG, "Moving category %d to unfiled...", Li); r = dlp_MoveCategory(sd, db, Li, 0); jp_logf(JP_LOG_DEBUG, "dlp_MoveCategory returned %d\n", r); /* Rename slot to the new category */ g_strlcpy(remote_cai.name[Li], local_cai.name[Li], PILOTCAT_NAME_SZ); remote_cai.ID[Li]=local_cai.ID[Li]; remote_cai.renamed[Li]=0; continue; } if (!local_cai.renamed[Li]) { /* 5b: Category was deleted on Palm and a new one replaced it. * Undocumented by Palm. */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 5b\n", Li); #endif /* Move the old category's records to Unfiled */ jp_logf(JP_LOG_DEBUG, "Moving local recs category %d to Unfiled\n", Li); /* Move only changed records(pc3) to Unfiled. Records in pdb * will be handled by sync record process */ edit_cats_change_cats_pc3(DB_name, Li, 0); remote_cai.renamed[Li]=0; continue; } /* 5: Add local category to remote in the next available slot. local records are changed to use this index. */ #ifdef SYNC_CAT_DEBUG printf("cat index %d case 5\n", Li); #endif found_a_slot=FALSE; for (i=1; i= NUM_CATEGORIES) { move_i = NUM_CATEGORIES-1; jp_logf(JP_LOG_DEBUG, "Exceeded number of categorie for case 5\n"); } found_a_slot=TRUE; break; } } if (!found_a_slot) { jp_logf(JP_LOG_WARN, _("Could not add category %s to remote.\n"), local_cai.name[Li]); jp_logf(JP_LOG_WARN, _("Too many categories on remote.\n")); jp_logf(JP_LOG_WARN, _("All records on desktop in %s will be moved to %s.\n"), local_cai.name[Li], local_cai.name[0]); /* Fix - need a func for this logging */ g_snprintf(log_entry, sizeof(log_entry), _("Could not add category %s to remote.\n"), local_cai.name[Li]); charset_j2p(log_entry, 255, char_set); dlp_AddSyncLogEntry(sd, log_entry); g_snprintf(log_entry, sizeof(log_entry), _("Too many categories on remote.\n")); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); g_snprintf(log_entry, sizeof(log_entry), _("All records on desktop in %s will be moved to %s.\n"), local_cai.name[Li], local_cai.name[0]); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); jp_logf(JP_LOG_DEBUG, "Moving local recs category %d to Unfiled...", Li); edit_cats_change_cats_pc3(DB_name, Li, 0); edit_cats_change_cats_pdb(DB_name, Li, 0); } continue; } } #ifdef SYNC_CAT_DEBUG printf("Error: cat index %d passed through with no processing\n", Li); #endif } /* Move records locally into correct index slots */ /* Note that this happens in reverse order so that A->B, B->C, does not * result in records from A and B in category C */ for (i=move_i-1; i>=0; i--) { if (move_from_idx[i]) { pdb_file_change_indexes(DB_name, move_from_idx[i], move_to_idx[i]); edit_cats_change_cats_pc3(DB_name, move_from_idx[i], move_to_idx[i]); } } /* Clear the rename flags now that sync has occurred */ for (i=0; i 250)) { return EXIT_FAILURE; } g_snprintf(log_entry, sizeof(log_entry), _("Syncing %s\n"), DB_name); jp_logf(JP_LOG_GUI, log_entry); get_pref(PREF_CHAR_SET, &char_set, NULL); /* This is an attempt to use the proper pronoun most of the time */ if (strchr("aeiou", tolower(DB_name[0]))) { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote an %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing an %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting an %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted an %s record."), DB_name); g_snprintf(conflict_log_message, sizeof(conflict_log_message), _("Sync Conflict: duplicated an %s record."), DB_name); } else { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote a %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing a %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting a %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted a %s record."), DB_name); g_snprintf(conflict_log_message, sizeof(conflict_log_message), _("Sync Conflict: duplicated a %s record."), DB_name); } g_snprintf(pc_filename, sizeof(pc_filename), "%s.pc3", DB_name); pc_in = jp_open_home_file(pc_filename, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), pc_filename); return EXIT_FAILURE; } /* Open the applications database, store access handle in db */ ret = dlp_OpenDB(sd, 0, dlpOpenReadWrite, DB_name, &db); if (ret < 0) { g_snprintf(log_entry, sizeof(log_entry), _("Unable to open file: %s\n"), DB_name); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); jp_logf(JP_LOG_WARN, "slow_sync_application: %s", log_entry); fclose(pc_in); return EXIT_FAILURE; } #ifdef JPILOT_DEBUG dlp_ReadOpenDBInfo(sd, db, &num); jp_logf(JP_LOG_GUI , "number of records = %d\n", num); #endif /* Loop over records in .pc3 file */ while (!feof(pc_in)) { num = read_header(pc_in, &header); if (num!=1) { if (ferror(pc_in)) break; if (feof(pc_in)) break; } lrec_len = header.rec_len; if (lrec_len > 0x10000) { jp_logf(JP_LOG_WARN, _("PC file corrupt?\n")); fclose(pc_in); dlp_CloseDB(sd, db); return EXIT_FAILURE; } /* Case 5: */ if ((header.rt==NEW_PC_REC) || (header.rt==REPLACEMENT_PALM_REC)) { jp_logf(JP_LOG_DEBUG, "Case 5: new pc record\n"); lrec = malloc(lrec_len); if (!lrec) { jp_logf(JP_LOG_WARN, "slow_sync_application(): %s\n", _("Out of memory")); break; } num = fread(lrec, lrec_len, 1, pc_in); if (num != 1) { if (ferror(pc_in)) { free(lrec); break; } } if (header.rt==REPLACEMENT_PALM_REC) { /* A replacement must be checked against pdb file to make sure * a simultaneous modification on the Palm has not occurred */ rrec = pi_buffer_new(65536); if (!rrec) { jp_logf(JP_LOG_WARN, "slow_sync_application(), pi_buffer_new: %s\n", _("Out of memory")); free(lrec); break; } ret = dlp_ReadRecordById(sd, db, header.unique_id, rrec, &rindex, &rattr, &rcategory); rrec_len = rrec->used; #ifdef JPILOT_DEBUG if (ret>=0 ) { printf("read record by id %s returned %d\n", DB_name, ret); printf("id %ld, index %d, size %d, attr 0x%x, category %d\n", header.unique_id, rindex, rrec_len, rattr, rcategory); } else { printf("Case 5: read record by id failed\n"); } #endif if ((ret >=0) && !(dlpRecAttrDeleted & rattr)) { /* Modified record was also found on Palm. */ /* Compare records but ignore category changes */ /* For simultaneous category changes PC wins */ same = match_records(DB_name, rrec->data, rrec_len, rattr, 0, lrec, lrec_len, header.attrib&0xF0, 0); #ifdef JPILOT_DEBUG printf("Same is %d\n", same); #endif if (same && (header.unique_id != 0)) { /* Records are the same. Add pc3 record over Palm one */ jp_logf(JP_LOG_DEBUG, "Case 5: lrec & rrec match, keeping Jpilot version\n"); } else { /* Record has been changed on the palm as well as the PC. * * The changed record has already been transferred to the * local pdb file from the Palm. It must be copied to the * Palm and to the local pdb file under a new unique ID * in order to prevent overwriting by the modified PC record. * The record is placed in the Unfiled category so it can * be quickly located. */ jp_logf(JP_LOG_DEBUG, "Case 5: duplicating record\n"); jp_logf(JP_LOG_GUI, _("Sync Conflict: a %s record must be manually merged\n"), DB_name); /* Write record to Palm and get new unique ID */ jp_logf(JP_LOG_DEBUG, "Duplicating PC record to palm\n"); ret = dlp_WriteRecord(sd, db, rattr & dlpRecAttrSecret, 0, 0, rrec->data, rrec_len, &new_unique_id); if (ret < 0) { jp_logf(JP_LOG_WARN, "dlp_WriteRecord failed\n"); charset_j2p(error_log_message_w,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_w); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(conflict_log_message,255,char_set); dlp_AddSyncLogEntry(sd, conflict_log_message); dlp_AddSyncLogEntry(sd, "\n"); } } } pi_buffer_free(rrec); } /* endif REPLACEMENT_PALM_REC */ jp_logf(JP_LOG_DEBUG, "Writing PC record to palm\n"); if (header.rt==REPLACEMENT_PALM_REC) { ret = dlp_WriteRecord(sd, db, header.attrib & dlpRecAttrSecret, header.unique_id, header.attrib & 0x0F, lrec, lrec_len, &header.unique_id); } else { ret = dlp_WriteRecord(sd, db, header.attrib & dlpRecAttrSecret, 0, header.attrib & 0x0F, lrec, lrec_len, &header.unique_id); } if (lrec) { free(lrec); lrec = NULL; } if (ret < 0) { jp_logf(JP_LOG_WARN, "dlp_WriteRecord failed\n"); charset_j2p(error_log_message_w,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_w); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(write_log_message,255,char_set); dlp_AddSyncLogEntry(sd, write_log_message); dlp_AddSyncLogEntry(sd, "\n"); /* mark the record as deleted in the pc file */ if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); dlp_CloseDB(sd, db); return EXIT_FAILURE; } header.rt=DELETED_PC_REC; write_header(pc_in, &header); } } /* endif Case 5 */ /* Case 3 & 4: */ if ((header.rt==DELETED_PALM_REC) || (header.rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_DEBUG, "Case 3&4: deleted or modified pc record\n"); lrec = malloc(lrec_len); if (!lrec) { jp_logf(JP_LOG_WARN, "slow_sync_application(): %s\n", _("Out of memory")); break; } num = fread(lrec, lrec_len, 1, pc_in); if (num != 1) { if (ferror(pc_in)) { free(lrec); break; } } rrec = pi_buffer_new(65536); if (!rrec) { jp_logf(JP_LOG_WARN, "slow_sync_application(), pi_buffer_new: %s\n", _("Out of memory")); free(lrec); break; } ret = dlp_ReadRecordById(sd, db, header.unique_id, rrec, &rindex, &rattr, &rcategory); rrec_len = rrec->used; #ifdef JPILOT_DEBUG if (ret>=0 ) { printf("read record by id %s returned %d\n", DB_name, ret); printf("id %ld, index %d, size %d, attr 0x%x, category %d\n", header.unique_id, rindex, rrec_len, rattr, rcategory); } else { printf("Case 3&4: read record by id failed\n"); } #endif if ((ret < 0) || (dlpRecAttrDeleted & rattr)) { /* lrec can't be found which means it has already * been deleted from the Palm side. * Mark the local record as deleted */ jp_logf(JP_LOG_DEBUG, "Case 3&4: no remote record found, must have been deleted on the Palm\n"); if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); dlp_CloseDB(sd, db); free(lrec); pi_buffer_free(rrec); return EXIT_FAILURE; } header.rt=DELETED_DELETED_PALM_REC; write_header(pc_in, &header); } else { /* Record exists on the palm and has been deleted from PC * If the two records are the same, then no changes have * occurred on the Palm and the deletion should occur */ same = match_records(DB_name, rrec->data, rrec_len, rattr, rcategory, lrec, lrec_len, header.attrib&0xF0, header.attrib&0x0F); #ifdef JPILOT_DEBUG printf("Same is %d\n", same); #endif if (same && (header.unique_id != 0)) { jp_logf(JP_LOG_DEBUG, "Case 3&4: lrec & rrec match, deleting\n"); ret = dlp_DeleteRecord(sd, db, 0, header.unique_id); if (ret < 0) { jp_logf(JP_LOG_WARN, _("dlp_DeleteRecord failed\n"\ "This could be because the record was already deleted on the Palm\n")); charset_j2p(error_log_message_d,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_d); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(delete_log_message,255,char_set); dlp_AddSyncLogEntry(sd, delete_log_message); dlp_AddSyncLogEntry(sd, "\n"); } /* Now mark the record in pc3 file as deleted */ if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); dlp_CloseDB(sd, db); free(lrec); pi_buffer_free(rrec); return EXIT_FAILURE; } header.rt=DELETED_DELETED_PALM_REC; write_header(pc_in, &header); } else { /* Record has been changed on the palm and deletion can't occur * Mark the pc3 record as having been dealt with */ jp_logf(JP_LOG_DEBUG, "Case 3: skipping PC deleted record\n"); if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); dlp_CloseDB(sd, db); free(lrec); pi_buffer_free(rrec); return EXIT_FAILURE; } header.rt=DELETED_PC_REC; write_header(pc_in, &header); } /* end if checking whether old & new records are the same */ /* free buffers */ if (lrec) { free(lrec); lrec = NULL; } pi_buffer_free(rrec); } /* record found on Palm */ } /* end if Case 3&4 */ /* move to next record in .pc3 file */ if (fseek(pc_in, lrec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); dlp_CloseDB(sd, db); return EXIT_FAILURE; } } /* end while on feof(pc_in) */ fclose(pc_in); #ifdef JPILOT_DEBUG dlp_ReadOpenDBInfo(sd, db, &num); jp_logf(JP_LOG_WARN ,"number of records = %d\n", num); #endif dlp_ResetSyncFlags(sd, db); dlp_CleanUpDatabase(sd, db); dlp_CloseDB(sd, db); return EXIT_SUCCESS; } static int fast_sync_local_recs(char *DB_name, int sd, int db) { int ret; int num; FILE *pc_in; char pc_filename[FILENAME_MAX]; PC3RecordHeader header; unsigned long orig_unique_id, new_unique_id; void *lrec; /* local (.pc3) record */ int lrec_len; void *rrec; /* remote (Palm) record */ int rindex, rattr, rcategory; size_t rrec_len; long char_set; char write_log_message[256]; char error_log_message_w[256]; char error_log_message_d[256]; char delete_log_message[256]; char conflict_log_message[256]; int same; jp_logf(JP_LOG_DEBUG, "fast_sync_local_recs\n"); get_pref(PREF_CHAR_SET, &char_set, NULL); /* This is an attempt to use the proper pronoun most of the time */ if (strchr("aeiou", tolower(DB_name[0]))) { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote an %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing an %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting an %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted an %s record."), DB_name); g_snprintf(conflict_log_message, sizeof(conflict_log_message), _("Sync Conflict: duplicated an %s record."), DB_name); } else { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote a %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing a %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting a %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted a %s record."), DB_name); g_snprintf(conflict_log_message, sizeof(conflict_log_message), _("Sync Conflict: duplicated a %s record."), DB_name); } g_snprintf(pc_filename, sizeof(pc_filename), "%s.pc3", DB_name); pc_in = jp_open_home_file(pc_filename, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), pc_filename); return EXIT_FAILURE; } /* Loop over records in .pc3 file */ while (!feof(pc_in)) { num = read_header(pc_in, &header); if (num!=1) { if (ferror(pc_in)) break; if (feof(pc_in)) break; } lrec_len = header.rec_len; if (lrec_len > 0x10000) { jp_logf(JP_LOG_WARN, _("PC file corrupt?\n")); fclose(pc_in); return EXIT_FAILURE; } /* Case 5: */ if ((header.rt==NEW_PC_REC) || (header.rt==REPLACEMENT_PALM_REC)) { jp_logf(JP_LOG_DEBUG, "Case 5: new pc record\n"); lrec = malloc(lrec_len); if (!lrec) { jp_logf(JP_LOG_WARN, "fast_sync_local_recs(): %s\n", _("Out of memory")); break; } num = fread(lrec, lrec_len, 1, pc_in); if (num != 1) { if (ferror(pc_in)) { free(lrec); break; } } if (header.rt==REPLACEMENT_PALM_REC) { /* A replacement must be checked against pdb file to make sure * a simultaneous modification on the Palm has not occurred */ ret = pdb_file_read_record_by_id(DB_name, header.unique_id, &rrec, &rrec_len, &rindex, &rattr, &rcategory); #ifdef JPILOT_DEBUG if (ret>=0 ) { printf("read record by id %s returned %d\n", DB_name, ret); printf("id %ld, index %d, size %d, attr 0x%x, category %d\n", header.unique_id, rindex, rrec_len, rattr, rcategory); } else { printf("Case 5: read record by id failed\n"); } #endif if (ret >=0) { /* Modified record was also found on Palm. */ /* Compare records but ignore category changes */ /* For simultaneous category changes PC wins */ same = match_records(DB_name, rrec, rrec_len, rattr, 0, lrec, lrec_len, header.attrib&0xF0, 0); #ifdef JPILOT_DEBUG printf("Same is %d\n", same); #endif if (same && (header.unique_id != 0)) { /* Records are the same. Add pc3 record over Palm one */ jp_logf(JP_LOG_DEBUG, "Case 5: lrec & rrec match, keeping Jpilot version\n"); } else { /* Record has been changed on the palm as well as the PC. * * The changed record has already been transferred to the * local pdb file from the Palm. It must be copied to the * Palm and to the local pdb file under a new unique ID * in order to prevent overwriting by the modified PC record. * The record is placed in the Unfiled category so it can * be quickly located. */ jp_logf(JP_LOG_DEBUG, "Case 5: duplicating record\n"); jp_logf(JP_LOG_GUI, _("Sync Conflict: a %s record must be manually merged\n"), DB_name); /* Write record to Palm and get new unique ID */ jp_logf(JP_LOG_DEBUG, "Duplicating PC record to palm\n"); ret = dlp_WriteRecord(sd, db, rattr & dlpRecAttrSecret, 0, 0, rrec, rrec_len, &new_unique_id); /* Write record to local pdb file */ jp_logf(JP_LOG_DEBUG, "Duplicating PC record to local\n"); if (ret >=0) { pdb_file_modify_record(DB_name, rrec, rrec_len, rattr & dlpRecAttrSecret, 0, new_unique_id); } if (ret < 0) { jp_logf(JP_LOG_WARN, "dlp_WriteRecord failed\n"); charset_j2p(error_log_message_w,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_w); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(conflict_log_message,255,char_set); dlp_AddSyncLogEntry(sd, conflict_log_message); dlp_AddSyncLogEntry(sd, "\n"); } } } } /* endif REPLACEMENT_PALM_REC */ jp_logf(JP_LOG_DEBUG, "Writing PC record to palm\n"); orig_unique_id = header.unique_id; if (header.rt==REPLACEMENT_PALM_REC) { ret = dlp_WriteRecord(sd, db, header.attrib & dlpRecAttrSecret, header.unique_id, header.attrib & 0x0F, lrec, lrec_len, &header.unique_id); } else { ret = dlp_WriteRecord(sd, db, header.attrib & dlpRecAttrSecret, 0, header.attrib & 0x0F, lrec, lrec_len, &header.unique_id); } jp_logf(JP_LOG_DEBUG, "Writing PC record to local\n"); if (ret >=0) { if ((header.rt==REPLACEMENT_PALM_REC) && (orig_unique_id != header.unique_id)) { /* There is a possibility that the palm handed back a unique ID * other than the one we requested */ pdb_file_delete_record_by_id(DB_name, orig_unique_id); } pdb_file_modify_record(DB_name, lrec, lrec_len, header.attrib & dlpRecAttrSecret, header.attrib & 0x0F, header.unique_id); } if (lrec) { free(lrec); lrec = NULL; } if (ret < 0) { jp_logf(JP_LOG_WARN, "dlp_WriteRecord failed\n"); charset_j2p(error_log_message_w,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_w); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(write_log_message,255,char_set); dlp_AddSyncLogEntry(sd, write_log_message); dlp_AddSyncLogEntry(sd, "\n"); /* mark the record as deleted in the pc file */ if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } header.rt=DELETED_PC_REC; write_header(pc_in, &header); } } /* endif Case 5 */ /* Case 3 & 4: */ if ((header.rt==DELETED_PALM_REC) || (header.rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_DEBUG, "Case 3&4: deleted or modified pc record\n"); lrec = malloc(lrec_len); if (!lrec) { jp_logf(JP_LOG_WARN, "fast_sync_local_recs(): %s\n", _("Out of memory")); break; } num = fread(lrec, lrec_len, 1, pc_in); if (num != 1) { if (ferror(pc_in)) { free(lrec); break; } } ret = pdb_file_read_record_by_id(DB_name, header.unique_id, &rrec, &rrec_len, &rindex, &rattr, &rcategory); #ifdef JPILOT_DEBUG if (ret>=0 ) { printf("read record by id %s returned %d\n", DB_name, ret); printf("id %ld, index %d, size %d, attr 0x%x, category %d\n", header.unique_id, rindex, rrec_len, rattr, rcategory); } else { printf("Case 3&4: read record by id failed\n"); } #endif if (ret < 0) { /* lrec can't be found in pdb file which means it * has already been deleted from the Palm side. * Mark the local record as deleted */ jp_logf(JP_LOG_DEBUG, "Case 3&4: no remote record found, must have been deleted on the Palm\n"); if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); free(lrec); free(rrec); return EXIT_FAILURE; } header.rt=DELETED_DELETED_PALM_REC; write_header(pc_in, &header); } else { /* Record exists on the palm and has been deleted from PC * If the two records are the same, then no changes have * occurred on the Palm and the deletion should occur */ same = match_records(DB_name, rrec, rrec_len, rattr, rcategory, lrec, lrec_len, header.attrib&0xF0, header.attrib&0x0F); #ifdef JPILOT_DEBUG printf("Same is %d\n", same); #endif if (same && (header.unique_id != 0)) { jp_logf(JP_LOG_DEBUG, "Case 3&4: lrec & rrec match, deleting\n"); ret = dlp_DeleteRecord(sd, db, 0, header.unique_id); if (ret < 0) { jp_logf(JP_LOG_WARN, _("dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n")); charset_j2p(error_log_message_d,255,char_set); dlp_AddSyncLogEntry(sd, error_log_message_d); dlp_AddSyncLogEntry(sd, "\n"); } else { charset_j2p(delete_log_message,255,char_set); dlp_AddSyncLogEntry(sd, delete_log_message); dlp_AddSyncLogEntry(sd, "\n"); pdb_file_delete_record_by_id(DB_name, header.unique_id); } /* Now mark the record in pc3 file as deleted */ if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); free(lrec); free(rrec); return EXIT_FAILURE; } header.rt=DELETED_DELETED_PALM_REC; write_header(pc_in, &header); } else { /* Record has been changed on the palm and deletion can't occur * Mark the pc3 record as having been dealt with */ jp_logf(JP_LOG_DEBUG, "Case 3: skipping PC deleted record\n"); if (fseek(pc_in, -(header.header_len+lrec_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); free(lrec); free(rrec); return EXIT_FAILURE; } header.rt=DELETED_PC_REC; write_header(pc_in, &header); } /* end if checking whether old & new records are the same */ /* free buffers */ if (lrec) { free(lrec); lrec = NULL; } if (rrec) { free(rrec); rrec = NULL; } } /* record found on Palm */ } /* end if Case 3&4 */ /* move to next record in .pc3 file */ if (fseek(pc_in, lrec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } } /* end while on feof(pc_in) */ fclose(pc_in); return EXIT_SUCCESS; } /* * This code does not do archiving. * * For each remote record (RR): * Case 1: * if RR deleted or archived * remove local record (LR) * Case 2: * if RR changed * change LR, If LR doesn't exist then add it * * For each local record (LR): * Case 3: * if LR deleted * if RR==OLR (Original LR) remove both RR and LR * Case 4: * if LR changed * We have a new local record (NLR) and a * modified (deleted) local record (MLR) * if NLR==RR then do nothing (either both were changed equally, or * local was changed and changed back) * otherwise, * add NLR to remote * if RR==LR remove RR * Case 5: * if new LR * add LR to remote */ static int fast_sync_application(char *DB_name, int sd) { int db; int ret; long char_set; char log_entry[256]; char write_log_message[256]; char error_log_message_w[256]; char error_log_message_d[256]; char delete_log_message[256]; /* remote (Palm) record */ pi_buffer_t *rrec; recordid_t rid=0; int rindex, rrec_len, rattr, rcategory; int num_local_recs, num_palm_recs; char *extra_dbname[2]; jp_logf(JP_LOG_DEBUG, "fast_sync_application %s\n", DB_name); if ((DB_name==NULL) || (strlen(DB_name) == 0) || (strlen(DB_name) > 250)) { return EXIT_FAILURE; } g_snprintf(log_entry, sizeof(log_entry), _("Syncing %s\n"), DB_name); jp_logf(JP_LOG_GUI, log_entry); get_pref(PREF_CHAR_SET, &char_set, NULL); /* This is an attempt to use the proper pronoun most of the time */ if (strchr("aeiou", tolower(DB_name[0]))) { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote an %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing an %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting an %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted an %s record."), DB_name); } else { g_snprintf(write_log_message, sizeof(write_log_message), _("Wrote a %s record."), DB_name); g_snprintf(error_log_message_w, sizeof(error_log_message_w), _("Writing a %s record failed."), DB_name); g_snprintf(error_log_message_d, sizeof(error_log_message_d), _("Deleting a %s record failed."), DB_name); g_snprintf(delete_log_message, sizeof(delete_log_message), _("Deleted a %s record."), DB_name); } /* Open the applications database, store access handle in db */ ret = dlp_OpenDB(sd, 0, dlpOpenReadWrite|dlpOpenSecret, DB_name, &db); if (ret < 0) { g_snprintf(log_entry, sizeof(log_entry), _("Unable to open file: %s\n"), DB_name); charset_j2p(log_entry, sizeof(log_entry), char_set); dlp_AddSyncLogEntry(sd, log_entry); jp_logf(JP_LOG_WARN, "fast_sync_application: %s", log_entry); return EXIT_FAILURE; } /* I can't get the appinfodirty flag to work, so I do this for now */ /* ret = dlp_ReadAppBlock(sd, db, 0, rrec, 65535); jp_logf(JP_LOG_DEBUG, "readappblock ret=%d\n", ret); if (ret>0) { pdb_file_write_app_block(DB_name, rrec, ret); }*/ /* Loop over all Palm records with dirty bit set */ while(1) { rrec = pi_buffer_new(0); ret = dlp_ReadNextModifiedRec(sd, db, rrec, &rid, &rindex, &rattr, &rcategory); rrec_len = rrec->used; if (ret>=0 ) { jp_logf(JP_LOG_DEBUG, "read next record for %s returned %d\n", DB_name, ret); jp_logf(JP_LOG_DEBUG, "id %ld, index %d, size %d, attr 0x%x, category %d\n",rid, rindex, rrec_len, rattr, rcategory); } else { pi_buffer_free(rrec); break; } /* Case 1: */ if ((rattr & dlpRecAttrDeleted) || (rattr & dlpRecAttrArchived)) { jp_logf(JP_LOG_DEBUG, "Case 1: found a deleted record on palm\n"); pdb_file_delete_record_by_id(DB_name, rid); pi_buffer_free(rrec); continue; } /* Case 2: */ if (rattr & dlpRecAttrDirty) { jp_logf(JP_LOG_DEBUG, "Case 2: found a dirty record on palm\n"); pdb_file_modify_record(DB_name, rrec->data, rrec->used, rattr, rcategory, rid); pi_buffer_free(rrec); continue; } pi_buffer_free(rrec); } /* end while over Palm records */ fast_sync_local_recs(DB_name, sd, db); dlp_ResetSyncFlags(sd, db); dlp_CleanUpDatabase(sd, db); /* Count the number of records, should be equal, may not be */ dlp_ReadOpenDBInfo(sd, db, &num_palm_recs); pdb_file_count_recs(DB_name, &num_local_recs); dlp_CloseDB(sd, db); if (num_local_recs != num_palm_recs) { extra_dbname[0] = DB_name; extra_dbname[1] = NULL; jp_logf(JP_LOG_DEBUG, "fetch_extra_DBs() [%s]\n", extra_dbname[0]); jp_logf(JP_LOG_DEBUG, "palm: number of records = %d\n", num_palm_recs); jp_logf(JP_LOG_DEBUG, "disk: number of records = %d\n", num_local_recs); fetch_extra_DBs(sd, extra_dbname); } return EXIT_SUCCESS; } static int jp_install_user(const char *device, int sd, struct my_sync_info *sync_info) { struct PilotUser U; U.userID=sync_info->userID; U.viewerID=0; U.lastSyncPC=0; strncpy(U.username, sync_info->username, sizeof(U.username)); dlp_WriteUserInfo(sd, &U); dlp_EndOfSync(sd, 0); pi_close(sd); jp_logf(JP_LOG_GUI, _("Finished installing user information.\n")); return EXIT_SUCCESS; } static int jp_sync(struct my_sync_info *sync_info) { int sd; int ret; struct PilotUser U; const char *device; char default_device[]="/dev/pilot"; int found=0, fast_sync=0; #ifdef ENABLE_PLUGINS GList *plugin_list, *temp_list; struct plugin_s *plugin; #endif #ifdef JPILOT_DEBUG int start; struct DBInfo info; #endif #ifdef ENABLE_PRIVATE char hex_password[PASSWD_LEN*2+4]; #endif char buf[1024]; long char_set; #ifdef JPILOT_DEBUG pi_buffer_t *buffer; #endif int i; /* rename_dbnames is used to modify this list to newer databases if needed */ char dbname[][32]={ "DatebookDB", "AddressDB", "ToDoDB", "MemoDB", #ifdef ENABLE_MANANA "MananaDB", #endif "" }; int pref_sync_array[]={ PREF_SYNC_DATEBOOK, PREF_SYNC_ADDRESS, PREF_SYNC_TODO, PREF_SYNC_MEMO, #ifdef ENABLE_MANANA PREF_SYNC_MANANA, #endif 0 }; /* * This is pretty confusing, but necessary. * This is an array of pointers to functions and will need to be changed * to point to calendar, contacts, tasks, memos, etc. as preferences * dictate. */ int (*unpack_cai_from_buf[])(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) = { NULL, unpack_address_cai_from_ai, unpack_todo_cai_from_ai, unpack_memo_cai_from_ai, unpack_memo_cai_from_ai, #ifdef ENABLE_MANANA unpack_todo_cai_from_ai, #endif NULL }; int (*pack_cai_into_buf[])(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) = { NULL, pack_address_cai_into_ai, pack_todo_cai_into_ai, pack_memo_cai_into_ai, pack_memo_cai_into_ai, #ifdef ENABLE_MANANA pack_todo_cai_into_ai, #endif NULL }; long datebook_version, address_version, todo_version, memo_version; /* Convert to new database names if prefs set */ rename_dbnames(dbname); /* Change unpack/pack function pointers if needed */ get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); get_pref(PREF_ADDRESS_VERSION, &address_version, NULL); get_pref(PREF_TODO_VERSION, &todo_version, NULL); get_pref(PREF_MEMO_VERSION, &memo_version, NULL); if (datebook_version==0) { unpack_cai_from_buf[0]=unpack_datebook_cai_from_ai; pack_cai_into_buf[0]=pack_datebook_cai_into_ai; } if (datebook_version==1) { unpack_cai_from_buf[0]=unpack_calendar_cai_from_ai; pack_cai_into_buf[0]=pack_calendar_cai_into_ai; } if (address_version==1) { unpack_cai_from_buf[1]=unpack_contact_cai_from_ai; pack_cai_into_buf[1]=pack_contact_cai_into_ai; } if (todo_version==1) { /* FIXME: Uncomment when support for Task has been added unpack_cai_from_buf[2]=unpack_task_cai_from_ai; pack_cai_into_buf[2]=pack_task_cai_into_ai; */ ; } if (memo_version==1) { /* No change necessary between Memo and Memos databases */ ; } /* Load the plugins for a forked process */ #ifdef ENABLE_PLUGINS if (!(SYNC_NO_FORK & sync_info->flags) && !(SYNC_NO_PLUGINS & sync_info->flags)) { jp_logf(JP_LOG_DEBUG, "sync:calling load_plugins\n"); load_plugins(); } #endif #ifdef ENABLE_PLUGINS /* Do the plugin_pre_sync_pre_connect calls */ plugin_list = NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->sync_on) { if (plugin->plugin_pre_sync_pre_connect) { jp_logf(JP_LOG_DEBUG, "sync:calling plugin_pre_sync_pre_connect for [%s]\n", plugin->name); plugin->plugin_pre_sync_pre_connect(); } } } } #endif device = NULL; if (sync_info->port) { if (sync_info->port[0]) { /* A port was passed in to use */ device=sync_info->port; found = 1; } } if (!found) { /* No port was passed in, look in env */ device = getenv("PILOTPORT"); if (device == NULL) { device = default_device; } } jp_logf(JP_LOG_GUI, "****************************************\n"); jp_logf(JP_LOG_GUI, _(" Syncing on device %s\n"), device); jp_logf(JP_LOG_GUI, _(" Press the HotSync button now\n")); jp_logf(JP_LOG_GUI, "****************************************\n"); ret = jp_pilot_connect(&sd, device); if (ret) { return ret; } if (SYNC_INSTALL_USER & sync_info->flags) { ret = jp_install_user(device, sd, sync_info); write_to_parent(PIPE_FINISHED, "\n"); return ret; } /* The connection has been established here */ /* Plugins should call pi_watchdog(); if they are going to be a while */ #ifdef ENABLE_PLUGINS /* Do the pre_sync plugin calls */ plugin_list=NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->sync_on) { if (plugin->plugin_pre_sync) { jp_logf(JP_LOG_DEBUG, "sync:calling plugin_pre_sync for [%s]\n", plugin->name); plugin->plugin_pre_sync(); } } } } #endif U.username[0]='\0'; ret = dlp_ReadUserInfo(sd, &U); /* Do some checks to see if this is the same palm that was synced * the last time */ if ( (U.userID == 0) && (!(SYNC_RESTORE & sync_info->flags)) ) { jp_logf(JP_LOG_GUI, _("Last Synced Username-->\"%s\"\n"), sync_info->username); jp_logf(JP_LOG_GUI, _("Last Synced UserID-->\"%d\"\n"), sync_info->userID); jp_logf(JP_LOG_GUI, _(" This Username-->\"%s\"\n"), U.username); jp_logf(JP_LOG_GUI, _(" This User ID-->%d\n"), U.userID); if (SYNC_NO_FORK & sync_info->flags) { return SYNC_ERROR_NULL_USERID; } else { write_to_parent(PIPE_WAITING_ON_USER, "%d:\n", SYNC_ERROR_NULL_USERID); ret = wait_for_response(sd); } if (ret != PIPE_SYNC_CONTINUE) { dlp_EndOfSync(sd, 0); pi_close(sd); return SYNC_ERROR_NULL_USERID; } } if ((sync_info->userID != U.userID) && (sync_info->userID != 0) && (!(SYNC_OVERRIDE_USER & sync_info->flags)) && (!(SYNC_RESTORE & sync_info->flags))) { jp_logf(JP_LOG_GUI, _("Last Synced Username-->\"%s\"\n"), sync_info->username); jp_logf(JP_LOG_GUI, _("Last Synced UserID-->\"%d\"\n"), sync_info->userID); jp_logf(JP_LOG_GUI, _(" This Username-->\"%s\"\n"), U.username); jp_logf(JP_LOG_GUI, _(" This User ID-->%d\n"), U.userID); if (SYNC_NO_FORK & sync_info->flags) { return SYNC_ERROR_NOT_SAME_USERID; } else { write_to_parent(PIPE_WAITING_ON_USER, "%d:\n", SYNC_ERROR_NOT_SAME_USERID); ret = wait_for_response(sd); } if (ret != PIPE_SYNC_CONTINUE) { dlp_EndOfSync(sd, 0); pi_close(sd); return SYNC_ERROR_NOT_SAME_USERID; } } else if ((strcmp(sync_info->username, U.username)) && (sync_info->username[0]!='\0') && (!(SYNC_OVERRIDE_USER & sync_info->flags)) && (!(SYNC_RESTORE & sync_info->flags))) { jp_logf(JP_LOG_GUI, _("Last Synced Username-->\"%s\"\n"), sync_info->username); jp_logf(JP_LOG_GUI, _("Last Synced UserID-->\"%d\"\n"), sync_info->userID); jp_logf(JP_LOG_GUI, _(" This Username-->\"%s\"\n"), U.username); jp_logf(JP_LOG_GUI, _(" This User ID-->%d\n"), U.userID); write_to_parent(PIPE_WAITING_ON_USER, "%d:\n", SYNC_ERROR_NOT_SAME_USER); if (SYNC_NO_FORK & sync_info->flags) { return SYNC_ERROR_NOT_SAME_USER; } else { ret = wait_for_response(sd); } if (ret != PIPE_SYNC_CONTINUE) { dlp_EndOfSync(sd, 0); pi_close(sd); return SYNC_ERROR_NOT_SAME_USER; } } /* User name and User ID is read by the parent process and stored * in the preferences. * So, this is more than just displaying it to the user */ if (!(SYNC_RESTORE & sync_info->flags)) { write_to_parent(PIPE_USERNAME, "\"%s\"\n", U.username); write_to_parent(PIPE_USERID, "%d", U.userID); jp_logf(JP_LOG_GUI, _("Username is \"%s\"\n"), U.username); jp_logf(JP_LOG_GUI, _("User ID is %d\n"), U.userID); } jp_logf(JP_LOG_GUI, _("lastSyncPC = %d\n"), U.lastSyncPC); jp_logf(JP_LOG_GUI, _("This PC = %lu\n"), sync_info->PC_ID); jp_logf(JP_LOG_GUI, "****************************************\n"); jp_logf(JP_LOG_DEBUG, "Last Username = [%s]\n", sync_info->username); jp_logf(JP_LOG_DEBUG, "Last UserID = %d\n", sync_info->userID); jp_logf(JP_LOG_DEBUG, "Username = [%s]\n", U.username); jp_logf(JP_LOG_DEBUG, "userID = %d\n", U.userID); jp_logf(JP_LOG_DEBUG, "lastSyncPC = %d\n", U.lastSyncPC); #ifdef ENABLE_PRIVATE if (U.passwordLength > 0) { bin_to_hex_str((unsigned char *)U.password, hex_password, ((U.passwordLength > 0)&&(U.passwordLength < PASSWD_LEN)) ? U.passwordLength : PASSWD_LEN); } else { strcpy(hex_password, "09021345070413440c08135a3215135dd217ead3b5df556322e9a14a994b0f88"); } jp_logf(JP_LOG_DEBUG, "passwordLength = %d\n", U.passwordLength); jp_logf(JP_LOG_DEBUG, "userPassword = [%s]\n", hex_password); write_to_parent(PIPE_PASSWORD, "\"%s\"\n", hex_password); #endif if (dlp_OpenConduit(sd)<0) { jp_logf(JP_LOG_WARN, "dlp_OpenConduit() failed\n"); jp_logf(JP_LOG_WARN, _("Sync canceled\n")); #ifdef ENABLE_PLUGINS if (!(SYNC_NO_FORK & sync_info->flags)) free_plugin_list(&plugin_list); #endif dlp_EndOfSync(sd, 0); pi_close(sd); return SYNC_ERROR_OPEN_CONDUIT; } sync_process_install_file(sd); if ((SYNC_RESTORE & sync_info->flags)) { U.userID=sync_info->userID; U.viewerID=0; U.lastSyncPC=0; strncpy(U.username, sync_info->username, sizeof(U.username)); dlp_WriteUserInfo(sd, &U); dlp_EndOfSync(sd, 0); pi_close(sd); jp_logf(JP_LOG_GUI, _("Finished restoring handheld.\n")); jp_logf(JP_LOG_GUI, _("You may need to sync to update J-Pilot.\n")); write_to_parent(PIPE_FINISHED, "\n"); return EXIT_SUCCESS; } #ifdef JPILOT_DEBUG start=0; buffer = pi_buffer_new(sizeof(struct DBInfo)); while(dlp_ReadDBList(sd, 0, dlpDBListRAM, start, buffer)>0) { memcpy(&info, buffer->data, sizeof(struct DBInfo)); start=info.index+1; if (info.flags & dlpDBFlagAppInfoDirty) { printf("appinfo dirty for %s\n", info.name); } } pi_buffer_free(buffer); #endif /* Do a fast, or a slow sync on each application in the arrays */ if ( (!(SYNC_OVERRIDE_USER & sync_info->flags)) && (U.lastSyncPC == sync_info->PC_ID) ) { fast_sync=1; jp_logf(JP_LOG_GUI, _("Doing a fast sync.\n")); for (i=0; dbname[i][0]; i++) { if (get_pref_int_default(pref_sync_array[i], 1)) { if (unpack_cai_from_buf[i] && pack_cai_into_buf[i]) { sync_categories(dbname[i], sd, unpack_cai_from_buf[i], pack_cai_into_buf[i]); } fast_sync_application(dbname[i], sd); } } } else { fast_sync=0; jp_logf(JP_LOG_GUI, _("Doing a slow sync.\n")); for (i=0; dbname[i][0]; i++) { if (get_pref_int_default(pref_sync_array[i], 1)) { if (unpack_cai_from_buf[i] && pack_cai_into_buf[i]) { sync_categories(dbname[i], sd, unpack_cai_from_buf[i], pack_cai_into_buf[i]); } slow_sync_application(dbname[i], sd); } } } #ifdef ENABLE_PLUGINS plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; jp_logf(JP_LOG_DEBUG, "syncing plugin name: [%s]\n", plugin->name); if ((plugin->db_name==NULL) || (plugin->db_name[0]=='\0')) { jp_logf(JP_LOG_DEBUG, "not syncing plugin DB: [%s]\n", plugin->db_name); continue; } jp_logf(JP_LOG_DEBUG, "syncing plugin DB: [%s]\n", plugin->db_name); if (fast_sync) { if (plugin->sync_on) { if (plugin->plugin_unpack_cai_from_ai && plugin->plugin_pack_cai_into_ai) { sync_categories(plugin->db_name, sd, plugin->plugin_unpack_cai_from_ai, plugin->plugin_pack_cai_into_ai); } fast_sync_application(plugin->db_name, sd); } } else { if (plugin->sync_on) { if (plugin->plugin_unpack_cai_from_ai && plugin->plugin_pack_cai_into_ai) { sync_categories(plugin->db_name, sd, plugin->plugin_unpack_cai_from_ai, plugin->plugin_pack_cai_into_ai); } slow_sync_application(plugin->db_name, sd); } } } #endif #ifdef ENABLE_PLUGINS /* Do the sync plugin calls */ plugin_list=NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->sync_on) { if (plugin->plugin_sync) { jp_logf(JP_LOG_DEBUG, "calling plugin_sync for [%s]\n", plugin->name); plugin->plugin_sync(sd); } } } } #endif sync_fetch(sd, sync_info->flags, sync_info->num_backups, fast_sync); /* Tell the user who it is, with this PC id. */ U.lastSyncPC = sync_info->PC_ID; U.successfulSyncDate = time(NULL); U.lastSyncDate = U.successfulSyncDate; dlp_WriteUserInfo(sd, &U); if (strncpy(buf,_("Thank you for using J-Pilot."),1024) == NULL) { jp_logf(JP_LOG_DEBUG, "memory allocation internal error\n"); dlp_EndOfSync(sd, 0); pi_close(sd); #ifdef ENABLE_PLUGINS if (!(SYNC_NO_FORK & sync_info->flags)) free_plugin_list(&plugin_list); #endif return 0; } get_pref(PREF_CHAR_SET, &char_set, NULL); charset_j2p(buf,1023,char_set); dlp_AddSyncLogEntry(sd, buf); dlp_AddSyncLogEntry(sd, "\n"); dlp_EndOfSync(sd, 0); pi_close(sd); cleanup_pc_files(); #ifdef ENABLE_PLUGINS /* Do the sync plugin calls */ plugin_list=NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { if (plugin->sync_on) { if (plugin->plugin_post_sync) { jp_logf(JP_LOG_DEBUG, "calling plugin_post_sync for [%s]\n", plugin->name); plugin->plugin_post_sync(); } } } } if (!(SYNC_NO_FORK & sync_info->flags)) { jp_logf(JP_LOG_DEBUG, "freeing plugin list\n"); free_plugin_list(&plugin_list); } #endif jp_logf(JP_LOG_GUI, _("Finished.\n")); write_to_parent(PIPE_FINISHED, "\n"); return EXIT_SUCCESS; } int sync_once(struct my_sync_info *sync_info) { #ifdef USE_LOCKING int fd; #endif int r; struct my_sync_info sync_info_copy; pid_t pid; #ifdef __APPLE__ /* bug 1924 */ sync_info->flags |= SYNC_NO_FORK; #endif #ifdef USE_LOCKING r = sync_lock(&fd); if (r) { jp_logf(JP_LOG_DEBUG, "Child cannot lock file\n"); if (!(SYNC_NO_FORK & sync_info->flags)) { _exit(255); } else { return EXIT_FAILURE; } } #endif /* This should never be reached with new cancel sync code * Although, it can be reached through a remote sync. */ if (glob_child_pid) { jp_logf(JP_LOG_WARN, _("%s: sync process already in progress (process ID = %d)\n"), PN, glob_child_pid); jp_logf(JP_LOG_WARN, _("%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n"), PN, glob_child_pid); return EXIT_FAILURE; } /* Make a copy of the sync info for the forked process */ memcpy(&sync_info_copy, sync_info, sizeof(struct my_sync_info)); if (!(SYNC_NO_FORK & sync_info->flags)) { jp_logf(JP_LOG_DEBUG, "forking sync process\n"); signal(SIGCHLD, sig_handler); glob_child_pid = -1; pid = fork(); switch (pid){ case -1: perror("fork"); return 0; case 0: /* child continues sync */ break; default: /* parent stores child pid and goes back to GUI */ if (-1 == glob_child_pid) glob_child_pid = pid; return EXIT_SUCCESS; } } r = jp_sync(&sync_info_copy); if (r) { jp_logf(JP_LOG_WARN, _("Exiting with status %s\n"), get_error_str(r)); jp_logf(JP_LOG_WARN, _("Finished.\n")); } #ifdef USE_LOCKING sync_unlock(fd); #endif jp_logf(JP_LOG_DEBUG, "sync child exiting\n"); if (!(SYNC_NO_FORK & sync_info->flags)) { _exit(255); } else { return r; } } /***********************************************************************/ /* Imported from pilot-xfer.c, pilot-link-0.12.5, 2010-10-31 */ /***********************************************************************/ /*********************************************************************** * * Function: pi_file_install_VFS * * Summary: Push file(s) to the Palm's VFS (parameters intentionally * similar to pi_file_install). * * Parameters: fd --> open file descriptor for file * basename --> filename or description of file * socket --> sd, connection to Palm * vfspath --> target in VFS, may be dir or filename * f --> progress function, in the style of pi_file_install * * Returns: -1 on bad parameters * -2 on cancelled sync * -3 on bad vfs path * -4 on bad local file * -5 on insufficient VFS space for the file * -6 on memory allocation error * >=0 if all went well (size of installed file) * * Note: Should probably return an ssize_t and refuse to do files > * 2Gb, due to signedness. * ***********************************************************************/ static int pi_file_install_VFS(const int fd, const char *basename, const int socket, const char *vfspath, progress_func f) { enum { bad_parameters=-1, cancel=-2, bad_vfs_path=-3, bad_local_file=-4, insufficient_space=-5, internal_=-6 } ; char rpath[vfsMAXFILENAME]; int rpathlen = vfsMAXFILENAME; FileRef file; unsigned long attributes; char *filebuffer = NULL; long volume = -1; long used, total, freespace; int writesize, offset; size_t readsize; size_t written_so_far = 0; enum { no_path=0, appended_filename=1, retried=2, done=3 } path_steps; struct stat sbuf; pi_progress_t progress; if (fstat(fd,&sbuf) < 0) { fprintf(stderr," ERROR: Cannot stat '%s'.\n",basename); return bad_local_file; } if (findVFSPath(socket,vfspath,&volume,rpath,&rpathlen) < 0) { fprintf(stderr,"\n VFS path '%s' does not exist.\n\n", vfspath); return bad_vfs_path; } if (dlp_VFSVolumeSize(socket,volume,&used,&total)<0) { fprintf(stderr," Unable to get volume size.\n"); return bad_vfs_path; } /* Calculate free space but leave last 64k free on card */ freespace = total - used - 65536 ; if ((unsigned long)sbuf.st_size > freespace) { fprintf(stderr, "\n\n"); fprintf(stderr, " Insufficient space to install this file on your Palm.\n"); fprintf(stderr, " We needed %lu and only had %lu available..\n\n", (unsigned long)sbuf.st_size, freespace); return insufficient_space; } #define APPEND_BASENAME path_steps-=1; \ if (rpath[rpathlen-1] != '/') { \ rpath[rpathlen++]='/'; \ rpath[rpathlen]=0; \ } \ strncat(rpath,basename,vfsMAXFILENAME-rpathlen-1); \ rpathlen = strlen(rpath); path_steps = no_path; while (path_stepsretried appended_filename -> done Note that APPEND_BASENAME takes one off, so retried->appended_basename */ path_steps+=2; if (dlp_VFSFileOpen(socket,volume,rpath,dlpVFSOpenRead,&file) < 0) { /* Target doesn't exist. If it ends with a /, try to create the directory and then act as if the existing directory was given as target. If it doesn't, carry on, it's a regular file to create. */ if ('/' == rpath[rpathlen-1]) { /* directory, doesn't exist. Don't try to mkdir /. */ if ((rpathlen > 1) && (dlp_VFSDirCreate(socket,volume,rpath) < 0)) { fprintf(stderr," Could not create destination directory.\n"); return bad_vfs_path; } APPEND_BASENAME } if (dlp_VFSFileCreate(socket,volume,rpath) < 0) { fprintf(stderr," Cannot create destination file '%s'.\n", rpath); return bad_vfs_path; } } else { /* Exists, and may be a directory, or a filename. If it's a filename, that's fine as long as we're installing just a single file. */ if (dlp_VFSFileGetAttributes(socket,file,&attributes) < 0) { fprintf(stderr," Could not get attributes for destination.\n"); (void) dlp_VFSFileClose(socket,file); return bad_vfs_path; } if (attributes & vfsFileAttrDirectory) { APPEND_BASENAME dlp_VFSFileClose(socket,file); /* Now for sure it's a filename in a directory. */ } else { dlp_VFSFileClose(socket,file); if ('/' == rpath[rpathlen-1]) { /* was expecting a directory */ fprintf(stderr," Destination is not a directory.\n"); return bad_vfs_path; } } } } #undef APPEND_BASENAME if (dlp_VFSFileOpen(socket,volume,rpath,0x7,&file) < 0) { fprintf(stderr," Cannot open destination file '%s'.\n",rpath); return bad_vfs_path; } /* If the file already exists we want to truncate it so if we write a smaller file * the tail of the previous file won't show */ if (dlp_VFSFileResize(socket, file, 0) < 0) { fprintf(stderr," Cannot truncate file size to 0 '%s'.\n",rpath); /* Non-fatal error, continue */ } #define FBUFSIZ 65536 filebuffer = (char *)malloc(FBUFSIZ); if (NULL == filebuffer) { fprintf(stderr," Cannot allocate memory for file copy.\n"); dlp_VFSFileClose(socket,file); close(fd); return internal_; } memset(&progress, 0, sizeof(progress)); progress.type = PI_PROGRESS_SEND_VFS; progress.data.vfs.path = (char *) basename; progress.data.vfs.total_bytes = sbuf.st_size; writesize = 0; written_so_far = 0; while (writesize >= 0) { readsize = read(fd,filebuffer,FBUFSIZ); if (readsize <= 0) break; offset=0; while (readsize > 0) { writesize = dlp_VFSFileWrite(socket,file,filebuffer+offset,readsize); if (writesize < 0) { fprintf(stderr," Error while writing file.\n"); break; } readsize -= writesize; offset += writesize; written_so_far += writesize; progress.transferred_bytes += writesize; if ((writesize>0) || (readsize > 0)) { if (f && (f(socket, &progress) == PI_TRANSFER_STOP)) { sbuf.st_size = 0; pi_set_error(socket,PI_ERR_FILE_ABORTED); goto cleanup; } } } } cleanup: free(filebuffer); dlp_VFSFileClose(socket,file); close(fd); return sbuf.st_size; } /*********************************************************************** * * Function: findVFSRoot_clumsy * * Summary: For internal use only. May contain live weasels. * * Parameters: root_component --> root path to search for. * match <-> volume matching root_component. * * Returns: -2 on VFSVolumeEnumerate error, * -1 if no match was found, * 0 if a match was found and @p match is set, * 1 if no match but only one VFS volume exists and * match is set. * ***********************************************************************/ static int findVFSRoot_clumsy(int sd, const char *root_component, long *match) { int volume_count = 16; int volumes[16]; struct VFSInfo info; int i; int buflen; char buf[vfsMAXFILENAME]; long matched_volume = -1; if (dlp_VFSVolumeEnumerate(sd,&volume_count,volumes) < 0) { return -2; } /* Here we scan the "root directory" of the Pilot. We will fake out a bunch of directories pointing to the various "cards" on the device. If we're listing, print everything out, otherwise remain silent and just set matched_volume if there's a match in the first filename component. */ for (i = 0; i= 0) { *match = matched_volume; return 0; } if ((matched_volume < 0) && (1 == volume_count)) { /* Assume that with one card, just go look there. */ *match = volumes[0]; return 1; } return -1; } /*********************************************************************** * * Function: findVFSPath * * Summary: Search the VFS volumes for @p path. Sets @p volume * equal to the VFS volume matching @p path (if any) and * fills buffer @p rpath with the path to the file relative * to the volume. * * Acceptable root components are /cardX/ for card indicators * or /volumename/ for for identifying VFS volumes by their * volume name. In the special case that there is only one * VFS volume, no root component need be specified, and * "/DCIM/" will map to "/card1/DCIM/". * * Parameters: path --> path to search for. * volume <-> volume containing path. * rpath <-> buffer for path relative to volume. * rpathlen <-> in: length of buffer; out: length of * relative path. * * Returns: -2 on VFSVolumeEnumerate error, * -1 if no match was found, * 0 if a match was found. * ***********************************************************************/ static int findVFSPath(int sd, const char *path, long *volume, char *rpath, int *rpathlen) { char *s; int r; if ((NULL == path) || (NULL == rpath) || (NULL == rpathlen)) return -1; if (*rpathlen < strlen(path)) return -1; memset(rpath,0,*rpathlen); if ('/'==path[0]) strncpy(rpath,path+1,*rpathlen-1); else strncpy(rpath,path,*rpathlen-1); s = strchr(rpath,'/'); if (NULL != s) *s=0; r = findVFSRoot_clumsy(sd, rpath,volume); if (r < 0) return r; if (0 == r) { /* Path includes card/volume label. */ r = strlen(rpath); if ('/'==path[0]) ++r; /* adjust for stripped / */ memset(rpath,0,*rpathlen); strncpy(rpath,path+r,*rpathlen-1); } else { /* Path without card label */ memset(rpath,0,*rpathlen); strncpy(rpath,path,*rpathlen-1); } if (!rpath[0]) { rpath[0]='/'; rpath[1]=0; } *rpathlen = strlen(rpath); return 0; } jpilot-1.8.2/intltool-merge.in0000664000175000017500000000000012336026316013227 00000000000000jpilot-1.8.2/depcomp0000755000175000017500000005601612261335263011334 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: jpilot-1.8.2/empty/0000775000175000017500000000000012340262141011157 500000000000000jpilot-1.8.2/empty/ToDoDB.pdb0000664000175000017500000000055212320101153012634 00000000000000ToDoDB´1zÆ‘U¸Æ‘U¸PDATAtodoUnfiledusinessersonaljpilot-1.8.2/empty/MemoDB.pdb0000664000175000017500000000055212320101153012664 00000000000000MemoDB´uæÞÆ‘U¸Æ‘U¸PDATAmemoUnfiledusinessersonaljpilot-1.8.2/empty/MananaDB.pdb0000664000175000017500000000055212320101153013162 00000000000000MañanaDBƘ*¹Æ˜¾EƘ¾ƒRPDATACYCLUnfiled1sonalsinessjpilot-1.8.2/empty/ContactsDB-PAdd.pdb0000664000175000017500000000222412320101153014351 00000000000000ContactsDB-PAddº8PÆ‘HÏÆ‘HÏ1PDATAPAddUnfiledusinessersonaluickList012345:ÿÿÿÿÿÿÿÿÿÿLast nameFirst nameCompanyTitleWorkHomeFaxOtherE-mailMainPagerChat1Chat2Web siteCustom 1Custom 2Custom 3Custom 4Custom 5Custom 6Custom 7Custom 8Custom 9Addr(W)CityStateZip CodeCountryAddr(H)CityStateZip CodeCountryAddr(O)CityStateZip CodeCountryNoteBirthdayMobileIMAIMMSNYahooAOL ICQPhone/EmailIMAddressjpilot-1.8.2/empty/MemosDB-PMem.pdb0000664000175000017500000000057412320101153013707 00000000000000MemosDB-PMemº8PÆ‘HÏÆ‘HÏ7PDATAPMemUnfiledusinessersonaljpilot-1.8.2/empty/Makefile.am0000664000175000017500000000060712320101153013127 00000000000000# install blank pdb files pdbdir = $(datadir)/$(PACKAGE) pdb_DATA = DatebookDB.pdb \ CalendarDB-PDat.pdb \ AddressDB.pdb \ ContactsDB-PAdd.pdb \ ToDoDB.pdb \ TasksDB-PTod.pdb \ MananaDB.pdb \ MemoDB.pdb \ MemosDB-PMem.pdb \ Memo32DB.pdb \ ExpenseDB.pdb EXTRA_DIST = $(pdb_DATA) jpilot-1.8.2/empty/Memo32DB.pdb0000664000175000017500000000055212320101153013031 00000000000000Memo32DB¶£Ò©¶§ª©¶§ªµ@PDATApn32Unfiledusinessersonaljpilot-1.8.2/empty/AddressDB.pdb0000664000175000017500000000131612320101153013353 00000000000000AddressDB´:…OÆ‘U·Æ‘U·PDATAaddrUnfiledusinessersonaluickList?ÿÿLast nameFirst nameCompanyWorkHomeFaxOtherE-mailAddressCityStateZip CodeCountryTitleCustom 1Custom 2Custom 3Custom 4NoteMainPagerMobilejpilot-1.8.2/empty/CalendarDB-PDat.pdb0000664000175000017500000000057212320101153014330 00000000000000CalendarDB-PDatÆÁàÚÆÁá[ÆÁá[PDATAPDatUnfiledusinessersonaljpilot-1.8.2/empty/ExpenseDB.pdb0000664000175000017500000000073012320101153013374 00000000000000ExpenseDB·>ÝÛ·>ÝÝÿþ®€PDATAexpsUnfiledew Yorkarisjpilot-1.8.2/empty/DatebookDB.pdb0000664000175000017500000000055012320101153013515 00000000000000DatebookDB°Òd°Òf°Ò½PDATAdatejpilot-1.8.2/empty/TasksDB-PTod.pdb0000664000175000017500000000057412320101153013724 00000000000000TasksDB-PTodÃU¶5ÃUºRÃUºQ PDATAPTodUnfiledBusinessPersonal ÿÿjpilot-1.8.2/empty/Makefile.in0000664000175000017500000003676212336026321013165 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = empty DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pdbdir)" DATA = $(pdb_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # install blank pdb files pdbdir = $(datadir)/$(PACKAGE) pdb_DATA = DatebookDB.pdb \ CalendarDB-PDat.pdb \ AddressDB.pdb \ ContactsDB-PAdd.pdb \ ToDoDB.pdb \ TasksDB-PTod.pdb \ MananaDB.pdb \ MemoDB.pdb \ MemosDB-PMem.pdb \ Memo32DB.pdb \ ExpenseDB.pdb EXTRA_DIST = $(pdb_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign empty/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign empty/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pdbDATA: $(pdb_DATA) @$(NORMAL_INSTALL) @list='$(pdb_DATA)'; test -n "$(pdbdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdbdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdbdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdbdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdbdir)" || exit $$?; \ done uninstall-pdbDATA: @$(NORMAL_UNINSTALL) @list='$(pdb_DATA)'; test -n "$(pdbdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pdbdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pdbdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pdbDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pdbDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdbDATA install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-pdbDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/address_gui.c0000664000175000017500000046544312340261240012415 00000000000000/******************************************************************************* * address_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "jp-pi-contact.h" #include "address.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "print.h" #include "password.h" #include "export.h" #include "stock_buttons.h" /********************************* Constants **********************************/ #define NUM_ADDRESS_CAT_ITEMS 16 #define NUM_PHONE_ENTRIES 7 #define NUM_PHONE_LABELS 8 #define MAX_NUM_TEXTS contNote+1 #define NUM_IM_LABELS 5 #define ADDRESS_NAME_COLUMN 0 #define ADDRESS_NOTE_COLUMN 1 #define ADDRESS_PHONE_COLUMN 2 #define ADDRESS_MAX_CLIST_NAME 30 #define ADDRESS_MAX_COLUMN_LEN 80 #define NUM_CONT_CSV_FIELDS 56 #define NUM_ADDR_CSV_FIELDS 27 /* Size of photo to display in Jpilot. Actual photo can be larger */ #define PHOTO_X_SZ 139 #define PHOTO_Y_SZ 144 /* Many RFCs require that the line termination be CRLF rather than just \n. * For conformance to standards this requires adding the two-byte string to * the end of strings destined for export */ #define CRLF "\x0D\x0A" #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 /******************************* Global vars **********************************/ static address_schema_entry *schema; static int schema_size; static address_schema_entry contact_schema[NUM_CONTACT_FIELDS]={ {contLastname, 0, ADDRESS_GUI_LABEL_TEXT}, {contFirstname, 0, ADDRESS_GUI_LABEL_TEXT}, {contCompany, 0, ADDRESS_GUI_LABEL_TEXT}, {contTitle, 0, ADDRESS_GUI_LABEL_TEXT}, {contPhone1, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone2, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone3, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone4, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone5, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone6, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone7, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contIM1, 0, ADDRESS_GUI_IM_MENU_TEXT}, {contIM2, 0, ADDRESS_GUI_IM_MENU_TEXT}, {contWebsite, 0, ADDRESS_GUI_WEBSITE_TEXT}, {contAddress1, 1, ADDRESS_GUI_ADDR_MENU_TEXT}, {contCity1, 1, ADDRESS_GUI_LABEL_TEXT}, {contState1, 1, ADDRESS_GUI_LABEL_TEXT}, {contZip1, 1, ADDRESS_GUI_LABEL_TEXT}, {contCountry1, 1, ADDRESS_GUI_LABEL_TEXT}, {contAddress2, 2, ADDRESS_GUI_ADDR_MENU_TEXT}, {contCity2, 2, ADDRESS_GUI_LABEL_TEXT}, {contState2, 2, ADDRESS_GUI_LABEL_TEXT}, {contZip2, 2, ADDRESS_GUI_LABEL_TEXT}, {contCountry2, 2, ADDRESS_GUI_LABEL_TEXT}, {contAddress3, 3, ADDRESS_GUI_ADDR_MENU_TEXT}, {contCity3, 3, ADDRESS_GUI_LABEL_TEXT}, {contState3, 3, ADDRESS_GUI_LABEL_TEXT}, {contZip3, 3, ADDRESS_GUI_LABEL_TEXT}, {contCountry3, 3, ADDRESS_GUI_LABEL_TEXT}, {contBirthday, 4, ADDRESS_GUI_BIRTHDAY}, {contCustom1, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom2, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom3, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom4, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom5, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom6, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom7, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom8, 4, ADDRESS_GUI_LABEL_TEXT}, {contCustom9, 4, ADDRESS_GUI_LABEL_TEXT}, {contNote, 5, ADDRESS_GUI_LABEL_TEXT} }; static address_schema_entry address_schema[NUM_ADDRESS_FIELDS]={ {contLastname, 0, ADDRESS_GUI_LABEL_TEXT}, {contFirstname, 0, ADDRESS_GUI_LABEL_TEXT}, {contTitle, 0, ADDRESS_GUI_LABEL_TEXT}, {contCompany, 0, ADDRESS_GUI_LABEL_TEXT}, {contPhone1, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone2, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone3, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone4, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contPhone5, 0, ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT}, {contAddress1, 1, ADDRESS_GUI_LABEL_TEXT}, {contCity1, 1, ADDRESS_GUI_LABEL_TEXT}, {contState1, 1, ADDRESS_GUI_LABEL_TEXT}, {contZip1, 1, ADDRESS_GUI_LABEL_TEXT}, {contCountry1, 1, ADDRESS_GUI_LABEL_TEXT}, {contCustom1, 2, ADDRESS_GUI_LABEL_TEXT}, {contCustom2, 2, ADDRESS_GUI_LABEL_TEXT}, {contCustom3, 2, ADDRESS_GUI_LABEL_TEXT}, {contCustom4, 2, ADDRESS_GUI_LABEL_TEXT}, {contNote, 3, ADDRESS_GUI_LABEL_TEXT} }; /* Keeps track of whether code is using Address or Contacts database. * 0 is AddressDB, 1 is ContactsDB */ static long address_version=0; static GtkWidget *clist; static GtkWidget *addr_text[MAX_NUM_TEXTS]; static GObject *addr_text_buffer[MAX_NUM_TEXTS]; static GtkWidget *addr_all; static GObject *addr_all_buffer; static GtkWidget *notebook_label[NUM_CONTACT_NOTEBOOK_PAGES]; static GtkWidget *phone_type_list_menu[NUM_PHONE_ENTRIES]; static GtkWidget *phone_type_menu_item[NUM_PHONE_ENTRIES][NUM_PHONE_LABELS]; /* 7 menus with 8 possible entries */ static GtkWidget *address_type_list_menu[NUM_ADDRESSES]; static GtkWidget *address_type_menu_item[NUM_ADDRESSES][NUM_ADDRESSES]; /* 3 menus with 3 possible entries */ static GtkWidget *IM_type_list_menu[NUM_IMS]; static GtkWidget *IM_type_menu_item[NUM_IMS][NUM_IM_LABELS]; /* 2 menus with 5 possible entries */ static int address_phone_label_selected[NUM_PHONE_ENTRIES]; static int address_type_selected[NUM_ADDRESSES]; static int IM_type_selected[NUM_IMS]; /* Need two extra slots for the ALL category and Edit Categories... */ static GtkWidget *address_cat_menu_item1[NUM_ADDRESS_CAT_ITEMS+2]; static GtkWidget *address_cat_menu_item2[NUM_ADDRESS_CAT_ITEMS]; static GtkWidget *category_menu1; static GtkWidget *category_menu2; static GtkWidget *address_quickfind_entry; static GtkWidget *notebook; static GtkWidget *pane; static GtkWidget *radio_button[NUM_PHONE_ENTRIES]; static GtkWidget *dial_button[NUM_PHONE_ENTRIES]; static struct AddressAppInfo address_app_info; static struct ContactAppInfo contact_app_info; static struct sorted_cats sort_l[NUM_ADDRESS_CAT_ITEMS]; static int address_category=CATEGORY_ALL; static int clist_row_selected; static ContactList *glob_contact_list=NULL; static ContactList *export_contact_list=NULL; static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *undelete_record_button; static GtkWidget *copy_record_button; static GtkWidget *cancel_record_button; static int record_changed; static GtkWidget *private_checkbox; static GtkWidget *picture_button; static GtkWidget *birthday_checkbox; static GtkWidget *birthday_button; static GtkWidget *birthday_box; static GtkWidget *reminder_checkbox; static GtkWidget *reminder_entry; static GtkWidget *reminder_box; static struct tm birthday; static GtkWidget *image=NULL; static struct ContactPicture contact_picture; static GList *changed_list=NULL; extern GtkWidget *glob_date_label; extern int glob_date_timer_tag; /****************************** Prototypes ************************************/ static void connect_changed_signals(int con_or_dis); static void address_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, ContactList **cont_list, int category, int main); static int address_clist_redraw(void); static int address_find(void); /****************************** Main Code *************************************/ /* Called once on initialization of GUI */ static void init(void) { time_t ltime; struct tm *now; if (address_version) { jp_logf(JP_LOG_DEBUG, "setting schema to contacts\n"); schema = contact_schema; schema_size = NUM_CONTACT_FIELDS; } else { jp_logf(JP_LOG_DEBUG, "setting schema to addresses\n"); schema = address_schema; schema_size = NUM_ADDRESS_FIELDS; } time(<ime); now = localtime(<ime); memcpy(&birthday, now, sizeof(struct tm)); contact_picture.dirty=0; contact_picture.length=0; contact_picture.data=NULL; clist_row_selected=0; changed_list=NULL; record_changed=CLEAR_FLAG; } static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case NEW_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(undelete_record_button); break; case UNDELETE_FLAG: gtk_widget_show(undelete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(delete_record_button); break; default: return; } record_changed=new_state; } static void cb_record_changed(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if (GTK_CLIST(clist)->rows > 0) { set_new_button_to(MODIFY_FLAG); } else { set_new_button_to(NEW_FLAG); } } else if (record_changed==UNDELETE_FLAG) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is deleted.\n" "Undelete it or copy it to make changes.\n")); } } static void connect_changed_signals(int con_or_dis) { GtkWidget *w; GList *temp_list; static int connected=0; /* Connect signals */ if ((con_or_dis==CONNECT_SIGNALS)) { if (connected) return; connected=1; for (temp_list = changed_list; temp_list; temp_list = temp_list->next) { if (!(w=temp_list->data)) { continue; } if (GTK_IS_TEXT_BUFFER(w) || GTK_IS_ENTRY(w) || GTK_IS_TEXT_VIEW(w) ) { g_signal_connect(w, "changed", GTK_SIGNAL_FUNC(cb_record_changed), NULL); continue; } if (GTK_IS_CHECK_MENU_ITEM(w) || GTK_IS_RADIO_BUTTON(w) || GTK_IS_CHECK_BUTTON(w) ) { g_signal_connect(w, "toggled", GTK_SIGNAL_FUNC(cb_record_changed), NULL); continue; } if (GTK_IS_BUTTON(w)) { g_signal_connect(w, "pressed", GTK_SIGNAL_FUNC(cb_record_changed), NULL); continue; } jp_logf(JP_LOG_DEBUG, "connect_changed_signals(): Encountered unknown object type. Skipping\n"); } return; } /* Disconnect signals */ if ((con_or_dis==DISCONNECT_SIGNALS)) { if (!connected) return; connected=0; for (temp_list = changed_list; temp_list; temp_list = temp_list->next) { if (!(temp_list->data)) { continue; } w=temp_list->data; g_signal_handlers_disconnect_by_func(w, GTK_SIGNAL_FUNC(cb_record_changed), NULL); } } } int address_print(void) { long this_many; AddressList *addr_list; MyContact *mcont; ContactList *cont_list; ContactList cont_list1; int get_category; get_pref(PREF_PRINT_THIS_MANY, &this_many, NULL); cont_list=NULL; if (this_many==1) { mcont = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcont < (MyContact *)CLIST_MIN_DATA) { return EXIT_FAILURE; } memcpy(&(cont_list1.mcont), mcont, sizeof(MyContact)); cont_list1.next=NULL; cont_list = &cont_list1; } /* Get Contacts, or Addresses */ if ((this_many==2) || (this_many==3)) { get_category = CATEGORY_ALL; if (this_many==2) { get_category = address_category; } if (address_version==0) { addr_list = NULL; get_addresses2(&addr_list, SORT_ASCENDING, 2, 2, 1, get_category); copy_addresses_to_contacts(addr_list, &cont_list); free_AddressList(&addr_list); } else { get_contacts2(&cont_list, SORT_ASCENDING, 2, 2, 1, get_category); } } print_contacts(cont_list, &contact_app_info, schema, schema_size); if ((this_many==2) || (this_many==3)) { free_ContactList(&cont_list); } return EXIT_SUCCESS; } static GString *contact_to_gstring(struct Contact *cont) { GString *s; int i; int address_i, IM_i, phone_i; char birthday_str[255]; const char *pref_date; char NL[2]; char *utf; long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); s = g_string_sized_new(4096); NL[0]='\0'; NL[1]='\0'; address_i = IM_i = phone_i = 0; for (i=0; ientry[schema[i].record_field]==NULL) continue; if (address_version) { g_string_sprintfa(s, _("%s%s: %s"), NL, contact_app_info.labels[schema[i].record_field], cont->entry[schema[i].record_field]); } else { utf = charset_p2newj(contact_app_info.labels[schema[i].record_field], 16, char_set); g_string_sprintfa(s, _("%s%s: %s"), NL, utf, cont->entry[schema[i].record_field]); g_free(utf); } NL[0]='\n'; break; case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: if (cont->entry[schema[i].record_field]==NULL) { phone_i++; continue; } utf = charset_p2newj(contact_app_info.phoneLabels[cont->phoneLabel[phone_i]], 16, char_set); g_string_sprintfa(s, _("%s%s: %s"), NL, utf, cont->entry[schema[i].record_field]); g_free(utf); NL[0]='\n'; phone_i++; break; case ADDRESS_GUI_IM_MENU_TEXT: if (cont->entry[schema[i].record_field]==NULL) { IM_i++; continue; } utf = charset_p2newj(contact_app_info.IMLabels[cont->IMLabel[IM_i]], 16, char_set); g_string_sprintfa(s, _("%s%s: %s"), NL, utf, cont->entry[schema[i].record_field]); g_free(utf); NL[0]='\n'; IM_i++; break; case ADDRESS_GUI_ADDR_MENU_TEXT: if (cont->entry[schema[i].record_field]==NULL) { address_i++; continue; } utf = charset_p2newj(contact_app_info.addrLabels[cont->addressLabel[address_i]], 16, char_set); g_string_sprintfa(s, _("%s%s: %s"), NL, utf, cont->entry[schema[i].record_field]); g_free(utf); NL[0]='\n'; address_i++; break; case ADDRESS_GUI_BIRTHDAY: if (cont->birthdayFlag==0) continue; get_pref(PREF_LONGDATE, NULL, &pref_date); strftime(birthday_str, sizeof(birthday_str), pref_date, &cont->birthday); utf = charset_p2newj(contact_app_info.labels[schema[i].record_field], 16, char_set); g_string_sprintfa(s, _("%s%s: %s"), NL, utf, birthday_str); g_free(utf); NL[0]='\n'; break; } } return s; } /* Start Import Code */ static int cb_addr_import(GtkWidget *parent_window, const char *file_path, int type) { FILE *in; char text[65536]; struct Address new_addr; struct Contact new_cont; struct CategoryAppInfo *p_cai; unsigned char attrib; int i, j, ret, index; int address_i, IM_i, phone_i; int import_all; char old_cat_name[32]; int new_cat_num, suggested_cat_num; int priv; int year, month, day; GString *cont_text; AddressList *addrlist; AddressList *temp_addrlist; struct CategoryAppInfo cai; in=fopen(file_path, "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), file_path); return EXIT_FAILURE; } switch (type) { case IMPORT_TYPE_CSV: jp_logf(JP_LOG_DEBUG, "Address import CSV [%s]\n", file_path); /* Switch between contacts & address data structures */ if (address_version) { p_cai = &contact_app_info.category; } else { p_cai = &address_app_info.category; } /* Get the first line containing the format and check for reasonableness */ if (fgets(text, sizeof(text), in) == NULL) { jp_logf(JP_LOG_WARN, _("Unable to read file: %s\n"), file_path); } if (address_version) { ret = verify_csv_header(text, NUM_CONT_CSV_FIELDS, file_path); } else { ret = verify_csv_header(text, NUM_ADDR_CSV_FIELDS, file_path); } if (EXIT_FAILURE == ret) return EXIT_FAILURE; import_all=FALSE; while (1) { /* Read the category field */ read_csv_field(in, text, sizeof(text)); if (feof(in)) break; #ifdef JPILOT_DEBUG printf("category is [%s]\n", text); #endif g_strlcpy(old_cat_name, text, 16); /* Try to match imported category name to an existing category number */ suggested_cat_num = 0; for (i=0; iname[i][0]) continue; if (!strcmp(p_cai->name[i], old_cat_name)) { suggested_cat_num = i; break; } } /* Read the private field */ read_csv_field(in, text, sizeof(text)); #ifdef JPILOT_DEBUG printf("private is [%s]\n", text); #endif sscanf(text, "%d", &priv); /* Need to clear record if doing multiple imports */ memset(&new_cont, 0, sizeof(new_cont)); address_i=phone_i=IM_i=0; for (i=0; istr, p_cai, old_cat_name, priv, suggested_cat_num, &new_cat_num); } else { new_cat_num=suggested_cat_num; } g_string_free(cont_text, TRUE); if (ret==DIALOG_SAID_IMPORT_QUIT) { jp_free_Contact(&new_cont); break; } if (ret==DIALOG_SAID_IMPORT_SKIP) { jp_free_Contact(&new_cont); continue; } if (ret==DIALOG_SAID_IMPORT_ALL) { import_all=TRUE; } attrib = (new_cat_num & 0x0F) | (priv ? dlpRecAttrSecret : 0); if ((ret==DIALOG_SAID_IMPORT_YES) || import_all) { if (address_version) { pc_contact_write(&new_cont, NEW_PC_REC, attrib, NULL); jp_free_Contact(&new_cont); } else { copy_contact_to_address(&new_cont,&new_addr); jp_free_Contact(&new_cont); pc_address_write(&new_addr, NEW_PC_REC, attrib, NULL); free_Address(&new_addr); } } } break; case IMPORT_TYPE_DAT: /* Palm Desktop DAT format */ jp_logf(JP_LOG_DEBUG, "Address import DAT [%s]\n", file_path); if (dat_check_if_dat_file(in)!=DAT_ADDRESS_FILE) { jp_logf(JP_LOG_WARN, _("File doesn't appear to be address.dat format\n")); fclose(in); return EXIT_FAILURE; } addrlist=NULL; dat_get_addresses(in, &addrlist, &cai); import_all=FALSE; for (temp_addrlist=addrlist; temp_addrlist; temp_addrlist=temp_addrlist->next) { index=temp_addrlist->maddr.unique_id-1; if (index<0) { g_strlcpy(old_cat_name, _("Unfiled"), 16); } else { g_strlcpy(old_cat_name, cai.name[index], 16); } /* Figure out what category it was in the dat file */ index=temp_addrlist->maddr.unique_id-1; suggested_cat_num=0; if (index>-1) { for (i=0; imaddr.addr), &new_cont); cont_text = contact_to_gstring(&new_cont); ret=import_record_ask(parent_window, pane, cont_text->str, &(address_app_info.category), old_cat_name, (temp_addrlist->maddr.attrib & 0x10), suggested_cat_num, &new_cat_num); g_string_free(cont_text, TRUE); jp_free_Contact(&new_cont); } else { new_cat_num=suggested_cat_num; } if (ret==DIALOG_SAID_IMPORT_QUIT) break; if (ret==DIALOG_SAID_IMPORT_SKIP) continue; if (ret==DIALOG_SAID_IMPORT_ALL) import_all=TRUE; attrib = (new_cat_num & 0x0F) | ((temp_addrlist->maddr.attrib & 0x10) ? dlpRecAttrSecret : 0); if ((ret==DIALOG_SAID_IMPORT_YES) || (import_all)) { pc_address_write(&(temp_addrlist->maddr.addr), NEW_PC_REC, attrib, NULL); } } free_AddressList(&addrlist); break; } /* end switch for import types */ address_refresh(); fclose(in); return EXIT_SUCCESS; } int address_import(GtkWidget *window) { char *type_desc[] = { N_("CSV (Comma Separated Values)"), N_("DAT/ABA (Palm Archive Formats)"), NULL }; int type_int[] = { IMPORT_TYPE_CSV, IMPORT_TYPE_DAT, 0 }; /* Hide ABA import of Contacts until file format has been decoded */ if (address_version==1) { type_desc[1] = NULL; type_int[1] = 0; } import_gui(window, pane, type_desc, type_int, cb_addr_import); return EXIT_SUCCESS; } /* End Import Code */ /* Start Export code */ static const char *ldifMapType(int label) { switch (label) { case 0: return "telephoneNumber"; case 1: return "homePhone"; case 2: return "facsimileTelephoneNumber"; case 3: return "xotherTelephoneNumber"; case 4: return "mail"; case 5: return "xmainTelephoneNumber"; case 6: return "pager"; case 7: return "mobile"; default: return "xunknownTelephoneNumber"; } } static const char *vCardMapType(int label) { switch (label) { case 0: return "work"; case 1: return "home"; case 2: return "fax"; case 3: return "x-other"; case 4: return "email"; case 5: return "x-main"; case 6: return "pager"; case 7: return "cell"; default: return "x-unknown"; } } static void cb_addr_export_ok(GtkWidget *export_window, GtkWidget *clist, int type, const char *filename) { MyContact *mcont; GList *list, *temp_list; FILE *out; struct stat statb; const char *short_date; time_t ltime; struct tm *now; char str1[256], str2[256]; char pref_time[40]; int i, r, n; int record_num; char *button_text[]={N_("OK")}; char *button_overwrite_text[]={N_("No"), N_("Yes")}; char text[1024]; char date_string[1024]; char csv_text[65550]; long char_set; char username[256]; char hostname[256]; const char *svalue; long userid; char birthday_str[255]; const char *pref_date; int address_i, IM_i, phone_i; int index = 0; char *utf; /* Open file for export, including corner cases where file exists or * can't be opened */ if (!stat(filename, &statb)) { if (S_ISDIR(statb.st_mode)) { g_snprintf(text, sizeof(text), _("%s is a directory"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } g_snprintf(text, sizeof(text), _("Do you want to overwrite file %s?"), filename); r = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_QUESTION, text, 2, button_overwrite_text); if (r!=DIALOG_SAID_2) { return; } } out = fopen(filename, "w"); if (!out) { g_snprintf(text, sizeof(text), _("Error opening file: %s"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } /* Write a header for TEXT file */ if (type == EXPORT_TYPE_TEXT) { get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(date_string, sizeof(date_string), "%s %s", str1, str2); if (address_version==0) { fprintf(out, _("Address exported from %s %s on %s\n\n"), PN,VERSION,date_string); } else { fprintf(out, _("Contact exported from %s %s on %s\n\n"), PN,VERSION,date_string); } } /* Write a header to the CSV file */ if (type == EXPORT_TYPE_CSV) { if (address_version) { fprintf(out, "CSV contacts version "VERSION": Category, Private, "); } else { fprintf(out, "CSV address version "VERSION": Category, Private, "); } address_i=phone_i=IM_i=0; for (i=0; iselection; /* Loop over clist of records to export */ for (record_num=0, temp_list=list; temp_list; temp_list = temp_list->next, record_num++) { mcont = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mcont) { continue; jp_logf(JP_LOG_WARN, _("Can't export address %d\n"), (long) temp_list->data + 1); } switch (type) { case EXPORT_TYPE_TEXT: utf = charset_p2newj(contact_app_info.category.name[mcont->attrib & 0x0F], 16, char_set); fprintf(out, _("Category: %s\n"), utf); g_free(utf); fprintf(out, _("Private: %s\n"), (mcont->attrib & dlpRecAttrSecret) ? _("Yes"):_("No")); for (i=0; icont.birthdayFlag) { fprintf(out, _("%s: "), contact_app_info.labels[schema[i].record_field] ? contact_app_info.labels[schema[i].record_field] : ""); birthday_str[0]='\0'; get_pref(PREF_SHORTDATE, NULL, &pref_date); strftime(birthday_str, sizeof(birthday_str), pref_date, &(mcont->cont.birthday)); fprintf(out, _("%s\n"), birthday_str); continue; } } if (mcont->cont.entry[schema[i].record_field]) { /* Print labels for menu selectable fields (Work, Fax, etc.) */ switch (schema[i].type) { case ADDRESS_GUI_IM_MENU_TEXT: index = mcont->cont.IMLabel[i-contIM1]; fprintf(out, _("%s: "), contact_app_info.IMLabels[index]); break; case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: index = mcont->cont.phoneLabel[i-contPhone1]; fprintf(out, _("%s: "), contact_app_info.phoneLabels[index]); break; case ADDRESS_GUI_ADDR_MENU_TEXT: switch (schema[i].record_field) { case contAddress1 : index = 0; break; case contAddress2 : index = 1; break; case contAddress3 : index = 2; break; } index = mcont->cont.addressLabel[index]; fprintf(out, _("%s: "), contact_app_info.addrLabels[mcont->cont.addressLabel[index]]); break; default: fprintf(out, _("%s: "), contact_app_info.labels[schema[i].record_field] ? contact_app_info.labels[schema[i].record_field] : ""); } /* Next print the entry field */ switch (schema[i].type) { case ADDRESS_GUI_LABEL_TEXT: case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: case ADDRESS_GUI_IM_MENU_TEXT: case ADDRESS_GUI_ADDR_MENU_TEXT: case ADDRESS_GUI_WEBSITE_TEXT: fprintf(out, "%s\n", mcont->cont.entry[schema[i].record_field]); break; } } } fprintf(out, "\n"); break; case EXPORT_TYPE_CSV: /* Category name */ utf = charset_p2newj(contact_app_info.category.name[mcont->attrib & 0x0F], 16, char_set); str_to_csv_str(csv_text, utf); fprintf(out, "\"%s\",", csv_text); g_free(utf); /* Private */ fprintf(out, "\"%s\",", (mcont->attrib & dlpRecAttrSecret) ? "1":"0"); address_i=phone_i=IM_i=0; /* The Contact entry values */ for (i=0; icont.IMLabel[IM_i]]); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mcont->cont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "\"%s\",", csv_text); IM_i++; break; case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: str_to_csv_str(csv_text, contact_app_info.phoneLabels[mcont->cont.phoneLabel[phone_i]]); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mcont->cont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "\"%s\",", csv_text); phone_i++; break; case ADDRESS_GUI_ADDR_MENU_TEXT: str_to_csv_str(csv_text, contact_app_info.addrLabels[mcont->cont.addressLabel[address_i]]); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mcont->cont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "\"%s\",", csv_text); address_i++; break; case ADDRESS_GUI_LABEL_TEXT: case ADDRESS_GUI_WEBSITE_TEXT: str_to_csv_str(csv_text, mcont->cont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "\"%s\",", csv_text); break; case ADDRESS_GUI_BIRTHDAY: if (mcont->cont.birthdayFlag) { birthday_str[0]='\0'; strftime(birthday_str, sizeof(birthday_str), "%Y/%02m/%02d", &(mcont->cont.birthday)); fprintf(out, "\"%s\",", birthday_str); if (mcont->cont.reminder) { fprintf(out, "\"%d\",", mcont->cont.advance); } else { fprintf(out, "\"\","); } } else { fprintf(out, "\"\","); /* for null Birthday field */ fprintf(out, "\"\","); /* for null Birthday Reminder field */ } break; } } fprintf(out, "\"%d\"\n", mcont->cont.showPhone); break; case EXPORT_TYPE_BFOLDERS: /* fprintf(out, "%s", "Name, Email, Phone (mobile), Company, Title, Website, Phone (work)," "Phone 2(work), Fax (work), Address (work), Phone (home), Address (home), " "\"Custom Label 1\", \"Custom Value 1\", \"Custom Label 2\", \"Custom Value 2\"," "\"Custom Label 3\",\"Custom Value 3\",\"Custom Label 4\",\"Custom Value 4\"," "\"Custom Label 5\",\"Custom Value 5\",Note,Folder"); */ address_i=phone_i=IM_i=0; for (i=0; icont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "\"%s, ", csv_text); } } for (i=0; icont.entry[schema[i].record_field] ? mcont->cont.entry[schema[i].record_field] : ""); fprintf(out, "%s\",", csv_text); } } /* E-Mail */ /* for (i=0; iphoneLabel[phone_i]], _("E-mail"))) { gtk_object_set_data(GTK_OBJECT(dial_button[phone_i]), "mail", GINT_TO_POINTER(1)); gtk_button_set_label(GTK_BUTTON(dial_button[phone_i]), _("Mail")); } fprintf(out, "%s\",", csv_text); } */ fprintf(out, "%s", "\"\", \"\", \"\", \"\", \"\"," "\"\", \"\", \"\", \"\", \"\", " "\"Custom Label 1\", \"Custom Value 1\", \"Custom Label 2\", \"Custom Value 2\"," "\"Custom Label 3\",\"Custom Value 3\",\"Custom Label 4\",\"Custom Value 4\"," "\"Custom Label 5\",\"Custom Value 5\",\"Note\",\"Contacts\""); fprintf(out, "\n"); break; case EXPORT_TYPE_VCARD: case EXPORT_TYPE_VCARD_GMAIL: /* RFC 2426: vCard MIME Directory Profile */ fprintf(out, "BEGIN:VCARD"CRLF); fprintf(out, "VERSION:3.0"CRLF); fprintf(out, "PRODID:%s"CRLF, FPI_STRING); if (mcont->attrib & dlpRecAttrSecret) { fprintf(out, "CLASS:PRIVATE"CRLF); } fprintf(out, "UID:palm-addressbook-%08x-%08lx-%s@%s"CRLF, mcont->unique_id, userid, username, hostname); utf = charset_p2newj(contact_app_info.category.name[mcont->attrib & 0x0F], 16, char_set); str_to_vcard_str(csv_text, sizeof(csv_text), utf); fprintf(out, "CATEGORIES:%s"CRLF, csv_text); g_free(utf); if (mcont->cont.entry[contLastname] || mcont->cont.entry[contFirstname]) { char *last = mcont->cont.entry[contLastname]; char *first = mcont->cont.entry[contFirstname]; fprintf(out, "FN:"); if (first) { str_to_vcard_str(csv_text, sizeof(csv_text), first); fprintf(out, "%s", csv_text); } if (first && last) { fprintf(out, " "); } if (last) { str_to_vcard_str(csv_text, sizeof(csv_text), last); fprintf(out, "%s", csv_text); } fprintf(out, CRLF); fprintf(out, "N:"); if (last) { str_to_vcard_str(csv_text, sizeof(csv_text), last); fprintf(out, "%s", csv_text); } fprintf(out, ";"); /* split up first into first + middle and do first;middle,middle*/ if (first) { str_to_vcard_str(csv_text, sizeof(csv_text), first); fprintf(out, "%s", csv_text); } fprintf(out, CRLF); } else if (mcont->cont.entry[contCompany]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contCompany]); fprintf(out, "FN:%s"CRLF"N:%s"CRLF, csv_text, csv_text); } else { fprintf(out, "FN:-Unknown-"CRLF"N:known-;-Un"CRLF); } if (mcont->cont.entry[contTitle]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contTitle]); fprintf(out, "TITLE:%s"CRLF, csv_text); } if (mcont->cont.entry[contCompany]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contCompany]); fprintf(out, "ORG:%s"CRLF, csv_text); } for (n = contPhone1; n < contPhone7 + 1; n++) { if (mcont->cont.entry[n]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[n]); /* E-mail should be the Palm dropdown menu item for email */ if (!strcasecmp(contact_app_info.phoneLabels[mcont->cont.phoneLabel[n-contPhone1]], _("E-mail"))) { fprintf(out, "EMAIL:%s"CRLF, csv_text); } else { fprintf(out, "TEL;TYPE=%s", vCardMapType(mcont->cont.phoneLabel[n - contPhone1])); if (mcont->cont.showPhone == n - contPhone1) { fprintf(out, ",pref"); } fprintf(out, ":%s"CRLF, csv_text); } } } for (i=0; icont.entry[address_i] || mcont->cont.entry[city_i] || mcont->cont.entry[state_i] || mcont->cont.entry[zip_i] || mcont->cont.entry[country_i]) { /* Should we rely on the label, or the label index, for the addr * type? The label depends on the translated text. I'll go * with index for now. The text is here: contact_app_info.addrLabels[mcont->cont.addressLabel[i]] */ switch (mcont->cont.addressLabel[i]) { case 0: fprintf(out, "ADR;TYPE=WORK:;;"); break; case 1: fprintf(out, "ADR;TYPE=HOME:;;"); break; default: fprintf(out, "ADR:;;"); } for (n = address_i; n < country_i + 1; n++) { if (mcont->cont.entry[n]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[n]); fprintf(out, "%s", csv_text); } if (n < country_i) { fprintf(out, ";"); } } fprintf(out, CRLF); } } for (i = 0; i < NUM_IMS; i++) { int im_i = 0; switch (i) { case 0: im_i = contIM1; break; case 1: im_i = contIM2; break; } if (mcont->cont.entry[im_i]) { int i_label = mcont->cont.IMLabel[i]; const gchar *label = contact_app_info.IMLabels[i_label]; gchar *vlabel; if (strcmp(label, "AOL ICQ") == 0) label = "ICQ"; vlabel = g_strcanon(g_ascii_strup(label, -1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ-", '-'); fprintf(out, "X-%s:", vlabel); g_free(vlabel); str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[im_i]); fprintf(out, "%s"CRLF, csv_text); } } if (mcont->cont.entry[contWebsite]) { str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contWebsite]); fprintf(out, "URL:%s"CRLF, csv_text); } if (mcont->cont.birthdayFlag) { char birthday_str[255]; strftime(birthday_str, sizeof(birthday_str), "%F", &mcont->cont.birthday); str_to_vcard_str(csv_text, sizeof(csv_text), birthday_str); fprintf(out, "BDAY:%s"CRLF, birthday_str); } if (type == EXPORT_TYPE_VCARD_GMAIL) { /* Gmail contacts don't have fields for the custom fields, * rather than lose them we can stick them all in a note field */ int printed_note = 0; for (n=contCustom1; n<=contCustom9; n++) { if (mcont->cont.entry[n]) { if (!printed_note) { printed_note=1; fprintf(out, "NOTE:"); } else { fprintf(out, " "); } str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[n]); fprintf(out, "%s:%s\\n"CRLF, contact_app_info.customLabels[n-contCustom1], csv_text); } } if (mcont->cont.entry[contNote]) { if (!printed_note) { fprintf(out, "NOTE:"); } else { fprintf(out, " note:"); } str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contNote]); fprintf(out, "%s\\n"CRLF, csv_text); } } else { /* Not a Gmail optimized export */ if (mcont->cont.entry[contCustom1] || mcont->cont.entry[contCustom2] || mcont->cont.entry[contCustom3] || mcont->cont.entry[contCustom4] || mcont->cont.entry[contCustom5] || mcont->cont.entry[contCustom6] || mcont->cont.entry[contCustom7] || mcont->cont.entry[contCustom8] || mcont->cont.entry[contCustom9]) { for (n=contCustom1; n<=contCustom9; n++) { if (mcont->cont.entry[n]) { const gchar *label = contact_app_info.customLabels[n-contCustom1]; gchar *vlabel; vlabel = g_strcanon(g_ascii_strup(label, -1), "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-", '-'); fprintf(out, "X-%s:", vlabel); g_free(vlabel); str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[n]); fprintf(out, "%s"CRLF, csv_text); } } } if (mcont->cont.entry[contNote]) { fprintf(out, "NOTE:"); str_to_vcard_str(csv_text, sizeof(csv_text), mcont->cont.entry[contNote]); fprintf(out, "%s\\n"CRLF, csv_text); } } fprintf(out, "END:VCARD"CRLF); break; case EXPORT_TYPE_LDIF: /* RFC 2256 - organizationalPerson */ /* RFC 2798 - inetOrgPerson */ /* RFC 2849 - LDIF file format */ if (record_num == 0) { fprintf(out, "version: 1\n"); } { char *cn; char *email = NULL; char *last = mcont->cont.entry[contLastname]; char *first = mcont->cont.entry[contFirstname]; for (n = contPhone1; n <= contPhone7; n++) { if (mcont->cont.entry[n] && mcont->cont.phoneLabel[n - contPhone1] == 4) { email = mcont->cont.entry[n]; break; } } if (first || last) { cn = csv_text; snprintf(csv_text, sizeof(csv_text), "%s%s%s", first ? first : "", first && last ? " " : "", last ? last : ""); if (!last) { last = first; first = NULL; } } else if (mcont->cont.entry[contCompany]) { last = mcont->cont.entry[contCompany]; cn = last; } else { last = "Unknown"; cn = last; } /* maybe add dc=%s for each part of the email address? */ /* Mozilla just does mail=%s */ ldif_out(out, "dn", "cn=%s%s%s", cn, email ? ",mail=" : "", email ? email : ""); fprintf(out, "dnQualifier: %s\n", PN); fprintf(out, "objectClass: top\nobjectClass: person\n"); fprintf(out, "objectClass: organizationalPerson\n"); fprintf(out, "objectClass: inetOrgPerson\n"); ldif_out(out, "cn", "%s", cn); ldif_out(out, "sn", "%s", last); if (first) ldif_out(out, "givenName", "%s", first); if (mcont->cont.entry[contCompany]) ldif_out(out, "o", "%s", mcont->cont.entry[contCompany]); for (n = contPhone1; n <= contPhone7; n++) { if (mcont->cont.entry[n]) { ldif_out(out, ldifMapType(mcont->cont.phoneLabel[n - contPhone1]), "%s", mcont->cont.entry[n]); } } if (mcont->cont.entry[contAddress1]) ldif_out(out, "postalAddress", "%s", mcont->cont.entry[contAddress1]); if (mcont->cont.entry[contCity1]) ldif_out(out, "l", "%s", mcont->cont.entry[contCity1]); if (mcont->cont.entry[contState1]) ldif_out(out, "st", "%s", mcont->cont.entry[contState1]); if (mcont->cont.entry[contZip1]) ldif_out(out, "postalCode", "%s", mcont->cont.entry[contZip1]); if (mcont->cont.entry[contCountry1]) ldif_out(out, "c", "%s", mcont->cont.entry[contCountry1]); if (mcont->cont.entry[contAddress2]) ldif_out(out, "postalAddress", "%s", mcont->cont.entry[contAddress2]); if (mcont->cont.entry[contCity2]) ldif_out(out, "l", "%s", mcont->cont.entry[contCity2]); if (mcont->cont.entry[contState2]) ldif_out(out, "st", "%s", mcont->cont.entry[contState2]); if (mcont->cont.entry[contZip2]) ldif_out(out, "postalCode", "%s", mcont->cont.entry[contZip2]); if (mcont->cont.entry[contCountry2]) ldif_out(out, "c", "%s", mcont->cont.entry[contCountry2]); if (mcont->cont.entry[contAddress3]) ldif_out(out, "postalAddress", "%s", mcont->cont.entry[contAddress3]); if (mcont->cont.entry[contCity3]) ldif_out(out, "l", "%s", mcont->cont.entry[contCity3]); if (mcont->cont.entry[contState3]) ldif_out(out, "st", "%s", mcont->cont.entry[contState3]); if (mcont->cont.entry[contZip3]) ldif_out(out, "postalCode", "%s", mcont->cont.entry[contZip3]); if (mcont->cont.entry[contCountry3]) ldif_out(out, "c", "%s", mcont->cont.entry[contCountry3]); if (mcont->cont.entry[contIM1]) { strncpy(text, contact_app_info.IMLabels[mcont->cont.IMLabel[0]], 100); ldif_out(out, text, "%s", mcont->cont.entry[contIM1]); } if (mcont->cont.entry[contIM2]) { strncpy(text, contact_app_info.IMLabels[mcont->cont.IMLabel[1]], 100); ldif_out(out, text, "%s", mcont->cont.entry[contIM2]); } if (mcont->cont.entry[contWebsite]) ldif_out(out, "website", "%s", mcont->cont.entry[contWebsite]); if (mcont->cont.entry[contTitle]) ldif_out(out, "title", "%s", mcont->cont.entry[contTitle]); if (mcont->cont.entry[contCustom1]) ldif_out(out, "custom1", "%s", mcont->cont.entry[contCustom1]); if (mcont->cont.entry[contCustom2]) ldif_out(out, "custom2", "%s", mcont->cont.entry[contCustom2]); if (mcont->cont.entry[contCustom3]) ldif_out(out, "custom3", "%s", mcont->cont.entry[contCustom3]); if (mcont->cont.entry[contCustom4]) ldif_out(out, "custom4", "%s", mcont->cont.entry[contCustom4]); if (mcont->cont.entry[contCustom5]) ldif_out(out, "custom5", "%s", mcont->cont.entry[contCustom5]); if (mcont->cont.entry[contCustom6]) ldif_out(out, "custom6", "%s", mcont->cont.entry[contCustom6]); if (mcont->cont.entry[contCustom7]) ldif_out(out, "custom7", "%s", mcont->cont.entry[contCustom7]); if (mcont->cont.entry[contCustom8]) ldif_out(out, "custom8", "%s", mcont->cont.entry[contCustom8]); if (mcont->cont.entry[contCustom9]) ldif_out(out, "custom9", "%s", mcont->cont.entry[contCustom9]); if (mcont->cont.entry[contNote]) ldif_out(out, "description", "%s", mcont->cont.entry[contNote]); fprintf(out, "\n"); break; } default: jp_logf(JP_LOG_WARN, _("Unknown export type\n")); } } if (out) { fclose(out); } } static void cb_addr_update_clist(GtkWidget *clist, int category) { address_update_clist(clist, NULL, &export_contact_list, category, FALSE); } static void cb_addr_export_done(GtkWidget *widget, const char *filename) { free_ContactList(&export_contact_list); set_pref(PREF_ADDRESS_EXPORT_FILENAME, 0, filename, TRUE); } int address_export(GtkWidget *window) { int w, h, x, y; char *type_text[]={N_("Text"), N_("CSV"), N_("vCard"), N_("vCard (Optimized for Gmail/Android Import)"), N_("ldif"), N_("B-Folders CSV"), NULL}; int type_int[]={EXPORT_TYPE_TEXT, EXPORT_TYPE_CSV, EXPORT_TYPE_VCARD, EXPORT_TYPE_VCARD_GMAIL, EXPORT_TYPE_LDIF, EXPORT_TYPE_BFOLDERS}; gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = gtk_paned_get_position(GTK_PANED(pane)); x+=40; export_gui(window, w, h, x, y, 3, sort_l, PREF_ADDRESS_EXPORT_FILENAME, type_text, type_int, cb_addr_update_clist, cb_addr_export_done, cb_addr_export_ok ); return EXIT_SUCCESS; } /* End Export Code */ static void cb_resize_column (GtkCList *clist, gint column, gint width, gpointer user_data) { if (column != ADDRESS_NAME_COLUMN) return; set_pref(PREF_ADDR_NAME_COL_SZ, width, NULL, TRUE); } /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; icont), &(maddr.addr)); maddr.rt = mcont->rt; maddr.unique_id = mcont->unique_id; maddr.attrib = mcont->attrib; /* convert to Palm character set */ get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { for (i=0; i0) { clist_row_selected--; } } } free_Address(&(maddr.addr)); if (flag == DELETE_FLAG) { address_clist_redraw(); } } static void cb_delete_contact(GtkWidget *widget, gpointer data) { MyContact *mcont; int flag; int show_priv; long char_set; int i; mcont = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcont < (MyContact *)CLIST_MIN_DATA) { return; } /* convert to Palm character set */ get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { for (i=0; icont.entry[i]) { charset_j2p(mcont->cont.entry[i], strlen(mcont->cont.entry[i])+1, char_set); } } } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mcont->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ flag = GPOINTER_TO_INT(data); if ((flag==MODIFY_FLAG) || (flag==DELETE_FLAG)) { delete_pc_record(CONTACTS, mcont, flag); if (flag==DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected>0) { clist_row_selected--; } } } if (flag == DELETE_FLAG) { address_clist_redraw(); } } static void cb_delete_address_or_contact(GtkWidget *widget, gpointer data) { if (address_version==0) { cb_delete_address(widget, data); } else { cb_delete_contact(widget, data); } } static void cb_undelete_address(GtkWidget *widget, gpointer data) { MyContact *mcont; int flag; int show_priv; mcont = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcont < (MyContact *)CLIST_MIN_DATA) { return; } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mcont->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ jp_logf(JP_LOG_DEBUG, "mcont->unique_id = %d\n",mcont->unique_id); jp_logf(JP_LOG_DEBUG, "mcont->rt = %d\n",mcont->rt); flag = GPOINTER_TO_INT(data); if (flag==UNDELETE_FLAG) { if (mcont->rt == DELETED_PALM_REC || (mcont->rt == DELETED_PC_REC)) { if (address_version==0) { MyAddress maddr; maddr.unique_id = mcont->unique_id; undelete_pc_record(ADDRESS, &maddr, flag); } else { undelete_pc_record(CONTACTS, mcont, flag); } } /* Possible later addition of undelete for modified records else if (mcont->rt == MODIFIED_PALM_REC) { cb_add_new_record(widget, GINT_TO_POINTER(COPY_FLAG)); } */ } address_clist_redraw(); } static void cb_cancel(GtkWidget *widget, gpointer data) { set_new_button_to(CLEAR_FLAG); address_refresh(); } /* TODO, this needs converted to Contacts */ static void cb_resort(GtkWidget *widget, gpointer data) { MyAddress *maddr; /* Rotate address sort order among 3 possibilities */ addr_sort_order = addr_sort_order << 1; if (!(addr_sort_order & 0x07)) addr_sort_order = SORT_BY_LNAME; set_pref(PREF_ADDR_SORT_ORDER, addr_sort_order, NULL, TRUE); /* Return to this record after resorting */ maddr = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (maddr < (MyAddress *)CLIST_MIN_DATA) { glob_find_id = 0; } else { glob_find_id = maddr->unique_id; } address_clist_redraw(); /* Update labels AFTER redrawing clist to work around GTK bug */ switch (addr_sort_order) { case SORT_BY_LNAME: gtk_clist_set_column_title(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, _("Last Name/Company")); break; case SORT_BY_FNAME: gtk_clist_set_column_title(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, _("First Name/Company")); break; case SORT_BY_COMPANY: gtk_clist_set_column_title(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, _("Company/Last Name")); break; } } static void cb_phone_menu(GtkWidget *item, unsigned int value) { if (!item) return; if ((GTK_CHECK_MENU_ITEM(item))->active) { jp_logf(JP_LOG_DEBUG, "phone_menu = %d\n", (value & 0xFF00) >> 8); jp_logf(JP_LOG_DEBUG, "selection = %d\n", value & 0xFF); address_phone_label_selected[(value & 0xFF00) >> 8] = value & 0xFF; } } static void cb_IM_type_menu(GtkWidget *item, unsigned int value) { if (!item) return; if ((GTK_CHECK_MENU_ITEM(item))->active) { jp_logf(JP_LOG_DEBUG, "IM_type_menu = %d\n", (value & 0xFF00) >> 8); jp_logf(JP_LOG_DEBUG, "selection = %d\n", value & 0xFF); IM_type_selected[(value & 0xFF00) >> 8] = value & 0xFF; } } /* The least significant byte of value is the selection of the menu, * i.e., which item is chosen (Work, Office, Home). * The next to least significant byte is the address type menu * that is being selected (there are 3 addresses and 3 pulldown menus) */ static void cb_address_type_menu(GtkWidget *item, unsigned int value) { int menu, selection; int address_i, i; if (!item) return; if ((GTK_CHECK_MENU_ITEM(item))->active) { menu = (value & 0xFF00) >> 8; selection = value & 0xFF; jp_logf(JP_LOG_DEBUG, "addr_type_menu = %d\n", menu); jp_logf(JP_LOG_DEBUG, "selection = %d\n", selection); address_type_selected[menu] = selection; /* We want to make the notebook page tab label match the type of * address from the menu. So, we'll find the nth address menu * and set whatever page the schema says it resides on */ address_i=0; for (i=0; iactive) { *attrib = sort_l[i].cat_num; break; } } } /* Get private flag */ if (GTK_TOGGLE_BUTTON(private_checkbox)->active) { *attrib |= dlpRecAttrSecret; } } static void cb_add_new_record(GtkWidget *widget, gpointer data) { int i; struct Contact cont; MyContact *mcont; struct Address addr; unsigned char attrib; int address_i, IM_i, phone_i; int flag, type; unsigned int unique_id; int show_priv; GtkTextIter start_iter; GtkTextIter end_iter; memset(&cont, 0, sizeof(cont)); flag=GPOINTER_TO_INT(data); unique_id=0; mcont=NULL; /* Do masking like Palm OS 3.5 */ if ((flag==COPY_FLAG) || (flag==MODIFY_FLAG)) { show_priv = show_privates(GET_PRIVATES); mcont = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcont < (MyContact *)CLIST_MIN_DATA) { return; } if ((show_priv != SHOW_PRIVATES) && (mcont->attrib & dlpRecAttrSecret)) { return; } } /* End Masking */ if ((flag==NEW_FLAG) || (flag==COPY_FLAG) || (flag==MODIFY_FLAG)) { /* These rec_types are both the same for now */ if (flag==MODIFY_FLAG) { mcont = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); unique_id=mcont->unique_id; if (mcont < (MyContact *)CLIST_MIN_DATA) { return; } if ((mcont->rt==DELETED_PALM_REC) || (mcont->rt==DELETED_PC_REC) || (mcont->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("You can't modify a record that is deleted\n")); return; } } cont.showPhone=0; /* Get the menu labels and settings */ address_i = IM_i = phone_i = 0; for (i=0; iactive) { cont.showPhone=phone_i; } cont.phoneLabel[phone_i]=address_phone_label_selected[phone_i]; phone_i++; break; case ADDRESS_GUI_IM_MENU_TEXT: cont.IMLabel[IM_i]=IM_type_selected[IM_i]; IM_i++; break; case ADDRESS_GUI_ADDR_MENU_TEXT: cont.addressLabel[address_i]=address_type_selected[address_i]; address_i++; break; case ADDRESS_GUI_BIRTHDAY: if (GTK_TOGGLE_BUTTON(birthday_checkbox)->active) { cont.birthdayFlag = 1; memcpy(&cont.birthday, &birthday, sizeof(struct tm)); } if (GTK_TOGGLE_BUTTON(reminder_checkbox)->active) { cont.reminder = 1; cont.advance=atoi(gtk_entry_get_text(GTK_ENTRY(reminder_entry))); cont.advanceUnits = 1; /* Days */ } break; case ADDRESS_GUI_LABEL_TEXT: case ADDRESS_GUI_WEBSITE_TEXT: break; } } /* Get the entry texts */ for (i=0; irt==PALM_REC) || (mcont->rt==REPLACEMENT_PALM_REC)) { type = REPLACEMENT_PALM_REC; } else { unique_id = 0; type = NEW_PC_REC; } } else { unique_id=0; type = NEW_PC_REC; } if (address_version==0) { copy_contact_to_address(&cont, &addr); jp_free_Contact(&cont); pc_address_write(&addr, type, attrib, &unique_id); free_Address(&addr); } else { pc_contact_write(&cont, type, attrib, &unique_id); jp_free_Contact(&cont); } /* Don't return to modified record if search gui active */ if (!glob_find_id) { glob_find_id = unique_id; } address_clist_redraw(); } } static void addr_clear_details(void) { int i; int new_cat; int sorted_position; int address_i, IM_i, phone_i; long ivalue; char reminder_str[10]; /* Palm has phone popup menus in one order and the display of phone tabs * in another. This reorders the tabs to produce the more usable order of * the Palm desktop software */ int phone_btn_order[NUM_PHONE_ENTRIES] = { 0, 1, 4, 7, 5, 3, 2 }; /* Need to disconnect signals first */ connect_changed_signals(DISCONNECT_SIGNALS); /* Clear the quickview */ gtk_text_buffer_set_text(GTK_TEXT_BUFFER(addr_all_buffer), "", -1); /* Clear all of the text fields */ for (i=0; irows; i++) { r = gtk_clist_get_text(GTK_CLIST(clist), i, ADDRESS_NAME_COLUMN, &clist_text); if (!r) { break; } if (!strncasecmp(clist_text, entry_text, strlen(entry_text))) { clist_select_row(GTK_CLIST(clist), i, ADDRESS_NAME_COLUMN); gtk_clist_moveto(GTK_CLIST(clist), i, 0, 0.5, 0.0); break; } } } static void cb_edit_cats_contacts(GtkWidget *widget, gpointer data) { struct ContactAppInfo cai; char full_name[FILENAME_MAX]; int num; size_t size; void *buf; struct pi_file *pf; pi_buffer_t *pi_buf; jp_logf(JP_LOG_DEBUG, "cb_edit_cats_contacts\n"); get_home_file_name("ContactsDB-PAdd.pdb", full_name, sizeof(full_name)); buf=NULL; memset(&cai, 0, sizeof(cai)); /* Contacts App Info is 1152 or so */ pi_buf = pi_buffer_new(1500); pf = pi_file_open(full_name); pi_file_get_app_info(pf, &buf, &size); pi_buf = pi_buffer_append(pi_buf, buf, size); num = jp_unpack_ContactAppInfo(&cai, pi_buf); if (num <= 0) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), "ContactsDB-PAdd.pdb"); pi_buffer_free(pi_buf); return; } pi_file_close(pf); edit_cats(widget, "ContactsDB-PAdd", &(cai.category)); size = jp_pack_ContactAppInfo(&cai, pi_buf); pdb_file_write_app_block("ContactsDB-PAdd", pi_buf->data, pi_buf->used); pi_buffer_free(pi_buf); } static void cb_edit_cats_address(GtkWidget *widget, gpointer data) { struct AddressAppInfo aai; char full_name[FILENAME_MAX]; char buffer[65536]; int num; size_t size; void *buf; struct pi_file *pf; jp_logf(JP_LOG_DEBUG, "cb_edit_cats_address\n"); get_home_file_name("AddressDB.pdb", full_name, sizeof(full_name)); buf=NULL; memset(&aai, 0, sizeof(aai)); pf = pi_file_open(full_name); pi_file_get_app_info(pf, &buf, &size); num = unpack_AddressAppInfo(&aai, buf, size); if (num <= 0) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), "AddressDB.pdb"); return; } pi_file_close(pf); edit_cats(widget, "AddressDB", &(aai.category)); size = pack_AddressAppInfo(&aai, (unsigned char*)buffer, sizeof(buffer)); pdb_file_write_app_block("AddressDB", buffer, size); } static void cb_edit_cats(GtkWidget *widget, gpointer data) { if (address_version) { cb_edit_cats_contacts(widget, data); } else { cb_edit_cats_address(widget, data); } cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } static void cb_category(GtkWidget *item, int selection) { int b; if (!item) return; if ((GTK_CHECK_MENU_ITEM(item))->active) { if (address_category == selection) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (address_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index=find_sort_cat_pos(address_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(address_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (selection==NUM_ADDRESS_CAT_ITEMS+1) { cb_edit_cats(item, NULL); } else { address_category = selection; } clist_row_selected = 0; jp_logf(JP_LOG_DEBUG, "address_category = %d\n",address_category); address_update_clist(clist, category_menu1, &glob_contact_list, address_category, TRUE); /* gives the focus to the search field */ gtk_widget_grab_focus(address_quickfind_entry); } } static void clear_mycontact(MyContact *mcont) { mcont->unique_id=0; mcont->attrib=mcont->attrib & 0xF8; jp_free_Contact(&(mcont->cont)); memset(&(mcont->cont), 0, sizeof(struct Contact)); return; } static void set_button_label_to_date(GtkWidget *button, struct tm *date) { char birthday_str[255]; const char *pref_date; birthday_str[0]='\0'; get_pref(PREF_SHORTDATE, NULL, &pref_date); strftime(birthday_str, sizeof(birthday_str), pref_date, date); gtk_button_set_label(GTK_BUTTON(button), birthday_str); } static void cb_button_birthday(GtkWidget *widget, gpointer data) { long fdow; int r; get_pref(PREF_FDOW, &fdow, NULL); r = cal_dialog(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Birthday"), fdow, &(birthday.tm_mon), &(birthday.tm_mday), &(birthday.tm_year)); if (r==CAL_DONE) { set_button_label_to_date(birthday_button, &birthday); } } static void cb_check_button_birthday(GtkWidget *widget, gpointer data) { time_t ltime; struct tm *now; if (GTK_TOGGLE_BUTTON(widget)->active) { gtk_widget_show(birthday_box); set_button_label_to_date(birthday_button, &birthday); } else { gtk_widget_hide(birthday_box); gtk_widget_hide(reminder_box); time(<ime); now = localtime(<ime); memcpy(&birthday, now, sizeof(struct tm)); } } static void cb_check_button_reminder(GtkWidget *widget, gpointer data) { if (GTK_TOGGLE_BUTTON(widget)->active) { gtk_widget_show(reminder_box); } else { gtk_widget_hide(reminder_box); } } /* Photo Code */ static GtkWidget *image_from_data(void *buf, size_t size) { GdkPixbufLoader *loader; GError *error; GdkPixbuf *pb; GtkWidget *tmp_image = NULL; error=NULL; loader = gdk_pixbuf_loader_new(); gdk_pixbuf_loader_write(loader, buf, size, &error); pb = gdk_pixbuf_loader_get_pixbuf(loader); tmp_image = g_object_ref(gtk_image_new_from_pixbuf(pb)); if (loader) { gdk_pixbuf_loader_close(loader, &error); g_object_unref(loader); } /* Force down reference count to prevent memory leak */ if (tmp_image) { g_object_unref(tmp_image); } return tmp_image; } typedef void (*sighandler_t)(int); static int change_photo(char *filename) { FILE *in; char command[FILENAME_MAX + 256]; char buf[0xFFFF]; int total_read, count, r; sighandler_t old_sighandler; /* SIGCHLD handler installed by sync process interferes with pclose. * Temporarily restore SIGCHLD to its default value (null) while * processing command through pipe */ old_sighandler = signal(SIGCHLD, SIG_DFL); sprintf(command, "convert -resize %dx%d %s jpg:-", PHOTO_X_SZ, PHOTO_Y_SZ, filename); in = popen(command, "r"); if (!in) { return EXIT_FAILURE; } total_read = 0; while (!feof(in)) { count = fread(buf + total_read, 1, 0xFFFF - total_read, in); total_read+=count; if ((count==0) || (total_read>=0xFFFF)) break; } r = pclose(in); if (r) { dialog_generic_ok(gtk_widget_get_toplevel(notebook), _("External program not found, or other error"), DIALOG_ERROR, _("J-Pilot can not find the external program \"convert\"\nor an error occurred while executing convert.\nYou may need to install package ImageMagick")); jp_logf(JP_LOG_WARN, _("Command executed was \"%s\"\n"), command); jp_logf(JP_LOG_WARN, _("return code was %d\n"), r); return EXIT_FAILURE; } if (image) { gtk_widget_destroy(image); image=NULL; } if (contact_picture.data) { free(contact_picture.data); contact_picture.dirty=0; contact_picture.length=0; contact_picture.data=NULL; } contact_picture.data=malloc(total_read); memcpy(contact_picture.data, buf, total_read); contact_picture.length = total_read; contact_picture.dirty = 0; image = image_from_data(contact_picture.data, contact_picture.length); gtk_container_add(GTK_CONTAINER(picture_button), image); gtk_widget_show(image); signal(SIGCHLD, old_sighandler); return EXIT_SUCCESS; } // TODO: make a common filesel function static void cb_photo_browse_cancel(GtkWidget *widget, gpointer data) { gtk_widget_destroy(data); } static void cb_photo_browse_ok(GtkWidget *widget, gpointer data) { const char *sel; char **Pselection; sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data)); set_pref(PREF_CONTACTS_PHOTO_FILENAME, 0, sel, TRUE); Pselection = gtk_object_get_data(GTK_OBJECT(GTK_FILE_SELECTION(data)), "selection"); if (Pselection) { jp_logf(JP_LOG_DEBUG, "setting selection to %s\n", sel); *Pselection = strdup(sel); } gtk_widget_destroy(data); } static gboolean cb_photo_browse_destroy(GtkWidget *widget) { gtk_main_quit(); return FALSE; } static int browse_photo(GtkWidget *main_window) { GtkWidget *filesel; const char *svalue; char dir[MAX_PREF_LEN+2]; int i; char *selection; get_pref(PREF_CONTACTS_PHOTO_FILENAME, NULL, &svalue); g_strlcpy(dir, svalue, sizeof(dir)); i=strlen(dir)-1; if (i<0) i=0; if (dir[i]!='/') { for (i=strlen(dir); i>=0; i--) { if (dir[i]=='/') { dir[i+1]='\0'; break; } } } if (chdir(dir)) { jp_logf(JP_LOG_WARN, _("chdir() failed\n")); } filesel = gtk_file_selection_new(_("Add Photo")); gtk_window_set_modal(GTK_WINDOW(filesel), TRUE); gtk_window_set_transient_for(GTK_WINDOW(filesel), GTK_WINDOW(main_window)); gtk_signal_connect(GTK_OBJECT(filesel), "destroy", GTK_SIGNAL_FUNC(cb_photo_browse_destroy), filesel); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", GTK_SIGNAL_FUNC(cb_photo_browse_ok), filesel); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cb_photo_browse_cancel), filesel); gtk_widget_show(filesel); gtk_object_set_data(GTK_OBJECT(filesel), "selection", &selection); selection = NULL; gtk_main(); if (selection) { jp_logf(JP_LOG_DEBUG, "browse_photo(): selection = %s\n", selection); change_photo(selection); free(selection); return 1; } return 0; } static void cb_photo_menu_select(GtkWidget *item, GtkPositionType selected) { if (selected == 1) { if (0 == browse_photo(gtk_widget_get_toplevel(clist))) /* change photo canceled */ return; } if (selected==2) { if (image) { gtk_widget_destroy(image); image=NULL; } if (contact_picture.data) { free(contact_picture.data); contact_picture.dirty=0; contact_picture.length=0; contact_picture.data=NULL; } } cb_record_changed(NULL, NULL); } static gint cb_photo_menu_popup(GtkWidget *widget, GdkEvent *event) { GtkMenu *menu; GdkEventButton *event_button; g_return_val_if_fail(widget != NULL, FALSE); g_return_val_if_fail(GTK_IS_MENU(widget), FALSE); g_return_val_if_fail(event != NULL, FALSE); if (event->type == GDK_BUTTON_PRESS) { event_button = (GdkEventButton *) event; if (event_button->button == 1) { menu = GTK_MENU (widget); gtk_menu_popup(menu, NULL, NULL, NULL, NULL, event_button->button, event_button->time); return TRUE; } } return FALSE; } /* End Photo code */ static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { /* The rename-able phone entries are indexes 3,4,5,6,7 */ struct Contact *cont; MyContact *mcont; int b; int i, index, sorted_position; unsigned int unique_id = 0; char *clist_text; const char *entry_text; int address_i, IM_i, phone_i; char birthday_str[255]; long ivalue; char reminder_str[10]; GString *s; long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (clist_row_selected == row) { return; } mcont = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mcont!=NULL) { unique_id = mcont->unique_id; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ if (clist_row_selected >=0) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); } else { clist_row_selected = 0; clist_select_row(GTK_CLIST(clist), 0, 0); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { glob_find_id = unique_id; address_find(); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } clist_row_selected=row; mcont = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mcont==NULL) { return; } if (mcont->rt == DELETED_PALM_REC || (mcont->rt == DELETED_PC_REC)) /* Possible later addition of undelete code for modified deleted records || mcont->rt == MODIFIED_PALM_REC */ { set_new_button_to(UNDELETE_FLAG); } else { set_new_button_to(CLEAR_FLAG); } connect_changed_signals(DISCONNECT_SIGNALS); if (mcont->cont.picture && mcont->cont.picture->data) { if (contact_picture.data) { free(contact_picture.data); } /* Set global variables to keep the picture data */ contact_picture.data=malloc(mcont->cont.picture->length); memcpy(contact_picture.data, mcont->cont.picture->data, mcont->cont.picture->length); contact_picture.length = mcont->cont.picture->length; contact_picture.dirty = 0; if (image) { gtk_widget_destroy(image); } image = image_from_data(contact_picture.data, contact_picture.length); gtk_container_add(GTK_CONTAINER(picture_button), image); gtk_widget_show(image); } else { if (image) { gtk_widget_destroy(image); image=NULL; } if (contact_picture.data) { free(contact_picture.data); contact_picture.dirty=0; contact_picture.length=0; contact_picture.data=NULL; } } cont=&(mcont->cont); clist_text = NULL; gtk_clist_get_text(GTK_CLIST(clist), row, ADDRESS_NAME_COLUMN, &clist_text); entry_text = gtk_entry_get_text(GTK_ENTRY(address_quickfind_entry)); if (strncasecmp(clist_text, entry_text, strlen(entry_text))) { gtk_entry_set_text(GTK_ENTRY(address_quickfind_entry), ""); } /* category menu */ index = mcont->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (address_cat_menu_item2[sorted_position]==NULL) { /* Illegal category, Assume that category 0 is Unfiled and valid */ jp_logf(JP_LOG_WARN, _("Category is not legal\n")); index = 0; sorted_position = find_sort_cat_pos(index); } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { if (address_cat_menu_item2[sorted_position]) { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(address_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } /* End category menu */ /* Freeze the "All" text buffer to prevent flicker while updating */ gtk_widget_freeze_child_notify(addr_all); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(addr_all_buffer), "", -1); /* Fill out the "All" text buffer */ s = contact_to_gstring(cont); if (s->len) { gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(addr_all_buffer), _("Category: "), -1); char *utf; utf = charset_p2newj(contact_app_info.category.name[mcont->attrib & 0x0F], 16, char_set); gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(addr_all_buffer), utf, -1); g_free(utf); gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(addr_all_buffer), "\n", -1); gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(addr_all_buffer), s->str, -1); } g_string_free(s, TRUE); address_i=phone_i=IM_i=0; for (i=0; iphoneLabel[phone_i]], _("E-mail"))) { gtk_object_set_data(GTK_OBJECT(dial_button[phone_i]), "mail", GINT_TO_POINTER(1)); gtk_button_set_label(GTK_BUTTON(dial_button[phone_i]), _("Mail")); } else { gtk_object_set_data(GTK_OBJECT(dial_button[phone_i]), "mail", 0); gtk_button_set_label(GTK_BUTTON(dial_button[phone_i]), _("Dial")); } if ((phone_iphoneLabel[phone_i] < NUM_PHONE_LABELS)) { if (GTK_IS_WIDGET(phone_type_menu_item[phone_i][cont->phoneLabel[phone_i]])) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (phone_type_menu_item[phone_i][cont->phoneLabel[phone_i]]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(phone_type_list_menu[phone_i]), cont->phoneLabel[phone_i]); } } phone_i++; goto set_text; case ADDRESS_GUI_IM_MENU_TEXT: if (GTK_IS_WIDGET(IM_type_menu_item[IM_i][cont->IMLabel[IM_i]])) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (IM_type_menu_item[IM_i][cont->IMLabel[IM_i]]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(IM_type_list_menu[IM_i]), cont->IMLabel[IM_i]); } IM_i++; goto set_text; case ADDRESS_GUI_ADDR_MENU_TEXT: if (GTK_IS_WIDGET(address_type_menu_item[address_i][cont->addressLabel[address_i]])) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (address_type_menu_item[address_i][cont->addressLabel[address_i]]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(address_type_list_menu[address_i]), cont->addressLabel[address_i]); /* We want to make the notebook page tab label match the type of * address from the menu. So, we'll find the nth address menu * and set whatever page the schema says it resides on */ if (GTK_IS_LABEL(notebook_label[schema[i].notebook_page])) { gtk_label_set_text(GTK_LABEL(notebook_label[schema[i].notebook_page]), contact_app_info.addrLabels[cont->addressLabel[address_i]]); } } address_i++; goto set_text; case ADDRESS_GUI_WEBSITE_TEXT: set_text: if (cont->entry[schema[i].record_field]) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(addr_text_buffer[schema[i].record_field]), cont->entry[schema[i].record_field], -1); } else { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(addr_text_buffer[schema[i].record_field]), "", -1); } break; case ADDRESS_GUI_BIRTHDAY: get_pref(PREF_TODO_DAYS_TILL_DUE, &ivalue, NULL); reminder_str[0]='\0'; g_snprintf(reminder_str, sizeof(reminder_str), "%ld", ivalue); if (cont->birthdayFlag) { memcpy(&birthday, &cont->birthday, sizeof(struct tm)); set_button_label_to_date(birthday_button, &birthday); /* Birthday checkbox */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(birthday_checkbox), TRUE); if (cont->reminder) { sprintf(birthday_str, "%d", cont->advance); gtk_entry_set_text(GTK_ENTRY(reminder_entry), birthday_str); /* Reminder checkbox */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reminder_checkbox), cont->reminder); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reminder_checkbox), FALSE); gtk_entry_set_text(GTK_ENTRY(reminder_entry), reminder_str); } } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(birthday_checkbox), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reminder_checkbox), FALSE); gtk_entry_set_text(GTK_ENTRY(reminder_entry), reminder_str); } break; } } /* Set phone grouped radio buttons */ if ((cont->showPhone > -1) && (cont->showPhone < NUM_PHONE_ENTRIES)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button[cont->showPhone]), TRUE); } /* Private checkbox */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), mcont->attrib & dlpRecAttrSecret); gtk_widget_thaw_child_notify(addr_all); connect_changed_signals(CONNECT_SIGNALS); } static gboolean cb_key_pressed_left_side(GtkWidget *widget, GdkEventKey *event) { GtkWidget *entry_widget; GtkTextBuffer *text_buffer; GtkTextIter iter; if (event->keyval == GDK_Return) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); if (address_version==0) { switch (gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))) { case 0 : entry_widget = addr_text[contLastname]; break; case 1 : entry_widget = addr_text[contAddress1]; break; case 2 : entry_widget = addr_text[contCustom1]; break; case 3 : entry_widget = addr_text[contNote]; break; default: entry_widget = addr_text[0]; } } else { switch (gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))) { case 0 : entry_widget = addr_text[contLastname]; break; case 1 : entry_widget = addr_text[contAddress1]; break; case 2 : entry_widget = addr_text[contAddress2]; break; case 3 : entry_widget = addr_text[contAddress3]; break; case 4 : entry_widget = addr_text[contCustom1]; break; case 5 : entry_widget = addr_text[contNote]; break; default: entry_widget = addr_text[0]; } } gtk_widget_grab_focus(entry_widget); /* Position cursor at start of text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry_widget)); gtk_text_buffer_get_start_iter(text_buffer, &iter); gtk_text_buffer_place_cursor(text_buffer, &iter); return TRUE; } return FALSE; } static gboolean cb_key_pressed_right_side(GtkWidget *widget, GdkEventKey *event, gpointer data) { if ((event->keyval == GDK_Return) && (event->state & GDK_SHIFT_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Call clist_selection to handle any cleanup such as a modified record */ cb_clist_selection(clist, clist_row_selected, ADDRESS_PHONE_COLUMN, GINT_TO_POINTER(1), NULL); gtk_widget_grab_focus(GTK_WIDGET(clist)); return TRUE; } /* Call external editor for note text */ if (data != NULL && (event->keyval == GDK_e) && (event->state & GDK_CONTROL_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Get current text and place in temporary file */ GtkTextIter start_iter; GtkTextIter end_iter; char *text_out; GObject *note_buffer = addr_text_buffer[schema[GPOINTER_TO_INT(data)].record_field]; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(note_buffer), &start_iter, &end_iter); text_out = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(note_buffer), &start_iter, &end_iter, TRUE); char tmp_fname[] = "jpilot.XXXXXX"; int tmpfd = mkstemp(tmp_fname); if (tmpfd < 0) { jp_logf(JP_LOG_WARN, _("Could not get temporary file name\n")); if (text_out) free(text_out); return TRUE; } FILE *fptr = fdopen(tmpfd, "w"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file for external editor\n")); if (text_out) free(text_out); return TRUE; } fwrite(text_out, strlen(text_out), 1, fptr); fwrite("\n", 1, 1, fptr); fclose(fptr); /* Call external editor */ char command[1024]; const char *ext_editor; get_pref(PREF_EXTERNAL_EDITOR, NULL, &ext_editor); if (!ext_editor) { jp_logf(JP_LOG_INFO, "External Editor command empty\n"); if (text_out) free(text_out); return TRUE; } if ((strlen(ext_editor) + strlen(tmp_fname) + 1) > sizeof(command)) { if (text_out) free(text_out); return TRUE; } g_snprintf(command, sizeof(command), "%s %s", ext_editor, tmp_fname); /* jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("executing command = [%s]\n"), command); */ if (system(command) == -1) { /* Read data back from temporary file into memo */ char text_in[0xFFFF]; size_t bytes_read; fptr = fopen(tmp_fname, "rb"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file from external editor\n")); return TRUE; } bytes_read = fread(text_in, 1, 0xFFFF, fptr); fclose(fptr); unlink(tmp_fname); text_in[--bytes_read] = '\0'; /* Strip final newline */ /* Only update text if it has changed */ if (strcmp(text_out, text_in)) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(note_buffer), text_in, -1); } } if (text_out) free(text_out); return TRUE; } /* End of external editor if */ return FALSE; } static void address_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, ContactList **cont_list, int category, int main) { int num_entries, entries_shown; int show1, show2, show3; gchar *empty_line[] = { "","","" }; GdkPixmap *pixmap_note; GdkBitmap *mask_note; ContactList *temp_cl; char str[ADDRESS_MAX_COLUMN_LEN+2]; char str2[ADDRESS_MAX_COLUMN_LEN+2]; int show_priv; long use_jos, char_set, show_tooltips; char *tmp_p1, *tmp_p2, *tmp_p3; char blank[]=""; char slash[]=" / "; char comma_space[]=", "; char *field1, *field2, *field3; char *delim1, *delim2; char *tmp_delim1, *tmp_delim2; AddressList *addr_list; free_ContactList(cont_list); if (address_version==0) { addr_list = NULL; num_entries = get_addresses2(&addr_list, SORT_ASCENDING, 2, 2, 1, CATEGORY_ALL); copy_addresses_to_contacts(addr_list, cont_list); free_AddressList(&addr_list); } else { /* Need to get all records including private ones for the tooltips calculation */ num_entries = get_contacts2(cont_list, SORT_ASCENDING, 2, 2, 1, CATEGORY_ALL); } /* Start by clearing existing entry if in main window */ if (main) { addr_clear_details(); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(addr_all_buffer), "", -1); } /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); if (main) { gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif /* Collect preferences and pixmaps before loop */ get_pref(PREF_CHAR_SET, &char_set, NULL); get_pref(PREF_USE_JOS, &use_jos, NULL); show_priv = show_privates(GET_PRIVATES); get_pixmaps(clist, PIXMAP_NOTE, &pixmap_note, &mask_note); #ifdef __APPLE__ mask_note = NULL; #endif switch (addr_sort_order) { case SORT_BY_LNAME: default: show1=contLastname; show2=contFirstname; show3=contCompany; delim1 = comma_space; delim2 = slash; break; case SORT_BY_FNAME: show1=contFirstname; show2=contLastname; show3=contCompany; delim1 = comma_space; delim2 = slash; break; case SORT_BY_COMPANY: show1=contCompany; show2=contLastname; show3=contFirstname; delim1 = slash; delim2 = comma_space; break; } entries_shown=0; for (temp_cl = *cont_list; temp_cl; temp_cl=temp_cl->next) { if ( ((temp_cl->mcont.attrib & 0x0F) != category) && category != CATEGORY_ALL) { continue; } /* Do masking like Palm OS 3.5 */ if ((show_priv == MASK_PRIVATES) && (temp_cl->mcont.attrib & dlpRecAttrSecret)) { gtk_clist_append(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, ADDRESS_NAME_COLUMN, "---------------"); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, ADDRESS_PHONE_COLUMN, "---------------"); clear_mycontact(&temp_cl->mcont); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_cl->mcont)); gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); entries_shown++; continue; } /* End Masking */ /* Hide the private records if need be */ if ((show_priv != SHOW_PRIVATES) && (temp_cl->mcont.attrib & dlpRecAttrSecret)) { continue; } if (!use_jos && (char_set == CHAR_SET_JAPANESE || char_set == CHAR_SET_SJIS_UTF)) { str[0]='\0'; if (temp_cl->mcont.cont.entry[show1] || temp_cl->mcont.cont.entry[show2]) { if (temp_cl->mcont.cont.entry[show1] && temp_cl->mcont.cont.entry[show2]) { if ((tmp_p1 = strchr(temp_cl->mcont.cont.entry[show1],'\1'))) *tmp_p1='\0'; if ((tmp_p2 = strchr(temp_cl->mcont.cont.entry[show2],'\1'))) *tmp_p2='\0'; g_snprintf(str, ADDRESS_MAX_CLIST_NAME, "%s, %s", temp_cl->mcont.cont.entry[show1], temp_cl->mcont.cont.entry[show2]); if (tmp_p1) *tmp_p1='\1'; if (tmp_p2) *tmp_p2='\1'; } if (temp_cl->mcont.cont.entry[show1] && ! temp_cl->mcont.cont.entry[show2]) { if ((tmp_p1 = strchr(temp_cl->mcont.cont.entry[show1],'\1'))) *tmp_p1='\0'; if (temp_cl->mcont.cont.entry[show3]) { if ((tmp_p3 = strchr(temp_cl->mcont.cont.entry[show3],'\1'))) *tmp_p3='\0'; g_snprintf(str, ADDRESS_MAX_CLIST_NAME, "%s, %s", temp_cl->mcont.cont.entry[show1], temp_cl->mcont.cont.entry[show3]); if (tmp_p3) *tmp_p3='\1'; } else { multibyte_safe_strncpy(str, temp_cl->mcont.cont.entry[show1], ADDRESS_MAX_CLIST_NAME); } if (tmp_p1) *tmp_p1='\1'; } if (! temp_cl->mcont.cont.entry[show1] && temp_cl->mcont.cont.entry[show2]) { if ((tmp_p2 = strchr(temp_cl->mcont.cont.entry[show2],'\1'))) *tmp_p2='\0'; multibyte_safe_strncpy(str, temp_cl->mcont.cont.entry[show2], ADDRESS_MAX_CLIST_NAME); if (tmp_p2) *tmp_p2='\1'; } } else if (temp_cl->mcont.cont.entry[show3]) { if ((tmp_p3 = strchr(temp_cl->mcont.cont.entry[show3],'\1'))) *tmp_p3='\0'; multibyte_safe_strncpy(str, temp_cl->mcont.cont.entry[show3], ADDRESS_MAX_CLIST_NAME); if (tmp_p3) *tmp_p3='\1'; } else { strcpy(str, _("-Unnamed-")); } gtk_clist_append(GTK_CLIST(clist), empty_line); } else { str[0]='\0'; field1=field2=field3=blank; tmp_delim1=delim1; tmp_delim2=delim2; if (temp_cl->mcont.cont.entry[show1]) field1=temp_cl->mcont.cont.entry[show1]; if (temp_cl->mcont.cont.entry[show2]) field2=temp_cl->mcont.cont.entry[show2]; if (temp_cl->mcont.cont.entry[show3]) field3=temp_cl->mcont.cont.entry[show3]; switch (addr_sort_order) { case SORT_BY_LNAME: default: if ((!field1[0]) || (!field2[0])) tmp_delim1=blank; if (!(field3[0])) tmp_delim2=blank; if ((!field1[0]) && (!field2[0])) tmp_delim2=blank; break; case SORT_BY_FNAME: if ((!field1[0]) || (!field2[0])) tmp_delim1=blank; if (!(field3[0])) tmp_delim2=blank; if ((!field1[0]) && (!field2[0])) tmp_delim2=blank; break; case SORT_BY_COMPANY: if (!(field1[0])) tmp_delim1=blank; if ((!field2[0]) || (!field3[0])) tmp_delim2=blank; if ((!field2[0]) && (!field3[0])) tmp_delim1=blank; break; } g_snprintf(str, ADDRESS_MAX_COLUMN_LEN, "%s%s%s%s%s", field1, tmp_delim1, field2, tmp_delim2, field3); if (strlen(str)<1) strcpy(str, _("-Unnamed-")); str[ADDRESS_MAX_COLUMN_LEN]='\0'; gtk_clist_append(GTK_CLIST(clist), empty_line); } lstrncpy_remove_cr_lfs(str2, str, ADDRESS_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, ADDRESS_NAME_COLUMN, str2); /* Clear string so previous data won't be used inadvertently in next set_text */ str2[0] = '\0'; lstrncpy_remove_cr_lfs(str2, temp_cl->mcont.cont.entry[temp_cl->mcont.cont.showPhone + 4], ADDRESS_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, ADDRESS_PHONE_COLUMN, str2); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_cl->mcont)); /* Highlight row background depending on status */ switch (temp_cl->mcont.rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_NEW_RED, CLIST_NEW_GREEN, CLIST_NEW_BLUE); break; case DELETED_PALM_REC: case DELETED_PC_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_DEL_RED, CLIST_DEL_GREEN, CLIST_DEL_BLUE); break; case MODIFIED_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_MOD_RED, CLIST_MOD_GREEN, CLIST_MOD_BLUE); break; default: if (temp_cl->mcont.attrib & dlpRecAttrSecret) { set_bg_rgb_clist_row(clist, entries_shown, CLIST_PRIVATE_RED, CLIST_PRIVATE_GREEN, CLIST_PRIVATE_BLUE); } else { gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); } } /* Put a note pixmap up */ if (temp_cl->mcont.cont.entry[contNote]) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, ADDRESS_NOTE_COLUMN, pixmap_note, mask_note); } else { gtk_clist_set_text(GTK_CLIST(clist), entries_shown, ADDRESS_NOTE_COLUMN, ""); } entries_shown++; } if (main) { gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } /* If there are items in the list, highlight the selected row */ if ((main) && (entries_shown>0)) { /* First, select any record being searched for */ if (glob_find_id) { address_find(); } /* Second, try the currently selected row */ else if (clist_row_selected < entries_shown) { clist_select_row(GTK_CLIST(clist), clist_row_selected, ADDRESS_PHONE_COLUMN); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } else /* Third, select row 0 if nothing else is possible */ { clist_select_row(GTK_CLIST(clist), 0, ADDRESS_PHONE_COLUMN); } } /* Unfreeze clist after all changes */ gtk_clist_thaw(GTK_CLIST(clist)); if (tooltip_widget) { get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); if (cont_list==NULL) { set_tooltip(show_tooltips, glob_tooltips, category_menu1, _("0 records"), NULL); } else { sprintf(str, _("%d of %d records"), entries_shown, num_entries); set_tooltip(show_tooltips, glob_tooltips, category_menu1, str, NULL); } } /* return focus to clist after any big operation which requires a redraw */ gtk_widget_grab_focus(GTK_WIDGET(clist)); } /* default set is which menu item is to be set on by default */ /* set is which set in the phone_type_menu_item array to use */ static int make_IM_type_menu(int default_set, unsigned int callback_id, int set) { int i; GSList *group; GtkWidget *menu; IM_type_list_menu[set] = gtk_option_menu_new(); menu = gtk_menu_new(); group = NULL; for (i=0; i= NUM_ADDRESS_CAT_ITEMS) { address_category = CATEGORY_ALL; break; } if ((sort_l[new_cat].Pcat) && (sort_l[new_cat].Pcat[0])) { address_category = sort_l[new_cat].cat_num; break; } } clist_row_selected = 0; return EXIT_SUCCESS; } int address_refresh(void) { int index, index2; if (glob_find_id) { address_category = CATEGORY_ALL; } if (address_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index=find_sort_cat_pos(address_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } address_update_clist(clist, category_menu1, &glob_contact_list, address_category, TRUE); if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(address_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } /* gives the focus to the search field */ gtk_widget_grab_focus(address_quickfind_entry); return EXIT_SUCCESS; } static gboolean cb_key_pressed_quickfind(GtkWidget *widget, GdkEventKey *event, gpointer data) { int row_count; int select_row; int add; add=0; if ((event->keyval == GDK_KP_Down) || (event->keyval == GDK_Down)) { add=1; } if ((event->keyval == GDK_KP_Up) || (event->keyval == GDK_Up)) { add=-1; } if (!add) return FALSE; row_count =GTK_CLIST(clist)->rows; if (!row_count) return FALSE; gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); select_row=clist_row_selected+add; if (select_row>row_count-1) { select_row=0; } if (select_row<0) { select_row=row_count-1; } clist_select_row(GTK_CLIST(clist), select_row, ADDRESS_NAME_COLUMN); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), select_row)) { gtk_clist_moveto(GTK_CLIST(clist), select_row, 0, 0.5, 0.0); } return TRUE; } static gboolean cb_key_pressed(GtkWidget *widget, GdkEventKey *event) { GtkTextIter cursor_pos_iter; GtkTextBuffer *text_buffer; int page, next; int i, j, found, break_loop; if ((event->keyval != GDK_Tab) && (event->keyval != GDK_ISO_Left_Tab)) { return FALSE; } if (event->keyval == GDK_Tab) { /* See if they are at the end of the text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); gtk_text_buffer_get_iter_at_mark(text_buffer,&cursor_pos_iter,gtk_text_buffer_get_insert(text_buffer)); if (!(gtk_text_iter_is_end(&cursor_pos_iter))) { return FALSE; } } gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Initialize page and next widget in case search fails */ page = schema[0].notebook_page; next = schema[0].record_field; found = break_loop = 0; for (i=j=0; ikeyval == GDK_ISO_Left_Tab) { j = (j < 0 ? 0 : j); page = schema[j].notebook_page; next = schema[j].record_field; } gtk_notebook_set_page(GTK_NOTEBOOK(notebook), page); gtk_widget_grab_focus(GTK_WIDGET(addr_text[next])); return TRUE; } int address_gui_cleanup(void) { int b; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } g_list_free(changed_list); changed_list=NULL; free_ContactList(&glob_contact_list); free_ContactList(&export_contact_list); connect_changed_signals(DISCONNECT_SIGNALS); set_pref(PREF_ADDRESS_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); set_pref(PREF_LAST_ADDR_CATEGORY, address_category, NULL, TRUE); clist_clear(GTK_CLIST(clist)); if (image) { gtk_widget_destroy(image); image = NULL; } if (contact_picture.data) { free(contact_picture.data); } contact_picture.dirty=0; contact_picture.length=0; contact_picture.data=NULL; return EXIT_SUCCESS; } /* Main function */ int address_gui(GtkWidget *vbox, GtkWidget *hbox) { GtkWidget *scrolled_window; GtkWidget *pixmapwid; GdkPixmap *pixmap; GdkBitmap *mask; GtkWidget *vbox1, *vbox2; GtkWidget *hbox_temp; GtkWidget *vbox_temp; GtkWidget *separator; GtkWidget *label; GtkWidget *button; GtkWidget *table; GtkWidget *notebook_tab; GSList *group; long ivalue, notebook_page; long show_tooltips; char *titles[]={"","",""}; GtkAccelGroup *accel_group; int address_type_i, IM_type_i, page_i, table_y_i; int x, y; int i, j, phone_i, num_pages; long char_set; char *cat_name; /* Note that the contact pages labeled "Address" will change * dynamically if the address type pulldown is selected */ char *contact_page_names[]={ N_("Name"), N_("Address"), N_("Address"), N_("Address"), N_("Other"), N_("Note") }; char *address_page_names[]={ N_("Name"), N_("Address"), N_("Other"), N_("Note") }; char **page_names; get_pref(PREF_ADDRESS_VERSION, &address_version, NULL); if (address_version) { unsigned char *buf; int rec_size; if ((EXIT_SUCCESS != jp_get_app_info("ContactsDB-PAdd", &buf, &rec_size)) || (0 == rec_size)) { jp_logf(JP_LOG_WARN, _("Reverting to Address database\n")); address_version = 0; } else { if (buf) free(buf); } } init(); if (address_version) { page_names = contact_page_names; num_pages=NUM_CONTACT_NOTEBOOK_PAGES; get_contact_app_info(&contact_app_info); } else { page_names = address_page_names; num_pages=NUM_ADDRESS_NOTEBOOK_PAGES; get_address_app_info(&address_app_info); copy_address_ai_to_contact_ai(&address_app_info, &contact_app_info); } /* Initialize categories */ get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=1; icolumn[ADDRESS_NAME_COLUMN].button), "clicked", GTK_SIGNAL_FUNC(cb_resort), NULL); gtk_clist_set_column_title(GTK_CLIST(clist), ADDRESS_PHONE_COLUMN, _("Phone")); /* Put pretty pictures in the clist column headings */ get_pixmaps(vbox, PIXMAP_NOTE, &pixmap, &mask); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_clist_set_column_widget(GTK_CLIST(clist), ADDRESS_NOTE_COLUMN, pixmapwid); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_clist_set_shadow_type(GTK_CLIST(clist), SHADOW); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); gtk_clist_set_column_min_width(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, 60); get_pref(PREF_ADDR_NAME_COL_SZ, &ivalue, NULL); gtk_clist_set_column_width(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, ivalue); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), ADDRESS_NAME_COLUMN, FALSE); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), ADDRESS_NOTE_COLUMN, TRUE); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), ADDRESS_PHONE_COLUMN, FALSE); gtk_clist_set_column_justification(GTK_CLIST(clist), ADDRESS_NOTE_COLUMN, GTK_JUSTIFY_CENTER); gtk_signal_connect(GTK_OBJECT(clist), "resize-column", GTK_SIGNAL_FUNC(cb_resize_column), NULL); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(clist)); hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox1), hbox_temp, FALSE, FALSE, 0); label = gtk_label_new(_("Quick Find: ")); gtk_box_pack_start(GTK_BOX(hbox_temp), label, FALSE, FALSE, 0); address_quickfind_entry = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(address_quickfind_entry), TRUE); gtk_signal_connect(GTK_OBJECT(address_quickfind_entry), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_quickfind), NULL); gtk_signal_connect(GTK_OBJECT(address_quickfind_entry), "changed", GTK_SIGNAL_FUNC(cb_address_quickfind), NULL); gtk_box_pack_start(GTK_BOX(hbox_temp), address_quickfind_entry, TRUE, TRUE, 0); /* Right side of GUI */ hbox_temp = gtk_hbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Cancel button */ CREATE_BUTTON(cancel_record_button, _("Cancel"), CANCEL, _("Cancel the modifications"), GDK_Escape, 0, "ESC") gtk_signal_connect(GTK_OBJECT(cancel_record_button), "clicked", GTK_SIGNAL_FUNC(cb_cancel), NULL); /* Delete Button */ CREATE_BUTTON(delete_record_button, _("Delete"), DELETE, _("Delete the selected record"), GDK_d, GDK_CONTROL_MASK, "Ctrl+D") gtk_signal_connect(GTK_OBJECT(delete_record_button), "clicked", GTK_SIGNAL_FUNC(cb_delete_address_or_contact), GINT_TO_POINTER(DELETE_FLAG)); /* Undelete Button */ CREATE_BUTTON(undelete_record_button, _("Undelete"), UNDELETE, _("Undelete the selected record"), 0, 0, "") gtk_signal_connect(GTK_OBJECT(undelete_record_button), "clicked", GTK_SIGNAL_FUNC(cb_undelete_address), GINT_TO_POINTER(UNDELETE_FLAG)); /* Copy button */ CREATE_BUTTON(copy_record_button, _("Copy"), COPY, _("Copy the selected record"), GDK_c, GDK_CONTROL_MASK|GDK_SHIFT_MASK, "Ctrl+Shift+C") gtk_signal_connect(GTK_OBJECT(copy_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(COPY_FLAG)); /* New button */ CREATE_BUTTON(new_record_button, _("New Record"), NEW, _("Add a new record"), GDK_n, GDK_CONTROL_MASK, "Ctrl+N") gtk_signal_connect(GTK_OBJECT(new_record_button), "clicked", GTK_SIGNAL_FUNC(cb_address_clear), NULL); /* "Add Record" button */ CREATE_BUTTON(add_record_button, _("Add Record"), ADD, _("Add the new record"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(add_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(NEW_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(add_record_button)->child)), "label_high"); #endif /* "Apply Changes" button */ CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Right-side Category menu */ /* Clear GTK option menus before use */ for (i=0; i-1)) { gtk_notebook_set_page(GTK_NOTEBOOK(notebook), notebook_page); } address_refresh(); return EXIT_SUCCESS; } jpilot-1.8.2/install_user.c0000664000175000017500000002232712340261240012616 00000000000000/******************************************************************************* * install_user.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include "i18n.h" #include "utils.h" #include "sync.h" #include "prefs.h" #include "jpilot.h" #include "install_user.h" /****************************** Prototypes ************************************/ struct install_dialog_data { GtkWidget *user_entry; GtkWidget *ID_entry; int button_hit; char user[128]; unsigned long id; }; /****************************** Main Code *************************************/ /* Allocates memory and returns pointer, or NULL */ static char *jp_user_or_whoami(void) { struct passwd *pw_ent; uid_t uid; const char *svalue; long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); get_pref(PREF_USER, NULL, &svalue); if ((svalue) && (svalue[0])) { /* Convert User Name stored in Palm character set */ return charset_p2newj(svalue, -1, char_set); } uid = geteuid(); pw_ent = getpwuid(uid); if ((pw_ent) && (pw_ent->pw_name)) { return strdup(pw_ent->pw_name); } return NULL; } static void cb_install_user_button(GtkWidget *widget, gpointer data) { GtkWidget *w; struct install_dialog_data *Pdata; w = gtk_widget_get_toplevel(widget); Pdata = gtk_object_get_data(GTK_OBJECT(w), "install_dialog_data"); if (Pdata) { Pdata->button_hit = GPOINTER_TO_INT(data); if (Pdata->button_hit == DIALOG_SAID_1) { g_strlcpy(Pdata->user, gtk_entry_get_text(GTK_ENTRY(Pdata->user_entry)), sizeof(Pdata->user)); sscanf(gtk_entry_get_text(GTK_ENTRY(Pdata->ID_entry)), "%lu", &(Pdata->id)); } } gtk_widget_destroy(w); } static gboolean cb_destroy_dialog(GtkWidget *widget) { gtk_main_quit(); return FALSE; } static int dialog_install_user(GtkWindow *main_window, char *user, int user_len, unsigned long *user_id) { GtkWidget *button, *label; GtkWidget *user_entry, *ID_entry; GtkWidget *install_user_dialog; GtkWidget *vbox; GtkWidget *hbox; /* object data */ struct install_dialog_data data; unsigned long id; char s_id[32]; char *whoami; data.button_hit=0; install_user_dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "window_position", GTK_WIN_POS_MOUSE, "title", _("Install User"), NULL); gtk_window_set_modal(GTK_WINDOW(install_user_dialog), TRUE); if (main_window) { gtk_window_set_transient_for(GTK_WINDOW(install_user_dialog), GTK_WINDOW(main_window)); } gtk_signal_connect(GTK_OBJECT(install_user_dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), install_user_dialog); gtk_object_set_data(GTK_OBJECT(install_user_dialog), "install_dialog_data", &data); vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); gtk_container_add(GTK_CONTAINER(install_user_dialog), vbox); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new(_("A PalmOS(c) device needs a user name and a user ID in order to sync properly.")); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new(_("If you want to sync more than 1 PalmOS(c) device each one should have a different ID and preferably a different user name.")); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); srandom(time(NULL)); /* RAND_MAX is 32768 on Solaris machines for some reason. * If someone knows how to fix this, let me know. */ if (RAND_MAX==32768) { id = 1+(2000000000.0*random()/(2147483647+1.0)); } else { id = 1+(2000000000.0*random()/(RAND_MAX+1.0)); } g_snprintf(s_id, 30, "%ld", id); /* User Name entry */ hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); /* Instruction label */ label = gtk_label_new(_("Most people choose their name or nickname for the user name.")); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap(GTK_LABEL(label), FALSE); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); /* User Name */ hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 2); label = gtk_label_new(_("User Name")); user_entry = gtk_entry_new_with_max_length(128); entry_set_multiline_truncate(GTK_ENTRY(user_entry), TRUE); data.user_entry = user_entry; gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbox), user_entry, TRUE, TRUE, 2); /* Instruction label */ hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new(_("The ID should be a random number.")); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); /* User ID */ hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 2); label = gtk_label_new(_("User ID")); ID_entry = gtk_entry_new_with_max_length(32); entry_set_multiline_truncate(GTK_ENTRY(ID_entry), TRUE); data.ID_entry = ID_entry; gtk_entry_set_text(GTK_ENTRY(ID_entry), s_id); whoami = jp_user_or_whoami(); if (whoami) { gtk_entry_set_text(GTK_ENTRY(user_entry), whoami); free(whoami); } gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbox), ID_entry, TRUE, TRUE, 2); /* Cancel/Install buttons */ hbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 2); button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_install_user_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1); button = gtk_button_new_with_label(_("Install User")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_install_user_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1); GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); gtk_widget_grab_default(button); gtk_widget_grab_focus(button); gtk_widget_show_all(install_user_dialog); gtk_main(); g_strlcpy(user, data.user, user_len); *user_id = data.id; return data.button_hit; } int install_user_gui(GtkWidget *main_window) { int r; char user[MAX_PREF_LEN]; unsigned long user_id; const char *svalue; long old_user_id; char *old_user; r = dialog_install_user(GTK_WINDOW(main_window), user, MAX_PREF_LEN, &user_id); if (r == DIALOG_SAID_1) { /* Temporarily set the user and user ID */ get_pref(PREF_USER, NULL, &svalue); get_pref(PREF_USER_ID, &old_user_id, NULL); if (svalue) { old_user = strdup(svalue); } else { old_user = strdup(""); } set_pref(PREF_USER, 0, user, FALSE); set_pref(PREF_USER_ID, user_id, NULL, TRUE); jp_logf(JP_LOG_DEBUG, "user is %s\n", user); jp_logf(JP_LOG_DEBUG, "user id is %ld\n", user_id); r = setup_sync(SYNC_NO_PLUGINS | SYNC_INSTALL_USER); jp_logf(JP_LOG_DEBUG, "old user is %s\n", old_user); jp_logf(JP_LOG_DEBUG, "old user id is %ld\n", old_user_id); set_pref(PREF_USER, 0, old_user, FALSE); set_pref(PREF_USER_ID, old_user_id, NULL, TRUE); free(old_user); return r; } return -1; } jpilot-1.8.2/category.c0000664000175000017500000007713612340261240011737 00000000000000/******************************************************************************* * category.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2009-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" /********************************* Constants **********************************/ #define EDIT_CAT_START 100 #define EDIT_CAT_NEW 101 #define EDIT_CAT_RENAME 102 #define EDIT_CAT_DELETE 103 #define EDIT_CAT_ENTRY_OK 104 #define EDIT_CAT_ENTRY_CANCEL 105 /* #define EDIT_CATS_DEBUG 1 */ /****************************** Prototypes ************************************/ struct dialog_cats_data { int button_hit; int selected; int state; GtkWidget *clist; GtkWidget *button_box; GtkWidget *entry_box; GtkWidget *entry; GtkWidget *label; char db_name[16]; struct CategoryAppInfo cai1; struct CategoryAppInfo cai2; }; /****************************** Main Code *************************************/ static int count_records_in_cat(char *db_name, int cat_index) { GList *records; GList *temp_list; int count, num; buf_rec *br; jp_logf(JP_LOG_DEBUG, "count_records_in_cat\n"); count = 0; num = jp_read_DB_files(db_name, &records); if (-1 == num) return 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) continue; if ((br->rt==DELETED_PALM_REC) || (br->rt==DELETED_PC_REC) || (br->rt==MODIFIED_PALM_REC)) continue; if ((br->attrib & 0x0F) != cat_index) continue; count++; } jp_free_DB_records(&records); jp_logf(JP_LOG_DEBUG, "Leaving count_records_in_cat()\n"); return count; } static int edit_cats_delete_cats_pc3(char *DB_name, int cat) { char local_pc_file[FILENAME_MAX]; FILE *pc_in; PC3RecordHeader header; int num; int rec_len; int count=0; g_snprintf(local_pc_file, sizeof(local_pc_file), "%s.pc3", DB_name); pc_in = jp_open_home_file(local_pc_file, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), local_pc_file); return EXIT_FAILURE; } while (!feof(pc_in)) { num = read_header(pc_in, &header); if (num!=1) { if (ferror(pc_in)) break; if (feof(pc_in)) break; } rec_len = header.rec_len; if (rec_len > 0x10000) { jp_logf(JP_LOG_WARN, _("PC file corrupt?\n")); fclose(pc_in); return EXIT_FAILURE; } if (((header.rt==NEW_PC_REC) || (header.rt==REPLACEMENT_PALM_REC)) && ((header.attrib&0x0F)==cat)) { if (fseek(pc_in, -(header.header_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } header.rt=DELETED_PC_REC; write_header(pc_in, &header); count++; } /* Skip this record now that we are done with it */ if (fseek(pc_in, rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } } fclose(pc_in); return count; } /* Helper routine to change categories. * Function changes category regardless of record type */ static int _edit_cats_change_cats_pc3(char *DB_name, int old_cat, int new_cat, int swap) { char local_pc_file[FILENAME_MAX]; FILE *pc_in; PC3RecordHeader header; int rec_len; int num; int current_cat; int count=0; g_snprintf(local_pc_file, sizeof(local_pc_file), "%s.pc3", DB_name); pc_in = jp_open_home_file(local_pc_file, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), local_pc_file); return EXIT_FAILURE; } while (!feof(pc_in)) { num = read_header(pc_in, &header); if (num!=1) { if (ferror(pc_in)) break; if (feof(pc_in)) break; } rec_len = header.rec_len; if (rec_len > 0x10000) { jp_logf(JP_LOG_WARN, _("PC file corrupt?\n")); fclose(pc_in); return EXIT_FAILURE; } current_cat = header.attrib & 0x0F; if (current_cat==old_cat) { if (fseek(pc_in, -(header.header_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } header.attrib=(header.attrib&0xFFFFFFF0) | new_cat; write_header(pc_in, &header); count++; } if ((swap) && (current_cat==new_cat)) { if (fseek(pc_in, -(header.header_len), SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } header.attrib=(header.attrib&0xFFFFFFF0) | old_cat; write_header(pc_in, &header); count++; } /* Skip the rest of the record now that we are done with it */ if (fseek(pc_in, rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, _("fseek failed - fatal error\n")); fclose(pc_in); return EXIT_FAILURE; } } fclose(pc_in); return count; } /* Exported routine to change categories in PC3 file */ int edit_cats_change_cats_pc3(char *DB_name, int old_cat, int new_cat) { return _edit_cats_change_cats_pc3(DB_name, old_cat, new_cat, FALSE); } /* Exported routine to swap categories in PC3 file */ int edit_cats_swap_cats_pc3(char *DB_name, int old_cat, int new_cat) { return _edit_cats_change_cats_pc3(DB_name, old_cat, new_cat, TRUE); } /* * This routine changes records from old_cat to new_cat. * It does not modify the local pdb file. * It does this by writing a modified record to the pc3 file. */ int edit_cats_change_cats_pdb(char *DB_name, int old_cat, int new_cat) { GList *temp_list; GList *records; buf_rec *br; int num, count; jp_logf(JP_LOG_DEBUG, "edit_cats_change_cats_pdb\n"); count=0; num = jp_read_DB_files(DB_name, &records); if (-1 == num) return 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) continue; if ((br->rt==DELETED_PALM_REC) || (br->rt==MODIFIED_PALM_REC)) continue; if ((br->attrib & 0x0F) == old_cat) { if (new_cat==-1) { /* write a deleted rec */ jp_delete_record(DB_name, br, DELETE_FLAG); count++; } else { /* write a deleted rec */ br->attrib=(br->attrib&0xFFFFFFF0) | (new_cat&0x0F); jp_delete_record(DB_name, br, MODIFY_FLAG); br->rt=REPLACEMENT_PALM_REC; jp_pc_write(DB_name, br); count++; } } } jp_free_DB_records(&records); return count; } /* * This helper routine changes the category index of records in the pdb file. * It will change all old_index records to new_index and with the swap * option will also change new_index records to old_index ones. * Returns the number of records where the category was changed. */ static int _change_cat_pdb(char *DB_name, int old_index, int new_index, int swap) { char local_pdb_file[FILENAME_MAX]; char full_local_pdb_file[FILENAME_MAX]; char full_local_pdb_file2[FILENAME_MAX]; pi_file_t *pf1, *pf2; struct DBInfo infop; void *app_info; void *sort_info; void *record; size_t size; pi_uid_t uid; struct stat statb; struct utimbuf times; int idx; int attr; int cat; int count; jp_logf(JP_LOG_DEBUG, "_change_cat_pdb\n"); g_snprintf(local_pdb_file, sizeof(local_pdb_file), "%s.pdb", DB_name); get_home_file_name(local_pdb_file, full_local_pdb_file, sizeof(full_local_pdb_file)); strcpy(full_local_pdb_file2, full_local_pdb_file); strcat(full_local_pdb_file2, "2"); /* After we are finished, set the create and modify times of new file to the same as the old */ stat(full_local_pdb_file, &statb); times.actime = statb.st_atime; times.modtime = statb.st_mtime; pf1 = pi_file_open(full_local_pdb_file); if (!pf1) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_local_pdb_file); return EXIT_FAILURE; } pi_file_get_info(pf1, &infop); pf2 = pi_file_create(full_local_pdb_file2, &infop); if (!pf2) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_local_pdb_file2); return EXIT_FAILURE; } pi_file_get_app_info(pf1, &app_info, &size); pi_file_set_app_info(pf2, app_info, size); pi_file_get_sort_info(pf1, &sort_info, &size); pi_file_set_sort_info(pf2, sort_info, size); idx = 0; count = 0; while((pi_file_read_record(pf1, idx, &record, &size, &attr, &cat, &uid)) > 0) { if (cat==old_index) { cat=new_index; count++; } else if ((swap) && (cat==new_index)) { cat=old_index; count++; } pi_file_append_record(pf2, record, size, attr, cat, uid); idx++; } pi_file_close(pf1); pi_file_close(pf2); if (rename(full_local_pdb_file2, full_local_pdb_file) < 0) { jp_logf(JP_LOG_WARN, "pdb_file_change_indexes(): %s\n, ", _("rename failed")); } utime(full_local_pdb_file, ×); return EXIT_SUCCESS; } /* Exported routine to change categories in pdb file */ int pdb_file_change_indexes(char *DB_name, int old_cat, int new_cat) { return _change_cat_pdb(DB_name, old_cat, new_cat, FALSE); } /* Exported routine to swap categories in pdb file */ int pdb_file_swap_indexes(char *DB_name, int old_cat, int new_cat) { return _change_cat_pdb(DB_name, old_cat, new_cat, TRUE); } /* * This routine changes deletes records in category cat. * It does not modify a local pdb file. * It does this by writing a modified record to the pc3 file. */ static int edit_cats_delete_cats_pdb(char *DB_name, int cat) { jp_logf(JP_LOG_DEBUG, "edit_cats_delete_cats_pdb\n"); return edit_cats_change_cats_pdb(DB_name, cat, -1); } static void cb_edit_button(GtkWidget *widget, gpointer data) { struct dialog_cats_data *Pdata; int i, r, count; int j; long char_set; int id; int button; int catnum; char currentname[HOSTCAT_NAME_SZ]; /* current category name */ char previousname[HOSTCAT_NAME_SZ]; /* previous category name */ char pilotentry[HOSTCAT_NAME_SZ]; /* entry text, in Pilot character set */ char *button_text[]={N_("OK")}; char *move_text[]={N_("Move"), N_("Delete"), N_("Cancel")}; char *text; const char *entry_text; char temp[256]; get_pref(PREF_CHAR_SET, &char_set, NULL); /* JPA be prepared to make conversions */ button = GPOINTER_TO_INT(data); Pdata = gtk_object_get_data(GTK_OBJECT(gtk_widget_get_toplevel(widget)), "dialog_cats_data"); /* JPA get the selected category number */ catnum = 0; i = 0; while ((i <= Pdata->selected) && (catnum < NUM_CATEGORIES)) { if (Pdata->cai2.name[++catnum][0]) i++; } if (catnum >= NUM_CATEGORIES) catnum = -1; /* not found */ if (Pdata) { switch (button) { case EDIT_CAT_NEW: count=0; for (i=0; iclist), i, 0, &text); if ((r) && (text[0])) { count++; } } if (count>NUM_CATEGORIES-2) { dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Edit Categories"), DIALOG_ERROR, _("The maximum number of categories (16) are already used"), 1, button_text); return; } gtk_label_set_text(GTK_LABEL(Pdata->label), _("Enter New Category")); gtk_entry_set_text(GTK_ENTRY(Pdata->entry), ""); gtk_widget_show(Pdata->entry_box); gtk_widget_hide(Pdata->button_box); gtk_widget_grab_focus(GTK_WIDGET(Pdata->entry)); Pdata->state=EDIT_CAT_NEW; break; case EDIT_CAT_RENAME: if ((catnum<0) || (Pdata->cai2.name[catnum][0]=='\0')) { dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Edit Categories Error"), DIALOG_ERROR, _("You must select a category to rename"), 1, button_text); return; } #ifdef EDIT_CATS_DEBUG if (catnum == 0) { printf("Trying to rename category 0!\n"); } #endif gtk_clist_get_text(GTK_CLIST(Pdata->clist), Pdata->selected, 0, &text); gtk_label_set_text(GTK_LABEL(Pdata->label), _("Enter New Category Name")); gtk_entry_set_text(GTK_ENTRY(Pdata->entry), text); gtk_widget_show(Pdata->entry_box); gtk_widget_hide(Pdata->button_box); gtk_widget_grab_focus(GTK_WIDGET(Pdata->entry)); Pdata->state=EDIT_CAT_RENAME; break; case EDIT_CAT_DELETE: #ifdef EDIT_CATS_DEBUG printf("delete cat\n"); #endif if (catnum<0) { dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Edit Categories Error"), DIALOG_ERROR, _("You must select a category to delete"), 1, button_text); return; } #ifdef EDIT_CATS_DEBUG if (catnum == 0) { printf("Trying to delete category 0!\n"); } #endif /* Check if category is empty */ if (Pdata->cai2.name[catnum][0]=='\0') { return; } /* Check to see if there are records are in this category */ count = count_records_in_cat(Pdata->db_name, catnum); #ifdef EDIT_CATS_DEBUG printf("count=%d\n", count); #endif if (count>0) { g_snprintf(temp, sizeof(temp), _("There are %d records in %s.\n" "Do you want to move them to %s, or delete them?"), count, Pdata->cai1.name[catnum], Pdata->cai1.name[0]); r = dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Edit Categories"), DIALOG_QUESTION, temp, 3, move_text); switch (r) { case DIALOG_SAID_1: #ifdef EDIT_CATS_DEBUG printf("MOVE THEM\n"); #endif r = edit_cats_change_cats_pc3(Pdata->db_name, catnum, 0); #ifdef EDIT_CATS_DEBUG printf("moved %d pc records\n", r); #endif r = edit_cats_change_cats_pdb(Pdata->db_name, catnum, 0); #ifdef EDIT_CATS_DEBUG printf("moved %d pdb->pc records\n", r); #endif break; case DIALOG_SAID_2: #ifdef EDIT_CATS_DEBUG printf("DELETE THEM\n"); #endif r = edit_cats_delete_cats_pc3(Pdata->db_name, catnum); #ifdef EDIT_CATS_DEBUG printf("deleted %d pc records\n", r); #endif r = edit_cats_delete_cats_pdb(Pdata->db_name, catnum); #ifdef EDIT_CATS_DEBUG printf("deleted %d pdb->pc records\n", r); #endif break; case DIALOG_SAID_3: #ifdef EDIT_CATS_DEBUG printf("Delete Canceled\n"); #endif return; } } /* delete the category */ #ifdef EDIT_CATS_DEBUG printf("DELETE category\n"); #endif Pdata->cai2.name[catnum][0]='\0'; Pdata->cai2.ID[catnum]=Pdata->cai1.ID[catnum]; Pdata->cai2.renamed[catnum]=0; /* JPA move category names upward in listbox */ /* we get the old text from listbox, to avoid making */ /* character set conversions */ for (i=Pdata->selected; iclist), i+1, 0, &text); if (r) gtk_clist_set_text(GTK_CLIST(Pdata->clist), i, 0, text); } /* JPA now clear the last category */ gtk_clist_set_text(GTK_CLIST(Pdata->clist), NUM_CATEGORIES-2, 0, ""); break; case EDIT_CAT_ENTRY_OK: if ((Pdata->state!=EDIT_CAT_RENAME) && (Pdata->state!=EDIT_CAT_NEW)) { jp_logf(JP_LOG_WARN, _("invalid state file %s line %d\n"), __FILE__, __LINE__); return; } entry_text = gtk_entry_get_text(GTK_ENTRY(Pdata->entry)); /* Can't make an empty category, could do a dialog telling user */ if ((!entry_text) || (!entry_text[0])) { return; } if ((Pdata->state==EDIT_CAT_RENAME) || (Pdata->state==EDIT_CAT_NEW)) { /* Check for category being used more than once */ /* moved here by JPA for use in both new and rename cases */ /* JPA convert entry to Pilot character set before checking */ /* note : don't know Pilot size until converted */ g_strlcpy(pilotentry, entry_text, HOSTCAT_NAME_SZ); charset_j2p(pilotentry, HOSTCAT_NAME_SZ, char_set); pilotentry[PILOTCAT_NAME_SZ-1] = '\0'; for (i=0; istate != EDIT_CAT_RENAME)) && !strcmp(pilotentry, Pdata->cai2.name[i])) { sprintf(temp, _("The category %s can't be used more than once"), entry_text); dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Edit Categories"), DIALOG_ERROR, temp, 1, button_text); return; } } } if (Pdata->state==EDIT_CAT_RENAME) { #ifdef EDIT_CATS_DEBUG printf("rename cat\n"); #endif i=Pdata->selected; /* JPA assuming gtk makes a copy */ gtk_clist_set_text(GTK_CLIST(Pdata->clist), i, 0, entry_text); /* JPA enter new category name in Palm Pilot character set */ charset_j2p((char *)entry_text, HOSTCAT_NAME_SZ, char_set); g_strlcpy(Pdata->cai2.name[catnum], entry_text, PILOTCAT_NAME_SZ); Pdata->cai2.renamed[catnum]=1; } if (Pdata->state==EDIT_CAT_NEW) { #ifdef EDIT_CATS_DEBUG printf("new cat\n"); #endif /* JPA have already checked category is not being used more than once */ /* Find a new category ID */ id=128; for (i=1; icai2.ID[i]==id) { id++; i=1; } } /* Find an empty slot */ /* When the new button was pressed we already checked for an empty slot */ for (i=1; icai2.name[i][0]=='\0') { #ifdef EDIT_CATS_DEBUG printf("slot %d is empty\n", i); #endif /* JPA get the old text from listbox, to avoid making */ /* character set conversions */ r = gtk_clist_get_text(GTK_CLIST(Pdata->clist), i-1, 0, &text); if (r) g_strlcpy(currentname, text, HOSTCAT_NAME_SZ); strcpy(Pdata->cai2.name[i], pilotentry); Pdata->cai2.ID[i]=id; Pdata->cai2.renamed[i]=1; gtk_clist_set_text(GTK_CLIST(Pdata->clist), i-1, 0, entry_text); /* JPA relabel category labels beyond the change */ j = ++i; while (r && (i < NUM_CATEGORIES)) { while ((j < NUM_CATEGORIES) && (Pdata->cai2.name[j][0] == '\0')) j++; if (j < NUM_CATEGORIES) { strcpy(previousname, currentname); r = gtk_clist_get_text(GTK_CLIST(Pdata->clist), i-1, 0, &text); if (r) g_strlcpy(currentname, text, HOSTCAT_NAME_SZ); gtk_clist_set_text(GTK_CLIST(Pdata->clist), i-1, 0, previousname); j++; } i++; } break; } } } gtk_widget_hide(Pdata->entry_box); gtk_widget_show(Pdata->button_box); Pdata->state=EDIT_CAT_START; break; case EDIT_CAT_ENTRY_CANCEL: gtk_widget_hide(Pdata->entry_box); gtk_widget_show(Pdata->button_box); Pdata->state=EDIT_CAT_START; break; default: jp_logf(JP_LOG_WARN, "cb_edit_button(): %s\n", "unknown button"); } } } static void cb_clist_edit_cats(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) { struct dialog_cats_data *Pdata; Pdata=data; #ifdef EDIT_CATS_DEBUG printf("row=%d\n", row); #endif if (Pdata->state==EDIT_CAT_START) { Pdata->selected=row; } else { #ifdef EDIT_CATS_DEBUG printf("cb_clist_edit_cats not in start state\n"); #endif if (Pdata->selected!=row) { clist_select_row(GTK_CLIST(Pdata->clist), Pdata->selected, 0); } } } #ifdef EDIT_CATS_DEBUG static void cb_edit_cats_debug(GtkWidget *widget, gpointer data) { struct dialog_cats_data *Pdata; int i; Pdata=data; for (i=0; icai1.name[i], Pdata->cai1.ID[i], Pdata->cai1.renamed[i], Pdata->cai2.name[i], Pdata->cai2.ID[i], Pdata->cai2.renamed[i]); } } #endif static void cb_dialog_button(GtkWidget *widget, gpointer data) { struct dialog_cats_data *Pdata; GtkWidget *w; w = gtk_widget_get_toplevel(widget); Pdata = gtk_object_get_data(GTK_OBJECT(w), "dialog_cats_data"); Pdata->button_hit=GPOINTER_TO_INT(data); gtk_widget_destroy(GTK_WIDGET(w)); } static gboolean cb_destroy_dialog(GtkWidget *widget) { gtk_main_quit(); return TRUE; } int edit_cats(GtkWidget *widget, char *db_name, struct CategoryAppInfo *cai) { GtkWidget *button; GtkWidget *hbox, *vbox; GtkWidget *vbox1, *vbox2, *vbox3; GtkWidget *dialog; GtkWidget *clist; GtkWidget *entry; GtkWidget *label; GtkWidget *separator; struct dialog_cats_data Pdata; int i, j; long char_set; char *catname_hchar; /* Category names in host character set */ char *titles[2] = {_("Category")}; gchar *empty_line[] = {""}; jp_logf(JP_LOG_DEBUG, "edit_cats\n"); Pdata.selected=-1; Pdata.state=EDIT_CAT_START; g_strlcpy(Pdata.db_name, db_name, 16); #ifdef EDIT_CATS_DEBUG for (i = 0; i < NUM_CATEGORIES; i++) { if (cai->name[i][0] != '\0') { printf("cat %d [%s] ID %d renamed %d\n", i, cai->name[i], cai->ID[i], cai->renamed[i]); } } #endif /* removed by JPA : do not change category names as they will * be written back to file. * We will however have to make a conversion for host dialog display * * get_pref(PREF_CHAR_SET, &char_set, NULL); * if (char_set != CHAR_SET_LATIN1) { * for (i = 0; i < 16; i++) { * if (cai->name[i][0] != '\0') { * charset_p2j((unsigned char*)cai->name[i], 16, char_set); * } * } * } * */ dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", _("Edit Categories"), NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget))); gtk_signal_connect(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), dialog); vbox3 = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(dialog), vbox3); hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); gtk_container_add(GTK_CONTAINER(vbox3), hbox); vbox1 = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox1, FALSE, FALSE, 1); vbox2 = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 1); clist = gtk_clist_new_with_titles(1, titles); gtk_clist_column_titles_passive(GTK_CLIST(clist)); gtk_clist_set_column_min_width(GTK_CLIST(clist), 0, 100); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_edit_cats), &Pdata); gtk_box_pack_start(GTK_BOX(vbox1), clist, TRUE, TRUE, 1); /* Fill clist with categories except for category 0, Unfiled, * which is not editable */ get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=j=1; iname[j][0] == '\0') || (!cai->ID[j]))) { /* Remove categories which have a null ID * to facilitate recovering from errors, */ /* however we cannot synchronize them to the Palm Pilot */ if (!cai->ID[j]) cai->name[j][0] = '\0'; j++; } if (j < NUM_CATEGORIES) { /* Must do character set conversion from Palm to Host */ catname_hchar = charset_p2newj(cai->name[j], PILOTCAT_NAME_SZ, char_set); gtk_clist_set_text(GTK_CLIST(clist), i-1, 0, catname_hchar); free(catname_hchar); } } Pdata.clist = clist; /* Buttons */ hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 12); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 1); #ifdef ENABLE_STOCK_BUTTONS button = gtk_button_new_from_stock(GTK_STOCK_NEW); #else button = gtk_button_new_with_label(_("New")); #endif gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_NEW)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); button = gtk_button_new_with_label(_("Rename")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_RENAME)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); #ifdef ENABLE_STOCK_BUTTONS button = gtk_button_new_from_stock(GTK_STOCK_DELETE); #else button = gtk_button_new_with_label(_("Delete")); #endif gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_DELETE)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); Pdata.button_box = hbox; /* Edit entry and boxes, etc */ vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), vbox, FALSE, FALSE, 10); separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 0); label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 0); Pdata.label = label; entry = gtk_entry_new_with_max_length(HOSTCAT_NAME_SZ-1); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_ENTRY_OK)); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 12); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 1); button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_ENTRY_CANCEL)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_button), GINT_TO_POINTER(EDIT_CAT_ENTRY_OK)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 0); Pdata.entry_box = vbox; Pdata.entry = entry; /* Button Box */ hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 12); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox3), hbox, FALSE, FALSE, 2); /* Buttons */ button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1); #ifdef EDIT_CATS_DEBUG button = gtk_button_new_with_label("DEBUG"); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_edit_cats_debug), &Pdata); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1); #endif /* Set the default button pressed to CANCEL */ Pdata.button_hit = DIALOG_SAID_2; /* Initialize data structures */ memcpy(&(Pdata.cai1), cai, sizeof(struct CategoryAppInfo)); memcpy(&(Pdata.cai2), cai, sizeof(struct CategoryAppInfo)); gtk_object_set_data(GTK_OBJECT(dialog), "dialog_cats_data", &Pdata); gtk_widget_show_all(dialog); gtk_widget_hide(Pdata.entry_box); gtk_main(); /* OK, back from gtk_main loop */ #ifdef EDIT_CATS_DEBUG if (Pdata.button_hit==DIALOG_SAID_1) { printf("pressed 1\n"); } #endif if (Pdata.button_hit==DIALOG_SAID_2) { #ifdef EDIT_CATS_DEBUG printf("pressed 2\n"); #endif return DIALOG_SAID_2; } #ifdef EDIT_CATS_DEBUG for (i=0; i #include #include #include #include #include #include #include #include "address.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "libplugin.h" #include "password.h" /********************************* Constants **********************************/ #define SORT_JAPANESE 8 #define SORT_JOS 16 /******************************* Global vars **********************************/ static int glob_sort_rule; int addr_sort_order; /****************************** Main Code *************************************/ static int address_compare(const void *v1, const void *v2) { AddressList **al1, **al2; struct Address *a1, *a2; char *str1 = NULL, *str2 = NULL; int last_cmp1, last_cmp2; int sort_idx[4]; int i, j, r; al1=(AddressList **)v1; al2=(AddressList **)v2; a1=&((*al1)->maddr.addr); a2=&((*al2)->maddr.addr); switch (glob_sort_rule & 0x7) { case SORT_BY_FNAME: sort_idx[1] = entryFirstname; sort_idx[2] = entryLastname; sort_idx[3] = entryCompany; break; case SORT_BY_LNAME: default: sort_idx[1] = entryLastname; sort_idx[2] = entryFirstname; sort_idx[3] = entryCompany; break; case SORT_BY_COMPANY: sort_idx[1] = entryCompany; sort_idx[2] = entryLastname; sort_idx[3] = entryFirstname; break; } last_cmp1=last_cmp2=0; if (!(glob_sort_rule & SORT_JAPANESE) || (glob_sort_rule & SORT_JOS)) { /* normal */ while (last_cmp1 < 3 && last_cmp2 < 3) { str1=str2=NULL; /* Find the next non-blank field to use for sorting */ for (i=last_cmp1+1; i<=3; i++) { if (a1->entry[sort_idx[i]]) { if ((str1 = malloc(strlen(a1->entry[sort_idx[i]])+1)) == NULL) { return 0; } strcpy(str1, a1->entry[sort_idx[i]]); /* Convert string to lower case for more accurate comparison */ for (j=strlen(str1)-1; j >= 0; j--) { str1[j] = tolower(str1[j]); } break; } } last_cmp1 = i; if (!str1) return -1; for (i=last_cmp2+1; i<=3; i++) { if (a2->entry[sort_idx[i]]) { if ((str2 = malloc(strlen(a2->entry[sort_idx[i]])+1)) == NULL) { return 0; } strcpy(str2, a2->entry[sort_idx[i]]); for (j=strlen(str2)-1; j >= 0; j--) { str2[j] = tolower(str2[j]); } break; } } last_cmp2 = i; if (!str2) { free(str1); return 1; } r = strcoll(str1, str2); if (str1) free(str1); if (str2) free(str2); if (r != 0) return r; /* Comparisons between unequal fields, such as last name and company * must assume that the other fields are blank. This matches * Palm sort ordering. */ if (last_cmp1 != last_cmp2) { return (last_cmp2 - last_cmp1); } } /* end of while loop to search over 3 fields */ /* Compared all search fields and no difference found */ return 0; } else if ((glob_sort_rule & SORT_JAPANESE) && !(glob_sort_rule & SORT_JOS)){ /* Japanese sorting has not been updated to fix Bug 1814 because no test * platform is available for Western programmers maintaining Jpilot. */ int sort1, sort2, sort3; char *tmp_p1, *tmp_p2, *tmp_p3; sort1 = sort_idx[1]; sort2 = sort_idx[2]; sort3 = sort_idx[3]; if (a1->entry[sort1] || a1->entry[sort2]) { if (a1->entry[sort1] && a1->entry[sort2]) { if (!(tmp_p1 = strchr(a1->entry[sort1],'\1'))) tmp_p1=a1->entry[sort1]+1; if (!(tmp_p2 = strchr(a1->entry[sort2],'\1'))) tmp_p2=a1->entry[sort2]+1; if ((str1 = malloc(strlen(tmp_p1)+strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str1, tmp_p1); strcat(str1, tmp_p2); } if (a1->entry[sort1] && (!a1->entry[sort2])) { if (!(tmp_p1 = strchr(a1->entry[sort1],'\1'))) tmp_p1=a1->entry[sort1]+1; if ((str1 = malloc(strlen(tmp_p1)+1)) == NULL) { return 0; } strcpy(str1, tmp_p1); } if ((!a1->entry[sort1]) && a1->entry[sort2]) { if (!(tmp_p2 = strchr(a1->entry[sort2],'\1'))) tmp_p2=a1->entry[sort2]+1; if ((str1 = malloc(strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str1, tmp_p2); } } else if (a1->entry[sort3]) { if (!(tmp_p3 = strchr(a1->entry[sort3],'\1'))) tmp_p3=a1->entry[sort3]+1; if ((str1 = malloc(strlen(tmp_p3)+1)) == NULL) { return 0; } strcpy(str1, tmp_p3); } else { return 1; } if (a2->entry[sort1] || a2->entry[sort2]) { if (a2->entry[sort1] && a2->entry[sort2]) { if (!(tmp_p1 = strchr(a2->entry[sort1],'\1'))) tmp_p1=a2->entry[sort1]+1; if (!(tmp_p2 = strchr(a2->entry[sort2],'\1'))) tmp_p2=a2->entry[sort2]+1; if ((str2 = malloc(strlen(tmp_p1)+strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str2, tmp_p1); strcat(str2, tmp_p2); } if (a2->entry[sort1] && (!a2->entry[sort2])) { if (!(tmp_p1 = strchr(a2->entry[sort1],'\1'))) tmp_p1=a2->entry[sort1]+1; if ((str2 = malloc(strlen(tmp_p1)+1)) == NULL) { return 0; } strcpy(str2, tmp_p1); } if ((!a2->entry[sort1]) && a2->entry[sort2]) { if (!(tmp_p2 = strchr(a2->entry[sort2],'\1'))) tmp_p2=a2->entry[sort2]+1; if ((str2 = malloc(strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str2, tmp_p2); } } else if (a2->entry[sort3]) { if (!(tmp_p3 = strchr(a2->entry[sort3],'\1'))) tmp_p3=a2->entry[sort3]+1; if ((str2 = malloc(strlen(tmp_p3)+1)) == NULL) { return 0; } strcpy(str2, tmp_p3); } else { free(str1); return -1; } /* lower case the strings for a better compare */ for (i=strlen(str1)-1; i >= 0; i--) { str1[i] = tolower(str1[i]); } for (i=strlen(str2)-1; i >= 0; i--) { str2[i] = tolower(str2[i]); } i = strcoll(str1, str2); if (str1) free(str1); if (str2) free(str2); return i; } /* Should never be reached. Assume records are unsortable if reached */ return 0; } /* sort_order: SORT_ASCENDING | SORT_DESCENDING */ static int address_sort(AddressList **al, int sort_order) { AddressList *temp_al; AddressList **sort_al; int count, i; long use_jos, char_set; /* Count the entries in the list */ for (count=0, temp_al=*al; temp_al; temp_al=temp_al->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } glob_sort_rule = addr_sort_order; get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set == CHAR_SET_JAPANESE || char_set == CHAR_SET_SJIS_UTF) { glob_sort_rule = glob_sort_rule | SORT_JAPANESE; } else { glob_sort_rule = glob_sort_rule & (SORT_JAPANESE-1); } get_pref(PREF_USE_JOS, &use_jos, NULL); if (use_jos) { glob_sort_rule = glob_sort_rule | SORT_JOS; } else { glob_sort_rule = glob_sort_rule & (SORT_JOS-1); } /* Allocate an array to be qsorted */ sort_al = calloc(count, sizeof(AddressList *)); if (!sort_al) { jp_logf(JP_LOG_WARN, "address_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_al=*al; temp_al; temp_al=temp_al->next, i++) { sort_al[i] = temp_al; } qsort(sort_al, count, sizeof(AddressList *), address_compare); /* Put the linked list in the order of the array */ if (sort_order==SORT_ASCENDING) { sort_al[count-1]->next = NULL; for (i=count-1; i>0; i--) { sort_al[i-1]->next=sort_al[i]; } *al = sort_al[0]; } else { /* Descending order */ for (i=count-1; i>0; i--) { sort_al[i]->next=sort_al[i-1]; } sort_al[0]->next = NULL; *al = sort_al[count-1]; } free(sort_al); return EXIT_SUCCESS; } void free_AddressList(AddressList **al) { AddressList *temp_al, *temp_al_next; for (temp_al = *al; temp_al; temp_al=temp_al_next) { free_Address(&(temp_al->maddr.addr)); temp_al_next = temp_al->next; free(temp_al); } *al = NULL; } int get_address_app_info(struct AddressAppInfo *ai) { int num, r; int rec_size; unsigned char *buf; memset(ai, 0, sizeof(*ai)); /* Put at least one entry in there */ strcpy(ai->category.name[0], "Unfiled"); r = jp_get_app_info("AddressDB", &buf, &rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, "AddressDB"); if (buf) { free(buf); } return EXIT_FAILURE; } num = unpack_AddressAppInfo(ai, buf, rec_size); if (buf) { free(buf); } if ((num<0) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), "AddressDB.pdb"); return EXIT_FAILURE; } return EXIT_SUCCESS; } int get_addresses(AddressList **address_list, int sort_order) { return get_addresses2(address_list, sort_order, 1, 1, 1, CATEGORY_ALL); } /* * sort_order: SORT_ASCENDING | SORT_DESCENDING * modified, deleted and private, 0 for no, 1 for yes, 2 for use prefs */ int get_addresses2(AddressList **address_list, int sort_order, int modified, int deleted, int privates, int category) { GList *records; GList *temp_list; int recs_returned, i, num; struct Address addr; AddressList *temp_a_list; long keep_modified, keep_deleted; int keep_priv; long char_set; buf_rec *br; char *buf; pi_buffer_t *RecordBuffer; jp_logf(JP_LOG_DEBUG, "get_addresses2()\n"); if (modified==2) { get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); } else { keep_modified = modified; } if (deleted==2) { get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); } else { keep_deleted = deleted; } if (privates==2) { keep_priv = show_privates(GET_PRIVATES); } else { keep_priv = privates; } get_pref(PREF_CHAR_SET, &char_set, NULL); *address_list=NULL; recs_returned = 0; num = jp_read_DB_files("AddressDB", &records); if (-1 == num) return 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } if ((keep_priv != SHOW_PRIVATES) && (br->attrib & dlpRecAttrSecret)) { continue; } RecordBuffer = pi_buffer_new(br->size); memcpy(RecordBuffer->data, br->buf, br->size); RecordBuffer->used = br->size; if (unpack_Address(&addr, RecordBuffer, address_v1) == -1) { pi_buffer_free(RecordBuffer); continue; } pi_buffer_free(RecordBuffer); if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { free_Address(&addr); continue; } buf = NULL; if (char_set != CHAR_SET_LATIN1) { for (i = 0; i < 19; i++) { if ((addr.entry[i] != NULL) && (addr.entry[i][0] != '\0')) { buf = charset_p2newj(addr.entry[i], -1, char_set); if (buf) { free(addr.entry[i]); addr.entry[i] = buf; } } } } temp_a_list = malloc(sizeof(AddressList)); if (!temp_a_list) { jp_logf(JP_LOG_WARN, "get_addresses2(): %s\n", _("Out of memory")); break; } memcpy(&(temp_a_list->maddr.addr), &addr, sizeof(struct Address)); temp_a_list->app_type = ADDRESS; temp_a_list->maddr.rt = br->rt; temp_a_list->maddr.attrib = br->attrib; temp_a_list->maddr.unique_id = br->unique_id; temp_a_list->next = *address_list; *address_list = temp_a_list; recs_returned++; } jp_free_DB_records(&records); #ifdef JPILOT_DEBUG print_address_list(address_list); #endif address_sort(address_list, sort_order); jp_logf(JP_LOG_DEBUG, "Leaving get_addresses2()\n"); return recs_returned; } int pc_address_write(struct Address *addr, PCRecType rt, unsigned char attrib, unsigned int *unique_id) { pi_buffer_t *RecordBuffer; int i; buf_rec br; long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { for (i = 0; i < 19; i++) { if (addr->entry[i]) charset_j2p(addr->entry[i], strlen(addr->entry[i])+1, char_set); } } RecordBuffer = pi_buffer_new(0); if (pack_Address(addr, RecordBuffer, address_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Address %s\n", _("error")); return EXIT_FAILURE; } br.rt=rt; br.attrib = attrib; br.buf = RecordBuffer->data; br.size = RecordBuffer->used; /* Keep unique ID intact */ if (unique_id) { br.unique_id = *unique_id; } else { br.unique_id = 0; } jp_pc_write("AddressDB", &br); if (unique_id) { *unique_id = br.unique_id; } pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } #ifdef JPILOT_DEBUG static void print_address_list(AddressList **al) { AddressList *temp_al, *prev_al; for (prev_al=NULL, temp_al=*al; temp_al; prev_al=temp_al, temp_al=temp_al->next) { jp_logf(JP_LOG_FILE | JP_LOG_STDOUT, "entry[0]=[%s]\n", temp_al->maddr.addr.entry[0]); } } #endif jpilot-1.8.2/m4/0000775000175000017500000000000012340262141010341 500000000000000jpilot-1.8.2/m4/gtk-2.0.m40000664000175000017500000001655412320101153011611 00000000000000# Configure paths for GTK+ # Owen Taylor 1997-2001 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, dnl pass to pkg-config dnl AC_DEFUN([AM_PATH_GTK_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], , enable_gtktest=yes) pkg_config_args=gtk+-2.0 for module in . $4 do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK+ is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.gtktest AC_TRY_RUN([ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" AC_TRY_LINK([ #include #include ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) rm -f conf.gtktest ]) jpilot-1.8.2/m4/ltsugar.m40000644000175000017500000001042412336026317012213 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) jpilot-1.8.2/m4/gettext.m40000664000175000017500000003773212320101153012214 00000000000000# gettext.m4 serial 59 (gettext-0.16.1) dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for special options needed on MacOS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in MacOS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], gt_cv_func_CFPreferencesCopyAppValue, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFPreferencesCopyAppValue(NULL, NULL)], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in MacOS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) jpilot-1.8.2/m4/ltoptions.m40000644000175000017500000003007312336026317012567 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) jpilot-1.8.2/m4/lt~obsolete.m40000644000175000017500000001375612336026317013117 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) jpilot-1.8.2/m4/po.m40000644000175000017500000004336712320612124011152 00000000000000# po.m4 serial 13 (gettext-0.15) dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) jpilot-1.8.2/m4/ltversion.m40000644000175000017500000000126212336026317012557 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) jpilot-1.8.2/m4/isc-posix.m40000664000175000017500000000170612320101153012436 00000000000000# isc-posix.m4 serial 2 (gettext-0.11.2) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # This file is not needed with autoconf-2.53 and newer. Remove it in 2005. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) jpilot-1.8.2/m4/libtool.m40000644000175000017500000106011112336026317012175 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS jpilot-1.8.2/m4/Makefile.am0000664000175000017500000000014112320101153012302 00000000000000# m4 macros for gettext are no longer distributed with jpilot. EXTRA_DIST = gtk.m4 gtk-2.0.m4 jpilot-1.8.2/m4/lib-ld.m40000664000175000017500000000653112320101153011664 00000000000000# lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) jpilot-1.8.2/m4/gtk.m40000664000175000017500000002013712320101153011304 00000000000000# Configure paths for GTK+ # Owen Taylor 97-11-3 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS dnl AC_DEFUN([AM_PATH_GTK], [dnl dnl Get the cflags and libraries from the gtk-config script dnl AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], gtk_config_prefix="$withval", gtk_config_prefix="") AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], , enable_gtktest=yes) for module in . $4 do case "$module" in gthread) gtk_config_args="$gtk_config_args gthread" ;; esac done if test x$gtk_config_exec_prefix != x ; then gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" if test x${GTK_CONFIG+set} != xset ; then GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config fi fi if test x$gtk_config_prefix != x ; then gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" if test x${GTK_CONFIG+set} != xset ; then GTK_CONFIG=$gtk_config_prefix/bin/gtk-config fi fi AC_PATH_PROG(GTK_CONFIG, gtk-config, no) min_gtk_version=ifelse([$1], ,0.99.7,$1) AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes else GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK is sufficiently new. (Also sanity dnl checks the results of gtk-config to some extent dnl rm -f conf.gtktest AC_TRY_RUN([ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If gtk-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); printf("*** before re-running configure\n"); } #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } #endif /* defined (GTK_MAJOR_VERSION) ... */ else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); printf("*** correct copy of gtk-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$GTK_CONFIG" = "no" ; then echo "*** The gtk-config script installed by GTK could not be found" echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GTK_CONFIG environment variable to the" echo "*** full path to gtk-config." else if test -f conf.gtktest ; then : else echo "*** Could not run GTK test program, checking why..." CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" AC_TRY_LINK([ #include #include ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" echo "*** version of GTK. If it is not finding GTK, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" echo "***" echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" echo "*** came with the system with the command" echo "***" echo "*** rpm --erase --nodeps gtk gtk-devel" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK was incorrectly installed" echo "*** or that you have moved GTK since it was installed. In the latter case, you" echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) rm -f conf.gtktest ]) jpilot-1.8.2/m4/progtest.m40000664000175000017500000000555012320101153012370 00000000000000# progtest.m4 serial 4 (gettext-0.14.2) dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ(2.50) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) jpilot-1.8.2/m4/lib-link.m40000664000175000017500000006424412320101153012227 00000000000000# lib-link.m4 serial 9 (gettext-0.16) dnl Copyright (C) 2001-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ(2.50) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" \ && { test -f "$additional_libdir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then found_dir="$additional_libdir" if test -f "$additional_libdir/lib$name.$shlibext"; then found_so="$additional_libdir/lib$name.$shlibext" else found_so="$additional_libdir/lib$name.dll.a" fi if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" \ && { test -f "$dir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$dir/lib$name.dll.a"; }; }; then found_dir="$dir" if test -f "$dir/lib$name.$shlibext"; then found_so="$dir/lib$name.$shlibext" else found_so="$dir/lib$name.dll.a" fi if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) jpilot-1.8.2/m4/nls.m40000644000175000017500000000226612320612124011321 00000000000000# nls.m4 serial 3 (gettext-0.15) dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) jpilot-1.8.2/m4/lib-prefix.m40000664000175000017500000001503612320101153012562 00000000000000# lib-prefix.m4 serial 5 (gettext-0.15) dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing dnl the basename of the libdir, either "lib" or "lib64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. The current dnl practice is that on a system supporting 32-bit and 64-bit instruction dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit dnl libraries go under $prefix/lib. We determine the compiler's default dnl mode by looking at the compiler's library search path. If at least dnl of its elements ends in /lib64 or points to a directory whose absolute dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the dnl default, namely "lib". acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ]) jpilot-1.8.2/m4/Makefile.in0000664000175000017500000003212112336026321012330 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # m4 macros for gettext are no longer distributed with jpilot. VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = m4 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = gtk.m4 gtk-2.0.m4 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign m4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign m4/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/print.h0000664000175000017500000000543712340261240011256 00000000000000/******************************************************************************* * print.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _PRINT_H__ #define _PRINT_H__ #include "utils.h" #include "address.h" #define DAILY 1 #define WEEKLY 2 #define MONTHLY 3 extern int print_day_week_month; typedef enum { PAPER_Letter, PAPER_Legal, PAPER_Statement, PAPER_Tabloid, PAPER_Ledger, PAPER_Folio, PAPER_Quarto, PAPER_7x9, PAPER_9x11, PAPER_9x12, PAPER_10x13, PAPER_10x14, PAPER_Executive, PAPER_A0, PAPER_A1, PAPER_A2, PAPER_A3, PAPER_A4, PAPER_A5, PAPER_A6, PAPER_A7, PAPER_A8, PAPER_A9, PAPER_A10, PAPER_B0, PAPER_B1, PAPER_B2, PAPER_B3, PAPER_B4, PAPER_B5, PAPER_B6, PAPER_B7, PAPER_B8, PAPER_B9, PAPER_B10, PAPER_ISOB0, PAPER_ISOB1, PAPER_ISOB2, PAPER_ISOB3, PAPER_ISOB4, PAPER_ISOB5, PAPER_ISOB6, PAPER_ISOB7, PAPER_ISOB8, PAPER_ISOB9, PAPER_ISOB10, PAPER_C0, PAPER_C1, PAPER_C2, PAPER_C3, PAPER_C4, PAPER_C5, PAPER_C6, PAPER_C7, PAPER_DL, PAPER_Filo } PaperSize; /* The print options window * The main window should be passed in if possible, or NULL * Returns: * DIALOG_SAID_PRINT * DIALOG_SAID_CANCEL * <0 on error */ /* year_mon_day is a binary flag to choose which radio buttons appear for * datebook printing. * 1 = daily * 2 = weekly * 4 = monthly */ int print_gui(GtkWidget *main_window, int app, int date_button, int mon_week_day); int print_days_appts(struct tm *date); int print_months_appts(struct tm *date_in, PaperSize paper_size); int print_weeks_appts(struct tm *date_in, PaperSize paper_size); int print_contacts(ContactList *contact_list, struct ContactAppInfo *contact_app_info, address_schema_entry *schema, int schema_size); int print_todos(ToDoList *todo_list, char *category_name); int print_memos(MemoList *todo_list); #endif jpilot-1.8.2/alarms.c0000664000175000017500000007467612340261240011407 00000000000000/******************************************************************************* * alarms.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * The PalmOS datebook will alarm on private records even when they are hidden * and they show up on the screen. Right, or wrong, who knows. * I will do the same. * * Throughout the code, event_time is the time of the event * alarm_time is the event_time - advance * remind_time is the time a window is to be popped up (it may be postponed) */ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include "alarms.h" #include "i18n.h" #include "utils.h" #include "calendar.h" #include "log.h" #include "prefs.h" /********************************* Constants **********************************/ /* This is how often to check for alarms in seconds */ /* Every call takes CPU time(not much), so you may want it to be greater */ #define ALARM_INTERVAL 10 /* Constants used in converting to seconds */ #define MIN_IN_SECS 60 #define HR_IN_SECS 3600 #define DAY_IN_SECS 86400 #define PREV_ALARM_MASK 1 #define NEXT_ALARM_MASK 2 /* Uncomment for verbose debugging of the alarm code */ /* #define ALARMS_DEBUG */ /******************************* Global vars **********************************/ /* main jpilot window */ extern GtkWidget *window; static struct jp_alarms *alarm_list=NULL; static struct jp_alarms *Plast_alarm_list=NULL; static struct jp_alarms *next_alarm=NULL; static int glob_skip_all_alarms; static int total_alarm_windows; /****************************** Prototypes ************************************/ typedef enum { ALARM_NONE = 0, ALARM_NEW, ALARM_MISSED, ALARM_POSTPONED } AlarmType; struct jp_alarms { unsigned int unique_id; AlarmType type; time_t event_time; time_t alarm_advance; struct jp_alarms *next; }; struct alarm_dialog_data { unsigned int unique_id; time_t remind_time; GtkWidget *remind_entry; GtkWidget *radio1; GtkWidget *radio2; int button_hit; }; static void alarms_add_to_list(unsigned int unique_id, AlarmType type, time_t alarm_time, time_t alarm_advance); /****************************** Main Code *************************************/ /* Alarm GUI */ /* Start of Dialog window code */ static void cb_dialog_button(GtkWidget *widget, gpointer data) { struct alarm_dialog_data *Pdata; GtkWidget *w; w = gtk_widget_get_toplevel(widget); Pdata = gtk_object_get_data(GTK_OBJECT(w), "alarm"); if (Pdata) { Pdata->button_hit = GPOINTER_TO_INT(data); } gtk_widget_destroy(w); } static gboolean cb_destroy_dialog(GtkWidget *widget) { struct alarm_dialog_data *Pdata; time_t ltime; time_t advance; time_t remind; total_alarm_windows--; #ifdef ALARMS_DEBUG printf("total_alarm_windows=%d\n",total_alarm_windows); #endif Pdata = gtk_object_get_data(GTK_OBJECT(widget), "alarm"); if (!Pdata) { return FALSE; } if (Pdata->button_hit==DIALOG_SAID_2) { remind = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(Pdata->remind_entry)); jp_logf(JP_LOG_DEBUG, "remind = [%d]\n", remind); set_pref(PREF_REMIND_IN, remind, NULL, TRUE); if (GTK_TOGGLE_BUTTON(Pdata->radio1)->active) { set_pref(PREF_REMIND_UNITS, 0, NULL, TRUE); remind *= MIN_IN_SECS; } else { set_pref(PREF_REMIND_UNITS, 1, NULL, TRUE); remind *= HR_IN_SECS; } time(<ime); localtime(<ime); advance = -(ltime + remind - Pdata->remind_time); alarms_add_to_list(Pdata->unique_id, ALARM_POSTPONED, Pdata->remind_time, advance); } free(Pdata); /* Done with cleanup. Let GTK continue with removing widgets */ return FALSE; } static int dialog_alarm(char *title, char *reason, char *time_str, char *desc_str, char *note_str, unsigned int unique_id, time_t remind_time) { GSList *group; GtkWidget *button, *label; GtkWidget *hbox1, *vbox1; GtkWidget *vbox_temp; GtkWidget *alarm_dialog; GtkWidget *remind_entry; GtkWidget *radio1; GtkWidget *radio2; struct alarm_dialog_data *Pdata; long pref_units; long pref_entry; GtkWidget *image; char *markup; /* Prevent alarms from going crazy and using all resources */ if (total_alarm_windows > 20) { return EXIT_FAILURE; } total_alarm_windows++; #ifdef ALARMS_DEBUG printf("total_alarm_windows=%d\n",total_alarm_windows); #endif alarm_dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", title, NULL); gtk_signal_connect(GTK_OBJECT(alarm_dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), alarm_dialog); gtk_window_set_transient_for(GTK_WINDOW(alarm_dialog), GTK_WINDOW(window)); gtk_window_stick(GTK_WINDOW(alarm_dialog)); vbox1 = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(alarm_dialog), vbox1); hbox1 = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 0); image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_box_pack_start(GTK_BOX(hbox1), image, FALSE, FALSE, 12); /* Label */ label = gtk_label_new(""); if (note_str[0] == '\0') { markup = g_markup_printf_escaped("%s\n\n%s\n\n%s", desc_str, reason, time_str); } else { markup = g_markup_printf_escaped("%s\n\n%s\n\n%s\n\n%s", desc_str, reason, time_str, note_str); } gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 6); /* remind delay */ hbox1 = gtk_hbox_new(FALSE, 0); remind_entry = gtk_spin_button_new_with_range(0, 59, 1); gtk_box_pack_start(GTK_BOX(hbox1), remind_entry, FALSE, FALSE, 2); vbox_temp = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox1), vbox_temp, FALSE, TRUE, 4); radio1 = gtk_radio_button_new_with_label(NULL, _("Minutes")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio1)); radio2 = gtk_radio_button_new_with_label(group, _("Hours")); gtk_radio_button_group(GTK_RADIO_BUTTON(radio2)); gtk_box_pack_start(GTK_BOX(vbox_temp), radio1, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox_temp), radio2, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, TRUE, TRUE, 2); get_pref(PREF_REMIND_IN, &pref_entry, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(remind_entry), pref_entry); get_pref(PREF_REMIND_UNITS, &pref_units, NULL); if (pref_units) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio2), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio1), TRUE); } /* Buttons */ gtk_container_set_border_width(GTK_CONTAINER(hbox1), 12); button = gtk_button_new_with_label(_("Remind me")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 4); button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 4); Pdata = malloc(sizeof(struct alarm_dialog_data)); if (Pdata) { Pdata->unique_id = unique_id; Pdata->remind_time = remind_time; /* Set the default button pressed to OK */ Pdata->button_hit = DIALOG_SAID_1; Pdata->remind_entry=remind_entry; Pdata->radio1=radio1; Pdata->radio2=radio2; } gtk_object_set_data(GTK_OBJECT(alarm_dialog), "alarm", Pdata); gtk_widget_show_all(alarm_dialog); return EXIT_SUCCESS; } /* End Alarm GUI */ static time_t tm_copy_with_dst_adj(struct tm *dest, struct tm *src) { memcpy(dest, src, sizeof(struct tm)); dest->tm_isdst=-1; return mktime(dest); } #ifdef ALARMS_DEBUG static const char *print_date(const time_t t1) { struct tm *Pnow; static char str[100]; Pnow = localtime(&t1); strftime(str, sizeof(str), "%B %d, %Y %H:%M:%S", Pnow); return str; } static const char *print_type(AlarmType type) { switch (type) { case ALARM_NONE: return "ALARM_NONE"; case ALARM_NEW: return "ALARM_NEW"; case ALARM_MISSED: return "ALARM_MISSED"; case ALARM_POSTPONED: return "ALARM_POSTPONED"; default: return "? ALARM_UNKNOWN"; } } #endif static void alarms_add_to_list(unsigned int unique_id, AlarmType type, time_t event_time, time_t alarm_advance) { struct jp_alarms *temp_alarm; #ifdef ALARMS_DEBUG printf("alarms_add_to_list()\n"); #endif temp_alarm = malloc(sizeof(struct jp_alarms)); if (!temp_alarm) { jp_logf(JP_LOG_WARN, "alarms_add_to_list: %s\n", _("Out of memory")); return; } temp_alarm->unique_id = unique_id; temp_alarm->type = type; temp_alarm->event_time = event_time; temp_alarm->alarm_advance = alarm_advance; temp_alarm->next = NULL; if (Plast_alarm_list) { Plast_alarm_list->next=temp_alarm; Plast_alarm_list=temp_alarm; } else { alarm_list=Plast_alarm_list=temp_alarm; } Plast_alarm_list=temp_alarm; } static void alarms_remove_from_to_list(unsigned int unique_id) { struct jp_alarms *temp_alarm, *prev_alarm, *next_alarm; #ifdef ALARMS_DEBUG printf("remove from list(%d)\n", unique_id); #endif for(prev_alarm=NULL, temp_alarm=alarm_list; temp_alarm; temp_alarm=next_alarm) { if (temp_alarm->unique_id==unique_id) { /* Tail of list? */ if (temp_alarm->next==NULL) { Plast_alarm_list=prev_alarm; } /* Last of list? */ if (Plast_alarm_list==alarm_list) { Plast_alarm_list=alarm_list=NULL; } if (prev_alarm) { prev_alarm->next=temp_alarm->next; } else { /* Head of list */ alarm_list=temp_alarm->next; } free(temp_alarm); return; } else { prev_alarm=temp_alarm; next_alarm=temp_alarm->next; } } } static void free_alarms_list(int mask) { struct jp_alarms *ta, *ta_next; if (mask&PREV_ALARM_MASK) { for (ta=alarm_list; ta; ta=ta_next) { ta_next=ta->next; free(ta); } Plast_alarm_list=alarm_list=NULL; } if (mask&NEXT_ALARM_MASK) { for (ta=next_alarm; ta; ta=ta_next) { ta_next=ta->next; free(ta); } next_alarm=NULL; } } static void alarms_write_file(void) { FILE *out; char line[256]; int fail, n; time_t ltime; struct tm *now; jp_logf(JP_LOG_DEBUG, "alarms_write_file()\n"); time(<ime); now = localtime(<ime); /* Alarm is triggered within ALARM_INTERVAL/2 seconds of the minute. * Potentially need to round timestamp up to the correct minute. */ if ((59 - now->tm_sec) <= ALARM_INTERVAL/2) { now->tm_min++; mktime(now); } out=jp_open_home_file(EPN".alarms.tmp", "w"); if (!out) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s%s\n"), EPN, ".alarms.tmp"); return; } fail=0; g_snprintf(line, sizeof(line), "%s", "# This file was generated by "EPN", changes will be lost\n"); n = fwrite(line, strlen(line), 1, out); if (n<1) fail=1; g_snprintf(line, sizeof(line), "%s", "# This is the last time that "EPN" was ran\n"); n = fwrite(line, strlen(line), 1, out); if (n<1) fail=1; sprintf(line, "UPTODATE %d %d %d %d %d\n", now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min ); n = fwrite(line, strlen(line), 1, out); if (n<1) fail=1; fclose(out); if (fail) { unlink_file(EPN".alarms.tmp"); } else { rename_file(EPN".alarms.tmp", EPN".alarms"); } } /* * This attempts to make the command safe. * I'm sure I'm missing things. */ static void make_command_safe(char *command) { int i, len; char c; len = strlen(command); for (i=0; i", c)) { command[i]=' '; } } } /* * Process an alarm occurrence * Pop up alarm window. * Do alarm setting (play sound, or whatever). * if user postpones then put in postponed alarm list. */ static int alarms_do_one(struct CalendarEvent *cale, unsigned long unique_id, time_t t_alarm, AlarmType type) { struct tm *Pnow; struct tm begin; struct tm end; char time_str[255]; char desc_str[255]; char note_str[255]; char pref_time[50]; char time1_str[50]; char time2_str[50]; char date_str[50]; char command[1024]; char *reason; long wants_windows; long do_command; const char *pref_date; const char *pref_command; char c1, c2; int i, len; alarms_write_file(); switch (type) { case ALARM_NONE: return EXIT_SUCCESS; case ALARM_NEW: reason=_("Appointment Reminder"); break; case ALARM_MISSED: reason=_("Past Appointment"); break; case ALARM_POSTPONED: reason=_("Postponed Appointment"); break; default: reason=_("Appointment"); } get_pref(PREF_SHORTDATE, NULL, &pref_date); get_pref_time_no_secs(pref_time); Pnow = localtime(&t_alarm); strftime(date_str, sizeof(date_str), pref_date, Pnow); tm_copy_with_dst_adj(&begin, &(cale->begin)); strftime(time1_str, sizeof(time1_str), pref_time, &begin); tm_copy_with_dst_adj(&end, &(cale->end)); strftime(time2_str, sizeof(time2_str), pref_time, &end); if (strcmp(time1_str,time2_str) == 0) g_snprintf(time_str, sizeof(time_str), "%s %s", date_str, time1_str); else g_snprintf(time_str, sizeof(time_str), "%s %s-%s", date_str, time1_str, time2_str); desc_str[0]='\0'; note_str[0]='\0'; if (cale->description) { g_strlcpy(desc_str, cale->description, sizeof(desc_str)); } if (cale->note) { g_strlcpy(note_str, cale->note, sizeof(note_str)); } get_pref(PREF_ALARM_COMMAND, NULL, &pref_command); get_pref(PREF_DO_ALARM_COMMAND, &do_command, NULL); #ifdef ALARMS_DEBUG printf("pref_command = [%s]\n", pref_command); #endif memset(command, 0, sizeof(command)); if (do_command) { command[0]='\0'; for (i=0; inext; diff = temp_alarm->event_time - t - temp_alarm->alarm_advance; if (temp_alarm->type!=ALARM_MISSED) { if (diff >= ALARM_INTERVAL/2) { continue; } } if (alm_list==NULL) { get_days_calendar_events2(&alm_list, NULL, 0, 0, 1, CATEGORY_ALL, NULL); } #ifdef ALARMS_DEBUG printf("unique_id=%d\n", temp_alarm->unique_id); printf("type=%s\n", print_type(temp_alarm->type)); printf("event_time=%s\n", print_date(temp_alarm->event_time)); printf("alarm_advance=%ld\n", temp_alarm->alarm_advance); #endif for (temp_al = alm_list; temp_al; temp_al=temp_al->next) { if (temp_al->mcale.unique_id == temp_alarm->unique_id) { #ifdef ALARMS_DEBUG printf("%s\n", temp_al->mcale.cale.description); #endif alarms_do_one(&(temp_al->mcale.cale), temp_alarm->unique_id, temp_alarm->event_time, ALARM_MISSED); break; } } /* CAUTION, this modifies the list we are parsing and * removes the current node */ if (temp_al) alarms_remove_from_to_list(temp_al->mcale.unique_id); } if (next_alarm) { diff = next_alarm->event_time - t - next_alarm->alarm_advance; if (diff <= ALARM_INTERVAL/2) { if (alm_list==NULL) { get_days_calendar_events2(&alm_list, NULL, 0, 0, 1, CATEGORY_ALL, NULL); } for (temp_alarm=next_alarm; temp_alarm; temp_alarm=ta_next) { for (temp_al = alm_list; temp_al; temp_al=temp_al->next) { if (temp_al->mcale.unique_id == temp_alarm->unique_id) { #ifdef ALARMS_DEBUG printf("** next unique_id=%d\n", temp_alarm->unique_id); printf("** next type=%s\n", print_type(temp_alarm->type)); printf("** next event_time=%s\n", print_date(temp_alarm->event_time)); printf("** next alarm_advance=%ld\n", temp_alarm->alarm_advance); printf("** next %s\n", temp_al->mcale.cale.description); #endif alarms_do_one(&(temp_al->mcale.cale), temp_alarm->unique_id, temp_alarm->event_time, ALARM_NEW); break; } } /* This may not be exactly right */ t_alarm_time = temp_alarm->event_time + 1; #ifdef ALARMS_DEBUG printf("** t_alarm_time-->%s\n", print_date(t_alarm_time)); #endif ta_next=temp_alarm->next; free(temp_alarm); next_alarm = ta_next; } Ptm = localtime(&t_alarm_time); memcpy(©_tm, Ptm, sizeof(struct tm)); alarms_find_next(©_tm, ©_tm, TRUE); } } if (alm_list) { free_CalendarEventList(&alm_list); } return TRUE; } /* * Find the next appointment alarm * if soonest_only then return the next alarm, * else return all alarms that occur between the two dates. */ int alarms_find_next(struct tm *date1_in, struct tm *date2_in, int soonest_only) { CalendarEventList *alm_list; CalendarEventList *temp_al; struct jp_alarms *ta; time_t adv; time_t ltime; time_t t1, t2; time_t t_alarm; time_t t_end; time_t t_prev; time_t t_future; struct tm *tm_temp; struct tm date1, date2; struct tm tm_prev, tm_next; int prev_found, next_found; int add_a_next; jp_logf(JP_LOG_DEBUG, "alarms_find_next()\n"); if (glob_skip_all_alarms) return EXIT_SUCCESS; if (!date1_in) { time(<ime); tm_temp = localtime(<ime); } else { tm_temp=date1_in; } memset(&date1, 0, sizeof(date1)); date1.tm_year=tm_temp->tm_year; date1.tm_mon=tm_temp->tm_mon; date1.tm_mday=tm_temp->tm_mday; date1.tm_hour=tm_temp->tm_hour; date1.tm_min=tm_temp->tm_min; date1.tm_sec=tm_temp->tm_sec; date1.tm_isdst=tm_temp->tm_isdst; if (!date2_in) { time(<ime); tm_temp = localtime(<ime); } else { tm_temp=date2_in; } memset(&date2, 0, sizeof(date2)); date2.tm_year=tm_temp->tm_year; date2.tm_mon=tm_temp->tm_mon; date2.tm_mday=tm_temp->tm_mday; date2.tm_hour=tm_temp->tm_hour; date2.tm_min=tm_temp->tm_min; date2.tm_sec=tm_temp->tm_sec; date2.tm_isdst=tm_temp->tm_isdst; t1=mktime_dst_adj(&date1); t2=mktime_dst_adj(&date2); #ifdef ALARMS_DEBUG char str[100]; struct tm *Pnow; strftime(str, sizeof(str), "%B %d, %Y %H:%M", &date1); printf("date1=%s\n", str); strftime(str, sizeof(str), "%B %d, %Y %H:%M", &date2); printf("date2=%s\n", str); Pnow = localtime(&t1); strftime(str, sizeof(str), "%B %d, %Y %H:%M", Pnow); printf("[Now]=%s\n", str); #endif if (!soonest_only) { free_alarms_list(PREV_ALARM_MASK | NEXT_ALARM_MASK); } else { free_alarms_list(NEXT_ALARM_MASK); } alm_list=NULL; get_days_calendar_events2(&alm_list, NULL, 0, 0, 1, CATEGORY_ALL, NULL); for (temp_al=alm_list; temp_al; temp_al=temp_al->next) { /* No alarm, skip */ if (!temp_al->mcale.cale.alarm) { continue; } #ifdef ALARMS_DEBUG printf("\n[%s]\n", temp_al->mcale.cale.description); #endif /* Check for ordinary non-repeating appt starting before date1 */ if (temp_al->mcale.cale.repeatType == calendarRepeatNone) { t_alarm = mktime_dst_adj(&(temp_al->mcale.cale.begin)); if (t_alarm < t1) { #ifdef ALARMS_DEBUG printf("afn: non repeat before t1, t_alarmmcale.cale.repeatForever)) { t_end = mktime_dst_adj(&(temp_al->mcale.cale.repeatEnd)); /* We need to add 24 hours to the end date to make it inclusive */ t_end += DAY_IN_SECS; if (t_end < t2) { #ifdef ALARMS_DEBUG printf("afn: past end date\n"); #endif continue; } } /* Calculate the alarm advance in seconds */ adv = 0; switch (temp_al->mcale.cale.advanceUnits) { case advMinutes: adv = temp_al->mcale.cale.advance*MIN_IN_SECS; break; case advHours: adv = temp_al->mcale.cale.advance*HR_IN_SECS; break; case advDays: adv = temp_al->mcale.cale.advance*DAY_IN_SECS; break; } #ifdef ALARMS_DEBUG printf("alarm advance %d ", temp_al->mcale.cale.advance); switch (temp_al->mcale.cale.advanceUnits) { case advMinutes: printf("minutes\n"); break; case advHours: printf("hours\n"); break; case advDays: printf("days\n"); break; } printf("adv=%ld\n", adv); #endif prev_found=next_found=0; find_prev_next(&(temp_al->mcale.cale), adv, &date1, &date2, &tm_prev, &tm_next, &prev_found, &next_found); t_prev=mktime_dst_adj(&tm_prev); t_future=mktime_dst_adj(&tm_next); /* Skip the alarms if they are before date1 or after date2 */ if (prev_found) { if (t_prev - adv < t1) { #ifdef ALARMS_DEBUG printf("failed prev is before t1\n"); #endif prev_found=0; } if (t_prev - adv > t2) { #ifdef ALARMS_DEBUG printf("failed prev is after t2\n"); #endif continue; } } if (next_found) { /* Check that we are not past any appointment end date */ if (!(temp_al->mcale.cale.repeatForever)) { t_end = mktime_dst_adj(&(temp_al->mcale.cale.repeatEnd)); /* We need to add 24 hours to the end date to make it inclusive */ t_end += DAY_IN_SECS; if (t_future > t_end) { #ifdef ALARMS_DEBUG printf("failed future is after t_end\n"); #endif next_found=0; } } } #ifdef ALARMS_DEBUG printf("t1= %s\n", print_date(t1)); printf("t2= %s\n", print_date(t2)); printf("t_prev= %s\n", prev_found ? print_date(t_prev):"None"); printf("t_future= %s\n", next_found ? print_date(t_future):"None"); printf("alarm me= %s\n", next_found ? print_date(t_future-adv):"None"); printf("desc=[%s]\n", temp_al->mcale.cale.description); #endif if (!soonest_only) { if (prev_found) { alarms_add_to_list(temp_al->mcale.unique_id, ALARM_MISSED, t_prev, adv); } } if (next_found) { add_a_next=0; if (next_alarm==NULL) { add_a_next=1; } else if (t_future - adv <= (next_alarm->event_time - next_alarm->alarm_advance)) { add_a_next=1; if (t_future - adv < (next_alarm->event_time - next_alarm->alarm_advance)) { #ifdef ALARMS_DEBUG printf("next alarm=%s\n", print_date(next_alarm->event_time - next_alarm->alarm_advance)); printf("freeing next alarms\n"); #endif free_alarms_list(NEXT_ALARM_MASK); } } if (add_a_next) { #ifdef ALARMS_DEBUG printf("found a new next\n"); #endif ta = malloc(sizeof(struct jp_alarms)); if (ta) { ta->next = next_alarm; next_alarm = ta; next_alarm->unique_id = temp_al->mcale.unique_id; next_alarm->type = ALARM_NEW; next_alarm->event_time = t_future; next_alarm->alarm_advance = adv; } } } } free_CalendarEventList(&alm_list); return EXIT_SUCCESS; } /* * At startup check when rc file was written and find all past-due alarms. * Add them to the postponed alarm list with 0 minute reminder. * Find next alarm and put it in list */ int alarms_init(unsigned char skip_past_alarms, unsigned char skip_all_alarms) { FILE *in; time_t ltime; struct tm now, *Pnow; struct tm tm1; char line[256]; int found_uptodate; int year, mon, day, hour, min, n; jp_logf(JP_LOG_DEBUG, "alarms_init()\n"); alarm_list=NULL; Plast_alarm_list=NULL; next_alarm=NULL; total_alarm_windows = 0; glob_skip_all_alarms = skip_all_alarms; if (skip_past_alarms) { alarms_write_file(); } if (skip_all_alarms) { alarms_write_file(); return EXIT_SUCCESS; } found_uptodate=0; in=jp_open_home_file(EPN".alarms", "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s%s\n"), EPN, ".alarms"); return EXIT_FAILURE; } while (!feof(in)) { line[0]='\0'; if (fgets(line, sizeof(line)-1, in) == NULL) { // jp_logf(JP_LOG_WARN, "fgets failed %s %d\n", __FILE__, __LINE__); break; } line[sizeof(line)-1] = '\0'; if (line[0]=='#') continue; if (!strncmp(line, "UPTODATE ", 9)) { n = sscanf(line+9, "%d %d %d %d %d\n", &year, &mon, &day, &hour, &min); if (n==5) { found_uptodate=1; } /* Avoid corner case of retriggering alarms that are set for * exactly the same time as the UPTODATE timestamp */ min = min + 1; jp_logf(JP_LOG_DEBUG, "UPTODATE %d %d %d %d %d\n", year, mon, day, hour, min); } } time(<ime); Pnow = localtime(<ime); memset(&now, 0, sizeof(now)); now.tm_year=Pnow->tm_year; now.tm_mon=Pnow->tm_mon; now.tm_mday=Pnow->tm_mday; now.tm_hour=Pnow->tm_hour; now.tm_min=Pnow->tm_min; now.tm_isdst=-1; mktime(&now); /* Corner case where current time == UPTODATE time. * Must adjust current time forward by 1 minute so that upper * bound of search range (current time) is not smaller than * lower bound (UPTODATE time) */ if (found_uptodate && (now.tm_min == min-1) && (now.tm_hour == hour) && (now.tm_mon == mon-1) && (now.tm_year == year-1900)) { now.tm_min += 1; mktime(&now); } /* No UPTODATE, use current time for search lower bound */ if (!found_uptodate) { alarms_write_file(); year = now.tm_year+1900; mon = now.tm_mon+1; day = now.tm_mday; hour = now.tm_hour; min = now.tm_min; } memset(&tm1, 0, sizeof(tm1)); tm1.tm_year=year-1900; tm1.tm_mon=mon-1; tm1.tm_mday=day; tm1.tm_hour=hour; tm1.tm_min=min; tm1.tm_isdst=-1; mktime(&tm1); alarms_find_next(&tm1, &now, FALSE); /* Pop up reminder windows for expired alarms immediately * rather than waiting ALARM_INTERVAL seconds and then doing it */ cb_timer_alarms(NULL); gtk_timeout_add(ALARM_INTERVAL*CLOCK_TICK, cb_timer_alarms, NULL); return EXIT_SUCCESS; } jpilot-1.8.2/ChangeLog0000664000175000017500000004530012336025501011517 000000000000001.8.2 - 05/18/14 Many bug fixes Fixed VCard output Added export for B-Folders Added export for KeePassX Changed the "enye" letter in Manana an "n", got tired of it causing problems (Ma\303\261ana to Manana) Made lots of stupid code changes to make the compiler warnings go away 1.8.1 - 04/05/11 Added a jpilot-merge utility for merging unsynced records into a pdb file Fixes Debian bug #574030: jpilot: can't delete appointments Resolve bug 2012 where small months in Postcript printout overlapped a calendar event. Fix multiple memory leaks all over code base Added a VCard export format optimized for GMail/Android import Correct iCal export for repeating events with an end date Add Category and Location fields to Calendar iCal export Add categories to left-hand side of Calendar application Add "cancel sync" button and icon to main jpilot window use CRLF for ToDo iCal export per RFC Add new "future" button to repeat appt. modification dialog so that changes only affect future occurrences Ability to install files directly to SDCARD, hardcoded to /PALM/Launcher/ directory Keyboard shortcuts to set priority of ToDo items with Alt+# where # is 1-5 Add ability to launch external editor to quickly edit memo or note text. Bound to Ctrl-E. 1.8.0 - 02/28/10 Added support for Calendar app Requires pilot-link > 0.12.5 GTK1 code removed. GTK2 required Fix Bug 1991 : Categories are lost during first sync Export function for KeyRing data GUI changes: ToDo items due today are marked by a soft green color GUI changes: new alarm clock and lock icons GUI changes: radio buttons to select between timed and untimed events Overhaul VCARD export including adding IM, Birthday, Website fields As always many many bug other fixes and small changes, see Changelog.cvs for details 1.6.2 - 02/15/09 Resolve segmentation fault when editing Contacts with attached pictures Resolve error where Contacts created on Palm could not be deleted with Jpilot Resolve sync error with simultaneously modified Contacts Overhaul of Expense plugin As always many many bug other fixes and small changes, see Changelog.cvs for details Added newer category syncronization code Added libgcrypt support Fixed Mac OS X bugs/crash Now requires pilot-link > 0.12.0 As always many many bug other fixes and small changes, see Changelog.cvs for details 1.6.1 - 12/15/08 Improved internationalization support Added newer category syncronization code Added libgcrypt support Fixed Mac OS X bugs/crash Now requires pilot-link > 0.12.0 As always many many bug other fixes and small changes, see Changelog.cvs for details 1.6.0 - 05/27/08 Support for MemosDB-PMem Support for ContactsDB-PAdd Syncing merged records fixes Added sortable columns in KeyRing Temporarily removed Edit categories Many many bug fixes and small changes 0.99.9 - 08/27/06 Fixed a major Memo category sync bug. Removed clipboard code, which would cause X to freeze when ran with some applications, rdesktop, to name one. Many bug fixes, and GUI improvements, see Changelog.cvs for details 0.99.9-pre2 - 01/15/06 (Released by Ludovic Rousseau) Fix Bugzilla 1533 where null description in appointment crashes ical export of datebook Keyring: Added a field for the last changed date and set it to today when the record is changed. Search: - Have focus default to search entry field when the Find window is called to the front - Added ability to hit Enter and automatically go to the currently highlighted record. Some more bugs fixed 0.99.9-pre1 - 12/18/05 (Released by Ludovic Rousseau) Generalization of GTK+2 stock buttons (butons with icon) and make J-Pilot more conform to GNOME Human Interface Guidelines Build with GTK+2 by default. Use --disable-gtk2 if you want GTK+1 instead Add Ukrainian and Korean translations Add support of Korean (CP949) encoding Correct a bug that prevented jpilot to start with GTK+ 2.8 (Ubuntu) Some more bugs fixed 0.99.8 - 11/30/05 This release is dedicated to my Mother who unexpectedly passed away this last year. Added translation for Kinyarwanda Added panes to Expense and KeyRing 0.99.8-pre11 - 09/11/05 Added an install user from the menu. Other miscellaneous fixes/changes 0.99.8-pre10 - 08/09/05 (Released by Ludovic Rousseau) Solve a data corruption problem when used with pilot-link 0.12 Better support of 64-bit platforms The last character was truncated using Hebrew encoding Support localized date formats (for example Japanese) jpilot-sync works again (no more jp_logf relocation error) Some more bugs fixed 0.99.8-pre9 - 05/03/05 (Released by Ludovic Rousseau) Cut-n-paste using X11 clipboard (mouse middle clic) Return focus to the list after major operations which facilitates usability Add hotkey (shift-return) to move focus between list and data window In week and month views you can clic on a day to select it in the main view Add remote sync. use "jpilot -s" to start a sync on the running jpilot Add support of pilot-link 0.12.0-pre3 Some more bugs fixed Updated translations: it, ja, fr jpilot-dump.c: convert from UTF8 to local encoding 0.99.8-pre8 - 02/19/05 (Released by Ludovic Rousseau) Cut-n-paste using GTK+ Ctrl-C/Ctrl-V now works across all four apps Replace Sync and Backup text buttons by an color icon Add Chinese BIG-5 Palm encoding Update ja, zh_TW translations GTK2 now uses CTRL+Enter consistently to apply changes Add Cancel button with ESC accelerator Added two preferences and code to 1) Mark current day in monthview and weekview guis by adding "TODAY" to display 2) Display the absolute number of an event which repeats yearly (usefulf or birthdays and anniversaries) 0.99.8-pre7 - 01/08/05 (Released by Ludovic Rousseau) Update zh_CN, zh_TW, cs and es translations Solve a crash in Japanese mode in address GUI Extract the first day of week (sunday or monday) from the system locale setting Add menu color icons for the 4 main applications Improve todo sorting Allow to cycle through the KeyRing categories by calling again the plugin Some more bugs fixed 0.99.8-pre6 - 11/27/04 (Released by Ludovic Rousseau) Solve the "different user ID sync" bug Solve the GUI "freeze" bug Some more bugs fixed 0.99.8-pre5 - 11/26/04 (Ludovic Rousseau) Solve the "undefined symbol: jp_charset_j2p" error Fix Japanese menu Some code cleanup 0.99.8-pre4 - 11/24/04 (Released by Ludovic Rousseau) Some more bugs fixed Improved search sorting Improved convertion to UTF-8 in case of errors Use GBK instead of GB2312 charset encoding for Chinese Use a radio item menu for Hide/Show/Mask records so that the state is clearly indicated Fix sort order for appts in datebook Complete Japanese translation 0.99.8-pre3 - 11/14/04 (Released by Ludovic Rousseau) Some more bugs fixed The right-hand side of jpilot were not updated on a cursor movement. Fixed unpredictable bug in repeating events caused by unitialized variable Use iconv to convert from the Palm charset to UTF-8. Thanks to Amit Aronovitch we now support many new charsets when used with GTK2: - Hebrew (CP1255), - Cyrillic (CP1251), - Cyrillic (KOI8-R), - Latin 2, Eastern Europe (ISO8859-2), - Japanese (SJIS), - Chinese (GB2312) Complete Chinese translation. Thanks to lei Yu The category selection was not working from the Export window for Addresses Give a more explicit error message when pi_bind() fails. We now have "permission denied" or "file not found" instead of "Illegal seek". Also display the device name we are trying to use. Thanks to Edgar Bonet for the patch New preference to show or hide popup tooltips Entries returned from datebook app during search were in random order Get first day of week from locale in GTK2, no preference setting 0.99.8-pre2 - 10/20/04 (Released by Ludovic Rousseau) some bugs fixed add the same keyboards accelerators for the 4 applications: Ctrl-D: Delete Ctrl-O: Copy Ctrl-N: New Record Ctrl-R: Add Record Ctrl-Return: Apply Changes Ctrl-Y: Sync KeyRing: can use non ASCII characters in name/account/password nice GTK2 color icons in the menu 0.99.8-pre1 - 10/02/04 (Released by Ludovic Rousseau) better UTF-8 handling (needed when using GTK2) sort todo list by clicking on column title lots of bugs fixed: bug 1330: invalid postscript when printing the todo list contains ( or ) bug 1306: Keyring plugin truncates passwords bug 1056: Undelete feature desired bug 1338: Some repeating appointments do not show in monthview gui bug 1176: Adding ability to e-mail directly from address book bug 1182: Search screen needs a button bug 1322: GTK2.4 libraries require changes to jpilotrc files to preserve colors bug 1116: Word wrap provided when printing monthly calendar bug 1154: resorting in address book should leave selection bar on same entry bug 1107: show completed todos found through search regardless of show completed checkbox status bug 1153: Patch reduces flicker when deleting records bug 1131: ALT key for accelerator instead of control bug 1184: truncating buffers with non ASCII charsets 0.99.7 - 02/29/04 Many bug fixes and small improvements Memo preferences hide-able Rewrote month and weekviews to be faster and resizable Iconify at startup More GTK2 support Added cp1253 support Remember last categories Highlight Overdue Todos 0.99.6 - 07/13/03 Fixed categies incorrectly syncing on first time use Added number of records tooltip to datebook Fixed DST problem in alarms Added a hide not yet due todos button Added Record completion date on todos bug 637 fix couldn't select start/end times in GTK2 Fixed bug 610, record dups when pressing page-up/down keys, and removed home key from going to today Fix DST on import Made install remember its last path Added plugin_pre_sync_pre_connect calls address_gui.c: ldif export crash, fix Many miscellaneous bugs fixes, etc. 0.99.5 - 02/21/03 Fixed serious bug resulting in overwriting appointments on the palm (Serious bug) Restore now restores latest files instead of ones from last backup (Critical bug) Added -export-dynamic to Makefile to resolve jp_logf unresolved errors Made home key go to today in datebook Added dialog error windows instead of logging them If files are to be installed a prompt window opens before a sync/backup Browser windows open from jpilot menu When app button is pressed it will cycle through categories 0.99.4 - 01/13/03 Ported code to GTK-2 (I used GTK-2.2) Added random password generation to KeyRing Added a dialer program and GUI launcher Added Syncronization of categories and editing categories on desktop Added Export of iCalendar format from ToDo and Datebook Added Export of vCard format from Address book Added Export of ldif format from Address book Added Russian Language Support Removed jpilot-upgrade-99 0.99.3 - 11/01/02 Added Simplified Chinese translation Added Traditional Chinese translation Made dialog windows Modal Manana support http://bill.sexton.tripod.com/download.htm Changed code to keep unique IDs intact. Support for OS 4.X passwords. Better DateBk support (seperate entry field for tag, better detection of datebk records) Pop up dialogs during the sync when different user name, null ID is found. Lots of patches, bug fixes and minor improvements. 0.99.2 - 02/06/02 Made changes to support pilot-link 0.10.1 and USB (palm m series and clies) Export for Datebook, Address, Todo, and Memo Import for Datebook, Address, Todo, and Memo Can now enter begin/end times into datebook by GUI, or keyboard. Put icons in clist title buttons. Prompts to Save a changed/new record instead of letting it get away. Drastically improved local database read speeds caused by bugs intro'd in 0.99 Fixed misc bugs in alarms. Support for pedit (pedit is a memo editor for the palm). Added Preferences to choose conduits. Adding in better printing support. Adding in record masking support. Wrote a KeyRing plugin (KeyRing is a palm encryption app). Added Restore Functionality. Added plugin_startup & plugin_cleanup funcs to jpilot-sync. Added man pages. Added plugin_startup and plugin_cleanup to jpilot-sync. Added a default pdb file for Expenses. Added an icon when iconized. 0.99.1 - Skipped this version to avoid confusion. 0.99 - 02/06/01 Alphabetized 4 main app categories and expense categories. New calendar begin/end setting method using keyboard. jpilot-sync program added to allow command line syncing. Made radio buttons for which phone # shows up in addr. Made month/week views obey categories. Made 4 main apps+expense more user friendly by detecting changes. Added prefs for optionally backing up DBs. Czech character set added. Russian character set added. Moved output screen to bottom panel in main window. Fixed many bugs in Expense and improved GUI. Fixed datebook entries showing weekly repeat. Added a large view window to the monthview. Fixed some DateBk3 bugs (templates showing as today, etc). Made Address screen stay as it was last used in quick/add view mode. Alarms. Sorted memos if they are sorted on the handheld. Replaced calendar buttons (array) with a gtk_calendar widget. Made Quickview a page on the address Notebook. Made private records hidable using palm password. Made changes for Japanese and Chinese and Korean and multibyte characters. Included Synctime in rpm and made it detect and avoid PalmOS 3.30. Made the creation of ~/.jpilot and ~/.jpilot/backup* perms 0700 & ~umask. If upgrading then you may want to change the permissions of ~/.jpilot/ for security reasons. Made completed ToDos not print if hidden. Minor postscript improvements. Made plugin conduits selectable wether to sync or not. 0.98 - 3/01/00 Postscript printing support db3 support, datebook categories cleanup_pc_files improved Major performance increases in datebook, and other DBs Made DBs with slashes in them backup Fast sync Backup changes/fixes Made pc databases compact themselves for users without a palm Fixed time in week/month and daily views to use prefs gettext Made century non-leap year compliant for the year 2400 :) Fixed minor category problem (deleted on remote) Fixed redraws (menus and db3) after syncing Remember categories after switching apps ToDo: Due date disappears when "No Due Date" selected 0.97 - 12/22/99 Added Weekly and Monthly views. Multiple backups supported, selectable from preferences. Block reset pilots and changed user names from syncing. Put paned windows in 4 main apps and made them remember where set. Made Graffiti Shortcuts installable. Changed to qsort from bubblesort. Removed logic to make category go to ALL after add. Remember window size after restart. Changed from using HOME to using JPILOT_HOME then default to HOME. Fixed menu history for categories (wasn't always correct). Fixed Expense plugin not always showing all of the categories. Fixed directory for global plugins. Made the dialog raise less annoying. Work around for bug where empty appointments crash PalmOS 2.0. An empty appointment description will get set to a space. 0.96 - 11/10/99 Plugin (conduit) support added. Patch for reversed todo sorting. Timesheet plugin (not yet fully working) Wrote an Expense plugin for an example plugin. Wrote a SyncTime plugin. Created a User Manual. Created plugin programmer documentation. Datebook problem with GMT and repeating appts fixed (were off 1 day in certain cases). I made TAB cycle through the text boxes during data entry. I added validation checks to repeating appts so that invalid appointments can't be entered into the palm. I Made clists bahave more intuitively. They stay put when changing data now. Week of the year numbers added on the calendar. 0.95 - 09/09/99 (This is a key Y2K date, it'll probably blow up) Made fixes to configure for Solaris (-lsocket). Removed file locking code. Highlighted calendar days with appointments. Fixed a big memory leak in addresses. Todos now show due date. Hide completed todos is stored in preferences, so it will be remembered. make install now installs empty DB files into share. These are copied to ~/.jpilot/ the first time jpilot is ran, so that it behaves before the first sync. Replaced all C++ style comments with C style comments. 0.94 - 08/28/99 Fixed up the configure script for Solaris, and Debian users. Minor GUI changes/improvements. Added an Install screen. 0.93 Didn't show the last todo in the DB file, fixed. 0.93 - 08/10/99 Changed vsnprintf and snprintf to g_vsnprintf and g_snprintf for portability. Changed flock calls to fcntl for portability. Changed logf to jpilot_logf because logf is a call in libm on some systems (portability). Added Menus. Added a quickfind in the address app. Put in a global search (find) window. Put in a preferences window and rc file support. Added support for different date formats (localization). Added support for weeks beginning on Monday (localization). Added support for choosing the colors file from the preferences window. Added a configure script. Added in Japanese support. Misc GUI improvements and code improvements. 0.92 - 07/18/99 Fixed problem reading palm db files with 0 records. Added option for viewing only uncompleted todos. Fixed a GUI problem when adding an address the phone menus didn't update right while selecting addresses on the left pane. Added a window to show the syncing output. Added a full backup button. Added forking of a process to do the sync in the background. Fixed category label in todo, address, and memo apps. Added modify capability in datebook, address, todo, and memo apps. Added the ability to check/uncheck todos. When deleteing repeating appointments it will now ask if you intend to delete just one occurence, or all occurences. Added some tooltips to show how many records are in a DB. 0.91 - 07/03/99 Fixed some feof() problem that caused datebook to not work on RedHat 6.0 I rewrote the entire datebook.c file Put in code to create and test for writability of ~/.jpilot/ Put it gtk_set_locale() for other language support on Solaris. Moved syncing code from datebook.c to sync.c Created a jpilot-syncd, a daemon syncing program. Made Feb 29th (Leap Day) yearly appointments repeat on the 28th of non-Leap years, just as on the palm pilot. Also fixed monthly repeating appointments that occur past the last day in the current month. These didn't use to appear in jpilot. Fixed a few bugs in creating new repeat monthly appointments. Fixed a few bugs in displaying monthly repeating appointments. When creating a monthly appointment that repeats "By Day": Added in a dialog box to ask if an appointment is intended to repeat in the 4th occurence of that day in the a month, or the last occurence of that day in the month. This is only asked when it cannot be deduced. The Palm Pilot will also ask this question. Fixed Mobile not being displayed in address app. 0.90a - 06/23/99 Initial release. jpilot-1.8.2/memo.c0000664000175000017500000002403512340261240011045 00000000000000/******************************************************************************* * memo.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include "memo.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "libplugin.h" #include "password.h" /********************************* Constants **********************************/ /****************************** Prototypes ************************************/ static int memo_sort(MemoList **memol, int sort_order); /****************************** Main Code *************************************/ void free_MemoList(MemoList **memo) { MemoList *temp_memo, *temp_memo_next; for (temp_memo = *memo; temp_memo; temp_memo=temp_memo_next) { free_Memo(&(temp_memo->mmemo.memo)); temp_memo_next = temp_memo->next; free(temp_memo); } *memo = NULL; } int get_memo_app_info(struct MemoAppInfo *ai) { int num, r; unsigned int rec_size; unsigned char *buf; char DBname[32]; long memo_version; memset(ai, 0, sizeof(*ai)); /* Put at least one entry in there */ strcpy(ai->category.name[0], "Unfiled"); get_pref(PREF_MEMO_VERSION, &memo_version, NULL); switch (memo_version) { case 0: default: strcpy(DBname, "MemoDB"); break; case 1: strcpy(DBname, "MemosDB-PMem"); break; case 2: strcpy(DBname, "Memo32DB"); break; } r = jp_get_app_info(DBname, &buf, (int*)&rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, DBname); if (buf) { free(buf); } return EXIT_FAILURE; } num = unpack_MemoAppInfo(ai, buf, rec_size); if (buf) { free(buf); } if ((num<0) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), DBname); return EXIT_FAILURE; } return EXIT_SUCCESS; } int get_memos(MemoList **memo_list, int sort_order) { return get_memos2(memo_list, sort_order, 1, 1, 1, CATEGORY_ALL); } /* * sort_order: SORT_ASCENDING | SORT_DESCENDING (used to keep pdb sort order * but not yet implemented) * modified, deleted, private: 0 for no, 1 for yes, 2 for use prefs */ int get_memos2(MemoList **memo_list, int sort_order, int modified, int deleted, int privates, int category) { GList *records; GList *temp_list; int recs_returned, num; struct Memo memo; MemoList *temp_memo_list; long keep_modified, keep_deleted; int keep_priv; long char_set; char *newtext; long memo_version; buf_rec *br; pi_buffer_t *RecordBuffer; jp_logf(JP_LOG_DEBUG, "get_memos2()\n"); if (modified==2) { get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); } else { keep_modified = modified; } if (deleted==2) { get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); } else { keep_deleted = deleted; } if (privates==2) { keep_priv = show_privates(GET_PRIVATES); } else { keep_priv = privates; } get_pref(PREF_CHAR_SET, &char_set, NULL); *memo_list=NULL; recs_returned = 0; get_pref(PREF_MEMO_VERSION, &memo_version, NULL); switch (memo_version) { case 0: default: num = jp_read_DB_files("MemoDB", &records); break; case 1: num = jp_read_DB_files("MemosDB-PMem", &records); break; case 2: num = jp_read_DB_files("Memo32DB", &records); break; } if (-1 == num) return 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } if ((keep_priv != SHOW_PRIVATES) && (br->attrib & dlpRecAttrSecret)) { continue; } RecordBuffer = pi_buffer_new(br->size); memcpy(RecordBuffer->data, br->buf, br->size); RecordBuffer->used = br->size; if (unpack_Memo(&memo, RecordBuffer, memo_v1) == -1) { pi_buffer_free(RecordBuffer); continue; } pi_buffer_free(RecordBuffer); if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { free_Memo(&memo); continue; } if (memo.text) { newtext = charset_p2newj(memo.text, -1, char_set); if (newtext) { free(memo.text); memo.text = newtext; } } temp_memo_list = malloc(sizeof(MemoList)); if (!temp_memo_list) { jp_logf(JP_LOG_WARN, "get_memos2(): %s\n", _("Out of memory")); break; } memcpy(&(temp_memo_list->mmemo.memo), &memo, sizeof(struct Memo)); temp_memo_list->app_type = MEMO; temp_memo_list->mmemo.rt = br->rt; temp_memo_list->mmemo.attrib = br->attrib; temp_memo_list->mmemo.unique_id = br->unique_id; temp_memo_list->next = *memo_list; *memo_list = temp_memo_list; recs_returned++; } jp_free_DB_records(&records); memo_sort(memo_list, sort_order); jp_logf(JP_LOG_DEBUG, "Leaving get_memos2()\n"); return recs_returned; } static int memo_compare(const void *v1, const void *v2) { MemoList **memol1, **memol2; char str1[52], str2[52]; struct Memo *m1, *m2; int i; memol1=(MemoList **)v1; memol2=(MemoList **)v2; m1=&((*memol1)->mmemo.memo); m2=&((*memol2)->mmemo.memo); multibyte_safe_strncpy(str1, m1->text, 50); multibyte_safe_strncpy(str2, m2->text, 50); str1[50]='\0'; str2[50]='\0'; /* lower case the strings for a better compare */ for (i=strlen(str1)-1; i >= 0; i--) { str1[i] = tolower(str1[i]); } for (i=strlen(str2)-1; i >= 0; i--) { str2[i] = tolower(str2[i]); } return strcoll(str2, str1); } static int memo_sort(MemoList **memol, int sort_order) { /* struct MemoAppInfo memo_ai; */ MemoList *temp_memol; MemoList **sort_memol; int count, i; if (sort_order==SORT_DESCENDING) { return EXIT_SUCCESS; } /* Count the entries in the list */ for (count=0, temp_memol=*memol; temp_memol; temp_memol=temp_memol->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } /* Allocate an array to be qsorted */ sort_memol = calloc(count, sizeof(MemoList *)); if (!sort_memol) { jp_logf(JP_LOG_WARN, "memo_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_memol=*memol; temp_memol; temp_memol=temp_memol->next, i++) { sort_memol[i] = temp_memol; } /* TODO: Restore code when syncing of AppInfo blocks is implemented get_memo_app_info(&memo_ai); if (memo_ai.sortByAlpha==1) { qsort(sort_memol, count, sizeof(MemoList *), memo_compare); } */ qsort(sort_memol, count, sizeof(MemoList *), memo_compare); /* Put the linked list in the order of the array */ if (sort_order==SORT_ASCENDING) { for (i=count-1; i>0; i--) { sort_memol[i]->next=sort_memol[i-1]; } sort_memol[0]->next = NULL; *memol = sort_memol[count-1]; } else { /* Descending order */ sort_memol[count-1]->next = NULL; for (i=count-1; i; i--) { sort_memol[i-1]->next=sort_memol[i]; } *memol = sort_memol[0]; } free(sort_memol); return EXIT_SUCCESS; } /* * This function writes to the MemosDB-PMem.pc3 file * * memo - input - a memo to be written * rt - input - type of record to be written * attrib - input - attributes of record * unique_id - input/output - If unique_id==0 then the palm assigns an ID, * else the unique_id passed in is used. */ int pc_memo_write(struct Memo *memo, PCRecType rt, unsigned char attrib, unsigned int *unique_id) { pi_buffer_t *RecordBuffer; buf_rec br; long char_set; long memo_version; get_pref(PREF_MEMO_VERSION, &memo_version, NULL); get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { if (memo->text) { charset_j2p(memo->text, strlen(memo->text)+1, char_set); } } RecordBuffer = pi_buffer_new(0); if (pack_Memo(memo, RecordBuffer, memo_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Memo %s\n", _("error")); return EXIT_FAILURE; } br.rt=rt; br.attrib = attrib; br.buf = RecordBuffer->data; br.size = RecordBuffer->used; /* Keep unique ID intact */ if (unique_id) { br.unique_id = *unique_id; } else { br.unique_id = 0; } switch (memo_version) { case 0: default: jp_pc_write("MemoDB", &br); break; case 1: jp_pc_write("MemosDB-PMem", &br); break; case 2: jp_pc_write("Memo32DB", &br); break; } if (unique_id) { *unique_id = br.unique_id; } pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } jpilot-1.8.2/stock_buttons.h0000664000175000017500000000370512320101153013011 00000000000000/******************************************************************************* * stock_buttons.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2005 by Ludovic Rosuseau * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "config.h" extern GtkTooltips *glob_tooltips; #ifndef ENABLE_STOCK_BUTTONS /* old behavior */ # include "gdk/gdkkeysyms.h" # define CREATE_BUTTON(widget, text, stock, tooltip, shortcut_key, shortcut_mask, shortcut_text) \ widget = gtk_button_new_with_label(text); \ if (shortcut_key) \ { \ char str[100]; \ gtk_widget_add_accelerator(widget, "clicked", accel_group, shortcut_key, shortcut_mask, GTK_ACCEL_VISIBLE); \ sprintf(str, "%s %s", tooltip, shortcut_text); \ set_tooltip(show_tooltips, glob_tooltips, widget, str, NULL); \ } \ else \ set_tooltip(show_tooltips, glob_tooltips, widget, tooltip, NULL);\ gtk_box_pack_start(GTK_BOX(hbox_temp), widget, TRUE, TRUE, 0); #else # define CREATE_BUTTON(widget, text, stock, tooltip, shortcut_key, shortcut_mask, shortcut_text) \ widget = gtk_button_new_from_stock(GTK_STOCK_ ## stock); \ set_tooltip(show_tooltips, glob_tooltips, widget, tooltip, NULL); \ gtk_box_pack_start(GTK_BOX(hbox_temp), widget, TRUE, TRUE, 0); #endif jpilot-1.8.2/jpilotrc.purple0000664000175000017500000001224212320101153013012 00000000000000style "window" { fg[NORMAL] = { 1.0, 1.0, 1.0 } #forground color for window bg[NORMAL] = { 0.4, 0.2, 0.6 } #background color for window } style "fileselect" = "window" { text[NORMAL] = { 0.0, 0.0, 1.0 } # fg of file selection lists base[NORMAL] = { 0.85, 0.9, 1.0 } # bg of file selection lists } style "frame" { fg[NORMAL] = { 1.0, 1.0, 1.0 } #the text part of a frame bg[NORMAL] = { 1.0, 1.0, 1.0 } #the outline part of a frame } style "label" { fg[NORMAL] = { 1.0, 1.0, 1.0 } #foreground of a label and button text bg[NORMAL] = { 0.4, 0.2, 0.6 } #background for a label } style "label_high" { fg[NORMAL] = { 0.9, 0.9, 0.5 } } style "today" { base[NORMAL] = { 0.67, 0.49, .88 } } style "tooltips" { fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 1.0, 0.98, .84 } } style "button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } #fg and bg when mouse-over bg[PRELIGHT] = { 0.5, 0.3, 0.7 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } #fg and bg when button pressed bg[ACTIVE] = { 0.4, 0.2, 0.6 } #fg[NORMAL] = { 0.9, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.2, 0.6 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { .545, 263, .863 } } style "button_app" { #These are for the 4 main app buttons fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.6, 0.4, 0.8 } } style "toggle_button" = "button" { #toggle buttons are the buttons that stay down or up when pressed } style "radio_button" { #these are the little square buttons fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.4, 0.2, 0.6 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 1.0, 1.0, 0.0 } #fg[NORMAL] = { 1.0, 1.0, 0.0 } fg[NORMAL] = { .17, .09, .25 } bg[NORMAL] = { 0.4, 0.2, 0.6 } } style "spin_button" { #these are the boxes with up/down arrows #fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 1.0, 1.0, 0.0 } fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.4, 0.2, 0.6 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { 0.4, 0.2, 0.6 } base[NORMAL] = { 0.85, 0.9, 1.0 } } style "text" { #This is how to use a different font under GTK 2.x #font_name = "Sans 12" fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.4, 0.2, 0.6 } fg[PRELIGHT] = { 0.0, 0.0, 0.0 } bg[PRELIGHT] = { 0.5, 0.3, 0.7 } #fg[SELECTED] = { 0.0, 0.0, 0.0 } #bg[SELECTED] = { 0.9, 0.8, 1.0 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } bg[ACTIVE] = { 0.4, 0.2, 0.6 } #bg of scrollbars fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } #fg of scrollbar buttons when insensitive bg[INSENSITIVE] = { 0.4, 0.2, 0.6 } #bg of scrollbar buttons when insensitive text[NORMAL] = { 0.0, 0.0, 1.0 } base[NORMAL] = { 0.85, 0.9, 1.0 } text[ACTIVE] = { 0.0, 0.0, 1.0 } #fg of selected text after focus has left base[ACTIVE] = { 0.85, 0.9, 1.0 } #bg of selected text after focus has left } style "menu" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.4, 0.2, 0.6 } fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.5, 0.3, 0.7 } fg[ACTIVE] = { 0.0, 1.0, 0.0 } bg[ACTIVE] = { 0.4, 0.2, 0.6 } fg[SELECTED] = { 1.0, 0.0, 0.0 } bg[SELECTED] = { 1.0, 0.0, 0.5 } } style "notebook" { fg[NORMAL] = { 0.9, 0.9, 0.9 } bg[NORMAL] = { 0.4, 0.2, 0.6 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 0.3, 0.1, 0.5 } } style "calendar" { fg[NORMAL] = { 1.0, 1.0, 1.0 } # month/year text bg[NORMAL] = { 0.5, 0.3, 0.7 } # month/year bg and out-of-month days fg[PRELIGHT] = { 1.0, 1.0, 0.0 } # prelights for month/year arrows bg[PRELIGHT] = { 0.4, 0.2, 0.6 } # prelights for month/year arrows text[NORMAL] = { 1.0, 1.0, 1.0 } # day numbers text[SELECTED] = { 1.0, 1.0, 1.0 } # selected day and week numbers fg base[SELECTED] = { 0.5, 0.3, 0.7 } # selected day and week numbers bg text[ACTIVE] = { 1.0, 1.0, 1.0 } # week numbers when focus is not on widget base[ACTIVE] = { 0.5, 0.3, 0.7 } # week numbers when focus is not on widget base[NORMAL] = { 0.4, 0.2, 0.6 } # bg for calendar } ################################################################################ # These set the widget types to use the styles defined above. widget_class "GtkWindow" style "window" widget_class "GtkDialog" style "window" widget_class "GtkMessageDialog" style "window" widget_class "GtkFileSelection*" style "fileselect" widget_class "GtkFontSel*" style "notebook" widget_class "*GtkNotebook" style "notebook" widget_class "*GtkButton*" style "button" widget_class "*GtkCheckButton*" style "radio_button" widget_class "*GtkRadioButton*" style "radio_button" widget_class "*GtkToggleButton*" style "toggle_button" widget_class "*GtkSpinButton" style "spin_button" widget_class "*Menu*" style "menu" widget_class "*GtkText" style "text" widget_class "*GtkTextView" style "text" widget_class "*GtkEntry" style "text" widget_class "*GtkCList" style "text" widget_class "*GtkVScrollbar" style "text" widget_class "*GtkHScrollbar" style "text" widget_class "*GtkLabel" style "label" widget_class "*GtkEventBox" style "label" widget_class "*GtkFrame" style "frame" widget_class "*GtkCalendar" style "calendar" ############################################################ # These set the widget types for named gtk widgets in the C code widget "*.button_app" style "button_app" widget "*.label_high" style "label_high" widget "*.today" style "today" widget "*tooltip*" style "tooltips" jpilot-1.8.2/calendar.h0000664000175000017500000000511112340261240011660 00000000000000/******************************************************************************* * calendar.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __CALENDAR_H__ #define __CALENDAR_H__ #include #include #include #include "utils.h" /* Copy AppInfo data structures */ int copy_appointment_ai_to_calendar_ai(const struct AppointmentAppInfo *aai, struct CalendarAppInfo *cai); /* Copy AppInfo data structures */ int copy_calendar_ai_to_appointment_ai(const struct CalendarAppInfo *cai, struct AppointmentAppInfo *aai); int copy_appointment_to_calendarEvent(const struct Appointment *a, struct CalendarEvent *cale); int copy_calendarEvent_to_appointment(const struct CalendarEvent *cale, struct Appointment *a); int copy_appointments_to_calendarEvents(AppointmentList *al, CalendarEventList **cel); int copy_calendarEvents_to_appointments(CalendarEventList *cel, AppointmentList **al); void free_CalendarEventList(CalendarEventList **cel); int get_calendar_app_info(struct CalendarAppInfo *cai); int calendar_sort(CalendarEventList **cel, int (*compare_func)(const void*, const void*)); int get_days_calendar_events(CalendarEventList **calendar_event_list, struct tm *now, int category, int *total_records); /* * If Null is passed in for date, then all appointments will be returned * modified, deleted and private, 0 for no, 1 for yes, 2 for use prefs */ int get_days_calendar_events2(CalendarEventList **calendar_event_list, struct tm *now, int modified, int deleted, int privates, int category, int *total_records); int pc_calendar_write(struct CalendarEvent *cale, PCRecType rt, unsigned char attrib, unsigned int *unique_id); #endif jpilot-1.8.2/mkinstalldirs0000775000175000017500000000672212320101153012547 00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: jpilot-1.8.2/jpilot-dump.c0000664000175000017500000013123712320101153012351 00000000000000/******************************************************************************* * jpilot-dump.c * * Copyright (C) 2000 by hvrietsc * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #ifdef HAVE_LOCALE_H # include #endif /* Pilot-link header files */ #include #include #include #include /* Jpilot header files */ #include "datebook.h" #include "address.h" #include "todo.h" #include "memo.h" #include "utils.h" #include "i18n.h" #include "otherconv.h" #include "prefs.h" #include "sync.h" /********************************* Constants **********************************/ /* RFCs use CRLF for Internet newline */ #define CRLF "\x0D\x0A" #define LIMIT(a,b,c) if (a < b) {a=b;} if (a > c) {a=c;} /* Uncomment for more debug output */ /* #define JDUMP_DEBUG 1 */ /******************************* Global vars **********************************/ /* dump switches */ int dumpD; int dumpI; int dumpN; int Nyear; int Nmonth; int Nday; int dumpA; int dumpM; int dumpT; const char *formatD; const char *formatM; const char *formatA; const char *formatT; /* Start Hack */ /* FIXME: The following is a hack. * The variables below are global variables in jpilot.c which are unused in * this code but must be instantiated for the code to compile. * The same is true of the functions which are only used in GUI mode. */ pid_t jpilot_master_pid = -1; int pipe_to_parent; GtkWidget *glob_dialog; GtkWidget *glob_date_label; gint glob_date_timer_tag; void output_to_pane(const char *str) { return; } int sync_once(struct my_sync_info *sync_info) { return EXIT_SUCCESS; } /* End Hack */ /****************************** Main Code *************************************/ static void fprint_jpd_usage_string(FILE *out) { fprintf(out, "%s-dump [ +format [-v] || [-h] || [-f] || [-D] || [-i] || [-N] || [-A] || [-T] || [-M] ]\n", EPN); fprintf(out, _(" +D +A +T +M format like date +format.\n")); fprintf(out, _(" -v display version and exit\n")); fprintf(out, _(" -h display help text\n")); fprintf(out, _(" -f display help for format codes\n")); fprintf(out, _(" -D dump DateBook\n")); fprintf(out, _(" -i dump DateBook in iCalendar format\n")); fprintf(out, _(" -N dump appts for today in DateBook\n")); fprintf(out, _(" -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n")); fprintf(out, _(" -A dump Address book\n")); fprintf(out, _(" -T dump ToDo list as CSV\n")); fprintf(out, _(" -M dump Memos\n")); } /* convert from UTF8 to local encoding */ static void utf8_to_local(char *str) { char *local_buf; if (str == NULL) return; local_buf = g_locale_from_utf8(str, -1, NULL, NULL, NULL); if (local_buf) { g_strlcpy(str, local_buf, strlen(str)+1); free(local_buf); } } /* Parse the string and replace dangerous characters with spaces */ static void takeoutfunnies(char *str) { int i; if (!str) { return; } for (i=0; str[i]; i++) { if ((str[i]=='\r') || (str[i]=='\n') || (str[i]=='\\') || (str[i]=='\'') || (str[i]=='"' ) || (str[i]=='`' ) ) { str[i]=' '; } } } static int dumpical(void) { MyAppointment *mappt; AppointmentList *al, *temp_list; int i; char text[1024]; char csv_text[65550]; char *p; gchar *end; time_t ltime; struct tm *now; struct tm ical_time; long char_set; char username[256]; char hostname[256]; const char *svalue; long userid; /* ICAL setup */ get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set < CHAR_SET_UTF) { fprintf(stderr, _("Warning: " "Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n")); } get_pref(PREF_USER, NULL, &svalue); g_strlcpy(text, svalue, 128); text[127] = '\0'; charset_p2j(text, 128, char_set); str_to_ical_str(username, sizeof(username), text); get_pref(PREF_USER_ID, &userid, NULL); gethostname(text, sizeof(hostname)); text[sizeof(hostname)-1]='\0'; str_to_ical_str(hostname, sizeof(hostname), text); time(<ime); now = gmtime(<ime); al=NULL; get_days_appointments2(&al, NULL, 2, 2, 2, NULL); mappt=NULL; for (i=0, temp_list=al; temp_list; temp_list = temp_list->next, i++) { mappt = &(temp_list->mappt); /* RFC 2445: Internet Calendaring and Scheduling Core * Object Specification */ if (i == 0) { printf("BEGIN:VCALENDAR"CRLF); printf("VERSION:2.0"CRLF); printf("PRODID:%s"CRLF, FPI_STRING); } printf("BEGIN:VEVENT"CRLF); /* XXX maybe if it's secret export a VFREEBUSY busy instead? */ if (mappt->attrib & dlpRecAttrSecret) { printf("CLASS:PRIVATE"CRLF); } printf("UID:palm-datebook-%08x-%08lx-%s@%s"CRLF, mappt->unique_id, userid, username, hostname); printf("DTSTAMP:%04d%02d%02dT%02d%02d%02dZ"CRLF, now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); if (mappt->appt.description) { g_strlcpy(text, mappt->appt.description, 51); /* truncate the string on a UTF-8 character boundary */ if (char_set > CHAR_SET_UTF) { if (!g_utf8_validate(text, -1, (const gchar **)&end)) *end = 0; } } else { /* Handle pathological case with null description. */ text[0] = '\0'; } if ((p = strchr(text, '\n'))) { *p = '\0'; } str_to_ical_str(csv_text, sizeof(csv_text), text); printf("SUMMARY:%s%s"CRLF, csv_text, strlen(text) > 49 ? "..." : ""); str_to_ical_str(csv_text, sizeof(csv_text), mappt->appt.description); printf("DESCRIPTION:%s", csv_text); if (mappt->appt.note && mappt->appt.note[0]) { str_to_ical_str(csv_text, sizeof(csv_text), mappt->appt.note); printf("\\n"CRLF" %s"CRLF, csv_text); } else { printf(CRLF); } if (mappt->appt.event) { printf("DTSTART;VALUE=DATE:%04d%02d%02d"CRLF, mappt->appt.begin.tm_year+1900, mappt->appt.begin.tm_mon+1, mappt->appt.begin.tm_mday); /* XXX unclear: can "event" span multiple days? */ /* since DTEND is "noninclusive", should this be the next day? */ if (mappt->appt.end.tm_year != mappt->appt.begin.tm_year || mappt->appt.end.tm_mon != mappt->appt.begin.tm_mon || mappt->appt.end.tm_mday != mappt->appt.begin.tm_mday) { printf("DTEND;VALUE=DATE:%04d%02d%02d"CRLF, mappt->appt.end.tm_year+1900, mappt->appt.end.tm_mon+1, mappt->appt.end.tm_mday); } } else { /* * These are "local" times, so will be treated as being in * the other person's timezone when they are imported. This * may or may not be what is desired. (DateBk calls this * "all time zones"). * * DateBk timezones could help us decide what to do here. * * When using DateBk timezones, we could write them out * as iCalendar timezones. * * Maybe the default should be to write an absolute (UTC) time, * and only write a "local" time when using DateBk and it says to. * It'd be interesting to see if repeated events get translated * properly when doing this, or if they become not eligible for * daylight savings. This probably depends on the importing * application. */ printf("DTSTART:%04d%02d%02dT%02d%02d00"CRLF, mappt->appt.begin.tm_year+1900, mappt->appt.begin.tm_mon+1, mappt->appt.begin.tm_mday, mappt->appt.begin.tm_hour, mappt->appt.begin.tm_min); printf("DTEND:%04d%02d%02dT%02d%02d00"CRLF, mappt->appt.end.tm_year+1900, mappt->appt.end.tm_mon+1, mappt->appt.end.tm_mday, mappt->appt.end.tm_hour, mappt->appt.end.tm_min); } if (mappt->appt.repeatType != repeatNone) { int wcomma, rptday; const char *wday[] = {"SU","MO","TU","WE","TH","FR","SA"}; printf("RRULE:FREQ="); switch (mappt->appt.repeatType) { case repeatNone: /* can't happen, just here to silence compiler warning */ break; case repeatDaily: printf("DAILY"); break; case repeatWeekly: printf("WEEKLY;BYDAY="); wcomma=0; for (i=0; i<7; i++) { if (mappt->appt.repeatDays[i]) { if (wcomma) { printf(","); } wcomma = 1; printf("%s", wday[i]); } } break; case repeatMonthlyByDay: rptday = (mappt->appt.repeatDay / 7) + 1; printf("MONTHLY;BYDAY=%d%s", rptday == 5 ? -1 : rptday, wday[mappt->appt.repeatDay % 7]); break; case repeatMonthlyByDate: printf("MONTHLY;BYMONTHDAY=%d", mappt->appt.begin.tm_mday); break; case repeatYearly: printf("YEARLY"); break; } if (mappt->appt.repeatFrequency != 1) { if (mappt->appt.repeatType == repeatWeekly && mappt->appt.repeatWeekstart >= 0 && mappt->appt.repeatWeekstart < 7) { printf(CRLF" "); // Weekly repeats can exceed RFC line length printf(";WKST=%s", wday[mappt->appt.repeatWeekstart]); } printf(";INTERVAL=%d", mappt->appt.repeatFrequency); } if (!mappt->appt.repeatForever) { /* RFC 2445 is unclear on how to handle inclusivity for * dates, rather than datestamps. Because most other * ical parsers assume non-inclusivity Jpilot needs to * add one day to the end date of repeating events. */ memset(&ical_time, 0, sizeof(ical_time)); ical_time.tm_year = mappt->appt.repeatEnd.tm_year; ical_time.tm_mon = mappt->appt.repeatEnd.tm_mon; ical_time.tm_mday = mappt->appt.repeatEnd.tm_mday; ical_time.tm_isdst= -1; mktime(&ical_time); printf(";UNTIL=%04d%02d%02d", ical_time.tm_year+1900, ical_time.tm_mon+1, ical_time.tm_mday); } printf(CRLF); if (mappt->appt.exceptions > 0) { for (i=0; iappt.exceptions; i++) { printf("EXDATE;VALUE=DATE:%04d%02d%02d"CRLF, mappt->appt.exception[i].tm_year+1900, mappt->appt.exception[i].tm_mon+1, mappt->appt.exception[i].tm_mday); } } } if (mappt->appt.alarm) { const char *units; printf("BEGIN:VALARM"CRLF); printf("ACTION:DISPLAY"CRLF); str_to_ical_str(csv_text, sizeof(csv_text), mappt->appt.description); printf("DESCRIPTION:%s"CRLF, csv_text); switch (mappt->appt.advanceUnits) { case advMinutes: units = "M"; break; case advHours: units = "H"; break; case advDays: units = "D"; break; default: /* XXX */ units = "?"; break; } printf("TRIGGER:-PT%d%s"CRLF, mappt->appt.advance, units); printf("END:VALARM"CRLF); } printf("END:VEVENT"CRLF); if (temp_list->next == NULL) { printf("END:VCALENDAR"CRLF); } } free_AppointmentList(&al); return EXIT_SUCCESS; } static int dumpbook(void) { AppointmentList *tal, *al; int num, i; int year, month, day, hour, minute; struct tm tm_dom; al = NULL; num = get_days_appointments(&al, NULL, NULL); if (num == 0) return (0); /* get date */ LIMIT(Nday,1,31); LIMIT(Nyear,1900,3000); LIMIT(Nmonth,1,12); tm_dom.tm_sec = 0; tm_dom.tm_min = 0; tm_dom.tm_hour = 0; tm_dom.tm_mday = Nday; tm_dom.tm_year = Nyear-1900; tm_dom.tm_mon = Nmonth-1; tm_dom.tm_isdst = 0; mktime(&tm_dom); #ifdef JDUMP_DEBUG printf("Dumpbook:dump year=%d,month=%d,day=%d\n", Nyear, Nmonth, Nday); printf("Dumpbook:date is %s", asctime(&tm_dom)); #endif for (tal=al; tal; tal = tal->next) { if (((dumpN == FALSE) || (isApptOnDate(&(tal->mappt.appt), &tm_dom) == TRUE)) && (tal->mappt.rt != DELETED_PALM_REC) && (tal->mappt.rt != MODIFIED_PALM_REC)) { utf8_to_local(tal->mappt.appt.description); utf8_to_local(tal->mappt.appt.note); /* sort through format codes */ for (i=2; formatD[i] != '\0'; i++) { if ( formatD[i] != '%') { printf("%c", formatD[i]); } else { switch (formatD[i+1]) { case '\0': break; case 'n' : printf("\n"); i++; break; case 't' : printf("\t"); i++; break; case 'q' : printf("'"); i++; break; case 'Q' : printf("\""); i++; break; case 'w' : printf("%d", tal->mappt.appt.alarm); i++; break; case 'v' : printf("%d", tal->mappt.appt.advance); i++; break; case 'u' : switch (tal->mappt.appt.advanceUnits) { case advMinutes : printf("m"); break; case advHours : printf("h"); break; case advDays : printf("d"); break; default : printf("x"); break; } i++; break; case 'X' : takeoutfunnies(tal->mappt.appt.note); /* fall thru */ case 'x' : if (tal->mappt.appt.note != NULL) { printf("%s", tal->mappt.appt.note); } i++; break; case 'A' : takeoutfunnies(tal->mappt.appt.description); /* fall thru */ case 'a' : printf("%s", tal->mappt.appt.description); i++; break; case 'N' : /* normal output */ /* start date+time, end date+time, "description" */ takeoutfunnies(tal->mappt.appt.description); printf("%.4d/%.2d/%.2d,%.2d:%.2d,%.4d/%.2d/%.2d,%.2d:%.2d,\"%s\"", tal->mappt.appt.begin.tm_year+1900, tal->mappt.appt.begin.tm_mon+1, tal->mappt.appt.begin.tm_mday, tal->mappt.appt.begin.tm_hour, tal->mappt.appt.begin.tm_min, tal->mappt.appt.end.tm_year+1900, tal->mappt.appt.end.tm_mon+1, tal->mappt.appt.end.tm_mday, tal->mappt.appt.end.tm_hour, tal->mappt.appt.end.tm_min, tal->mappt.appt.description ); i++; break; /* now process the double character format codes */ case 'b' : case 'e' : if (formatD[i+1] == 'b') { year = tal->mappt.appt.begin.tm_year+1900; month = tal->mappt.appt.begin.tm_mon+1; day = tal->mappt.appt.begin.tm_mday; hour = tal->mappt.appt.begin.tm_hour; minute = tal->mappt.appt.begin.tm_min; } else { year = tal->mappt.appt.end.tm_year+1900; month = tal->mappt.appt.end.tm_mon+1; day = tal->mappt.appt.end.tm_mday; hour = tal->mappt.appt.end.tm_hour; minute = tal->mappt.appt.end.tm_min; } /* do %bx and %ex format codes */ switch (formatD[i+2]) { case '\0': printf("%c", formatD[i+1]); break; case 'm' : printf("%.2d", month); i++; break; case 'd' : printf("%.2d", day); i++; break; case 'y' : printf("%.2d", year%100); i++; break; case 'Y' : printf("%.4d", year); i++; break; case 'X' : printf("%.2d/%.2d/%.2d", year-1900, month, day); i++; break; case 'D' : printf("%.2d/%.2d/%.2d", month, day, year%100); i++; break; case 'H' : printf("%.2d", hour); i++; break; case 'k' : printf("%d", hour); i++; break; case 'I' : if (hour < 13) { printf("%.2d", hour); } else { printf("%.2d", hour-12); } i++; break; case 'l' : if (hour < 13) { printf("%d", hour); } else { printf("%d", hour-12); } i++; break; case 'M' : printf("%.2d", minute); i++; break; case 'p' : if (hour < 13) { printf("AM"); } else { printf("PM"); } i++; break; case 'T' : printf("%.2d:%.2d", hour, minute); i++; break; case 'r' : if (hour < 13) { printf("%.2d:%.2d AM", hour, minute); } else { printf("%.2d:%.2d PM", hour-12, minute); } i++; break; case 'h' : case 'b' : switch (month-1) { case 0: printf("Jan"); break; case 1: printf("Feb"); break; case 2: printf("Mar"); break; case 3: printf("Apr"); break; case 4: printf("May"); break; case 5: printf("Jun"); break; case 6: printf("Jul"); break; case 7: printf("Aug"); break; case 8: printf("Sep"); break; case 9: printf("Oct"); break; case 10:printf("Nov"); break; case 11:printf("Dec"); break; default:printf("???"); break; } i++; break; case 'B' : switch (month-1) { case 0: printf("January"); break; case 1: printf("February"); break; case 2: printf("March"); break; case 3: printf("April"); break; case 4: printf("May"); break; case 5: printf("June"); break; case 6: printf("July"); break; case 7: printf("August"); break; case 8: printf("September"); break; case 9: printf("October"); break; case 10:printf("November"); break; case 11:printf("December"); break; default:printf("???"); break; } i++; break; default: /* 2 letter format codes */ printf("%c%c", formatD[i+1], formatD[i+2]); i++; break; } /* end switch 2 letters format codes */ i++; break; default: /* one letter format codes */ printf("%c", formatD[i+1]); i++; break; } /* end switch one letter format codes */ } /* end if % */ } /* for loop over formatD */ printf("\n"); } /* end if excluding deleted records */ } /* end for loop on tal= */ free_AppointmentList(&al); return EXIT_SUCCESS; } static int dumpaddress(void) { AddressList *tal, *al; int num, i; struct AddressAppInfo ai; get_address_app_info(&ai); al = NULL; i = 0; num = get_addresses(&al, i); for (tal=al; tal; tal = tal->next) { if ((tal->maddr.rt != DELETED_PALM_REC) && (tal->maddr.rt != MODIFIED_PALM_REC)) { for (num=0; num < 19; num++) utf8_to_local(tal->maddr.addr.entry[num]); for ( i=2 ; formatA[i] != '\0' ; i++) { if ( formatA[i] != '%') { printf("%c", formatA[i]); } else { switch (formatA[i+1]) { case '\0': break; case 'n' : printf("\n"); i++; break; case 't' : printf("\t"); i++; break; case 'q' : printf("'"); i++; break; case 'Q' : printf("\""); i++; break; case 'C' : printf("%s", ai.category.name[tal->maddr.attrib & 0x0F]); i++; break; case 'N' : /* normal output */ for (num=0; num < 19 ; num++) { if (tal->maddr.addr.entry[num] == NULL) { printf("\n"); } else { printf("%s\n", tal->maddr.addr.entry[num]); } } i++; break; #define PRIT if (tal->maddr.addr.entry[num] != NULL) { printf("%s", tal->maddr.addr.entry[num]); } #define PRITE if (tal->maddr.addr.entry[num + 3] != NULL) { printf("%d", tal->maddr.addr.phoneLabel[num]); } case 'l' : num=0; PRIT; i++; break; case 'f' : num=1; PRIT; i++; break; case 'c' : num=2; PRIT; i++; break; case 'p' : num=3; switch (formatA[i+2]) { case '1' : num=3; PRIT; i++; break; case '2' : num=4; PRIT; i++; break; case '3' : num=5; PRIT; i++; break; case '4' : num=6; PRIT; i++; break; case '5' : num=7; PRIT; i++; break; } i++; break; case 'e' : num = 0; switch (formatA[i+2]) { case '1' : num=0; PRITE; i++; break; case '2' : num=1; PRITE; i++; break; case '3' : num=2; PRITE; i++; break; case '4' : num=3; PRITE; i++; break; case '5' : num=4; PRITE; i++; break; } i++; break; case 'a' : num=8; PRIT; i++; break; case 'T' : num=9; PRIT; i++; break; case 's' : num=10; PRIT; i++; break; case 'z' : num=11; PRIT; i++; break; case 'u' : num=12; PRIT; i++; break; case 'm' : num=13; PRIT; i++; break; case 'U' : switch (formatA[i+2]) { case '1' : num=14; PRIT; i++; break; case '2' : num=15; PRIT; i++; break; case '3' : num=16; PRIT; i++; break; case '4' : num=17; PRIT; i++; break; } i++; break; case 'X' : takeoutfunnies(tal->maddr.addr.entry[18]); /* fall thru */ case 'x' : if (tal->maddr.addr.entry[18] != NULL) printf("%s", tal->maddr.addr.entry[18]); i++; break; default: /* one letter ones */ printf("%c", formatA[i+1]); i++; break; } /* switch one letter ones */ } /* fi */ } /* for */ printf("\n"); }/* end if deleted*/ }/* end for tal=*/ free_AddressList(&al); return EXIT_SUCCESS; } static int dumptodo(void) { ToDoList *tal, *al; int num, i; int year, month, day, hour, minute; struct ToDoAppInfo ai; get_todo_app_info(&ai); al = NULL; num = get_todos(&al, SORT_ASCENDING); for (tal=al; tal; tal = tal->next) { if ((tal->mtodo.rt != DELETED_PALM_REC) && (tal->mtodo.rt != MODIFIED_PALM_REC)) { utf8_to_local(tal->mtodo.todo.description); utf8_to_local(tal->mtodo.todo.note); for ( i=2; formatT[i] != '\0'; i++) { if ( formatT[i] != '%') { printf("%c", formatT[i]); } else { switch (formatT[i+1]) { case '\0': break; case 'n' : printf("\n"); i++; break; case 't' : printf("\t"); i++; break; case 'p' : printf("%d", tal->mtodo.todo.priority); i++; break; case 'q' : printf("'"); i++; break; case 'Q' : printf("\""); i++; break; case 'X' : takeoutfunnies(tal->mtodo.todo.note); /* fall thru */ case 'x' : if (tal->mtodo.todo.note != NULL) printf("%s", tal->mtodo.todo.note); i++; break; case 'C' : printf("%s", ai.category.name[tal->mtodo.attrib & 0x0F]); i++; break; case 'A' : takeoutfunnies(tal->mtodo.todo.description); /* fall thru */ case 'a' : printf("%s", tal->mtodo.todo.description); i++; break; case 'c' : printf("%d", tal->mtodo.todo.complete); i++; break; case 'i' : printf("%d", tal->mtodo.todo.indefinite); i++; break; case 'N' : /* normal output */ takeoutfunnies(tal->mtodo.todo.description); if(tal->mtodo.todo.indefinite && !tal->mtodo.todo.complete) { year = 9999; month = 12; day = 31; hour = 23; minute = 59; } else { year = tal->mtodo.todo.due.tm_year+1900; month = tal->mtodo.todo.due.tm_mon+1; day = tal->mtodo.todo.due.tm_mday; hour = tal->mtodo.todo.due.tm_hour; minute = tal->mtodo.todo.due.tm_min; } /* check garbage */ LIMIT(year,1900,9999); LIMIT(month,1,12); LIMIT(day,1,31); LIMIT(hour,0,23); LIMIT(minute,0,59); printf("%d,%d,%d,%.4d/%.2d/%.2d,\"%s\"", tal->mtodo.todo.complete, tal->mtodo.todo.priority, tal->mtodo.todo.indefinite, year, month, day, tal->mtodo.todo.description ); i++; break; /* now the double letter format codes */ case 'd' : if(tal->mtodo.todo.indefinite && !tal->mtodo.todo.complete) { year = 9999; month = 12; day = 31; hour = 23; minute = 59; } else { year = tal->mtodo.todo.due.tm_year+1900; month = tal->mtodo.todo.due.tm_mon+1; day = tal->mtodo.todo.due.tm_mday; hour = tal->mtodo.todo.due.tm_hour; minute = tal->mtodo.todo.due.tm_min; } /* check garbage */ LIMIT(year,1900,9999); LIMIT(month,1,12); LIMIT(day,1,31); LIMIT(hour,0,23); LIMIT(minute,0,59); /* do %dx formats */ switch (formatT[i+2]) { case '\0': printf("%c", formatT[i+1]); break; case 'm' : printf("%.2d", month); i++; break; case 'd' : printf("%.2d", day); i++; break; case 'y' : printf("%.2d", year%100); i++; break; case 'Y' : printf("%.4d", year); i++; break; case 'X' : printf("%.2d/%.2d/%.2d", year-1900, month, day); i++; break; case 'D' : printf("%.2d/%.2d/%.2d", month, day, year%100); i++; break; case 'H' : printf("%.2d", hour); i++; break; case 'k' : printf("%d", hour); i++; break; case 'I' : if (hour < 13) { printf("%.2d", hour); } else { printf("%.2d", hour-12); } i++; break; case 'l' : if (hour < 13) { printf("%d", hour); } else { printf("%d", hour-12); } i++; break; case 'M' : printf("%.2d", minute); i++; break; case 'p' : if (hour < 13) { printf("AM"); } else { printf("PM"); } i++; break; case 'T' : printf("%.2d:%.2d", hour, minute); i++; break; case 'r' : if (hour < 13) { printf("%.2d:%.2d AM", hour, minute); } else { printf("%.2d:%.2d PM", hour-12, minute); } i++; break; case 'h' : case 'b' : switch (month-1) { case 0: printf("Jan"); break; case 1: printf("Feb"); break; case 2: printf("Mar"); break; case 3: printf("Apr"); break; case 4: printf("May"); break; case 5: printf("Jun"); break; case 6: printf("Jul"); break; case 7: printf("Aug"); break; case 8: printf("Sep"); break; case 9: printf("Oct"); break; case 10:printf("Nov"); break; case 11:printf("Dec"); break; default:printf("???"); break; } i++; break; case 'B' : switch (month-1) { case 0: printf("January"); break; case 1: printf("February"); break; case 2: printf("March"); break; case 3: printf("April"); break; case 4: printf("May"); break; case 5: printf("June"); break; case 6: printf("July"); break; case 7: printf("August"); break; case 8: printf("September"); break; case 9: printf("October"); break; case 10:printf("November"); break; case 11:printf("December"); break; default:printf("???"); break; } i++; break; default: /* 2 letter format codes */ printf("%c%c", formatT[i+1], formatT[i+2]); i++; break; } /* switch 2 letter format codes*/ i++; break; default: /* one letter format codes */ printf("%c", formatT[i+1]); i++; break; } /* switch one letter format codes */ } /* fi */ } /* for */ printf("\n"); } /* end if deleted*/ } /* end for tal=*/ free_ToDoList(&al); return EXIT_SUCCESS; } static int dumpmemo(void) { MemoList *tal, *al; int num,i; struct MemoAppInfo ai; get_memo_app_info(&ai); al = NULL; i = 0; num = get_memos(&al, i); for (tal=al; tal; tal = tal->next) { if ((tal->mmemo.rt != DELETED_PALM_REC) && (tal->mmemo.rt != MODIFIED_PALM_REC)) { utf8_to_local(tal->mmemo.memo.text); for ( i=2 ; formatM[i] != '\0' ; i++) { if ( formatM[i] != '%') { printf("%c", formatM[i]); } else { switch (formatM[i+1]) { case '\0': break; case 'n' : printf("\n"); i++; break; case 't' : printf("\t"); i++; break; case 'q' : printf("'"); i++; break; case 'Q' : printf("\""); i++; break; case 'X' : takeoutfunnies(tal->mmemo.memo.text); /* fall thru */ case 'x' : if (tal->mmemo.memo.text != NULL) printf("%s", tal->mmemo.memo.text); i++; break; case 'C' : printf("%s", ai.category.name[tal->mmemo.attrib & 0x0F]); i++; break; case 'N' : /* normal output */ printf("%s\n", tal->mmemo.memo.text); i++; break; default: /* one letter ones */ printf("%c", formatM[i+1]); i++; break; } /* switch one letter ones */ } /* fi */ } /* for */ printf("\n"); } /* end if deleted */ } /* end for tal= */ free_MemoList(&al); return EXIT_SUCCESS; } int main(int argc, char *argv[]) { int i; time_t ltime; struct tm *now; /* fill dump format with default */ formatD="+D%N"; formatM="+M%N"; formatA="+A%N"; formatT="+T%N"; dumpD = FALSE; dumpI = FALSE; dumpN = FALSE; Nyear = 1997; Nmonth = 12; Nday = 31; dumpA = FALSE; dumpM = FALSE; dumpT = FALSE; /* enable internationalization(i18n) before printing any output */ #if defined(ENABLE_NLS) # ifdef HAVE_LOCALE_H setlocale(LC_ALL, ""); # endif bindtextdomain(EPN, LOCALEDIR); textdomain(EPN); #endif /* If called with no arguments then print usage information */ if (argc == 1) { fprint_jpd_usage_string(stderr); exit(0); } /* process command line options */ for (i=1; itm_year; Nmonth= 1+now->tm_mon; Nday = now->tm_mday; } else { Nyear = (argv[i][2]-'0')*1000+(argv[i][3]-'0')*100+(argv[i][4]-'0')*10 +argv[i][5]-'0'; Nmonth= (argv[i][7]-'0')*10+(argv[i][8]-'0'); Nday = (argv[i][10]-'0')*10+(argv[i][11]-'0'); } #ifdef JDUMP_DEBUG printf("-N option: year=%d,month=%d,day=%d\n", Nyear, Nmonth, Nday); #endif } if (!strncasecmp(argv[i], "-A", 2)) { dumpA = TRUE; } if (!strncasecmp(argv[i], "-T", 2)) { dumpT = TRUE; } if (!strncasecmp(argv[i], "-M", 2)) { dumpM = TRUE; } if (!strncasecmp(argv[i], "-f", 2)) { puts("+format GENERAL string:"); puts("%% prints a %"); puts("%n prints a newline"); puts("%t prints a tab"); puts("%q prints a \'"); puts("%Q prints a \""); puts("%a prints appointment/todo description"); puts("%A prints appointment/todo description CR,LF,\',\",//,` removed"); puts("%x prints attached note"); puts("%X prints attached note CR,LF,etc removed"); puts("GENERAL date&time fields for value of %b see below:"); puts("%bm prints month 00-12"); puts("%bd prints day 01-31"); puts("%by prints year 00-99"); puts("%bY prints year 1970-...."); puts("%bX prints years since 1900 00-999"); puts("%bD prints mm/dd/yy"); puts("%bH prints hour 00-23"); puts("%bk prints hour 0-23"); puts("%bI prints hour 01-12"); puts("%bl prints hour 1-12"); puts("%bM prints minute 00-59"); puts("%bp prints AM or PM"); puts("%bT prints HH:MM HH=00-23"); puts("%br prints hh:mm [A|P]M hh=01-12"); puts("%bh prints month Jan-Dec"); puts("%bb prints month Jan-Dec"); puts("%bB prints month January-December"); printf("+D Datebook SPECIFIC strings (Default is %s):\n", formatD); puts("if %b=%b then begin date/time, if %b=%e then end date/time"); puts("%N prints start-date,start-time,end-date,end-time,\"description\""); puts("%w prints 1 if alarm on else prints 0"); puts("%v prints nr of advance alarm units"); puts("%u prints unit of advance m(inute), h(our), d(ay)"); printf("+A Address SPECIFIC strings (Default is %s):\n", formatA); puts("%N prints every field from last name to note on a separate line"); puts("%C prints category of address as text"); puts("%l last name"); puts("%f first name"); puts("%c company"); puts("%p phone1, %p1 phone1, %p2 phone2, %p3 phone3, %p4 phone4 %p5 phone5"); puts("%e phone label1, %e1 phone label1, %e2 phone label2, %e3 phone label3, %e4 phone label4 %e5 phone label5"); puts("%a address"); puts("%T town/city"); puts("%s state"); puts("%z zip"); puts("%u country"); puts("%m title"); puts("%U1 user defined 1, %U2-%U4"); puts("%x prints memo"); puts("%X prints memo CR,LF,etc removed"); printf("+T Todo SPECIFIC strings (Default is %s):\n", formatT); puts("if %b=%d then due date/time"); puts("%N prints completed,priority,indefinite,due-date,\"description\""); puts("%c prints 1 if completed else 0"); puts("%i prints 1 if indefinite else 0"); puts("%p prints priority of todo item"); printf("+M memo SPECIFIC strings (Default is %s):\n", formatM); puts("%N prints each memo separated by a blank line"); puts("%x prints memo"); puts("%X prints memo CR,LF,etc removed"); puts("%C prints category of memo as text"); exit(0); } /* end printing format usage */ } /* end for over argc */ pref_init(); pref_read_rc_file(); if (otherconv_init()) { printf("Error: could not set encoding\n"); return EXIT_FAILURE; } /* dump selected database */ if (dumpD) { dumpbook(); } if (dumpI) { dumpical(); } if (dumpA) { dumpaddress(); } if (dumpT) { dumptodo(); } if (dumpM) { dumpmemo(); } /* clean up */ otherconv_free(); return EXIT_SUCCESS; } jpilot-1.8.2/print_headers.h0000664000175000017500000000230012320101153012725 00000000000000/******************************************************************************* * print_headers.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001 by Colin Brough * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ void print_common_prolog(FILE *f); void print_common_setup(FILE *f); void print_common_header(FILE *f); void print_week_header(FILE *f); void print_month_header(FILE *f); void print_day_header(FILE *f); void print_todo_header(FILE *f); jpilot-1.8.2/configure0000775000175000017500000207044212336026322011665 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for jpilot 1.8.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='jpilot' PACKAGE_TARNAME='jpilot' PACKAGE_VERSION='1.8.2' PACKAGE_STRING='jpilot 1.8.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS ABILIB JPILOT_DIALER_FALSE JPILOT_DIALER_TRUE MAKE_SYNCTIME_FALSE MAKE_SYNCTIME_TRUE MAKE_EXPENSE_FALSE MAKE_EXPENSE_TRUE MAKE_KEYRING_FALSE MAKE_KEYRING_TRUE OPENSSL_LIBS LIBGCRYPT_LIBS LIBGCRYPT_CFLAGS LIBGCRYPT_CONFIG PILOT_FLAGS PILOT_LIBS GTK_LIBS GTK_CFLAGS PKG_CONFIG PROGNAME POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS XGETTEXT_015 GMSGFMT_015 MSGFMT_015 GETTEXT_PACKAGE LIBTOOL_DEPS CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP LIBTOOL CUT GREP SED DATADIRNAME ALL_LINGUAS INTLTOOL_PERL GMSGFMT MSGFMT MSGMERGE XGETTEXT INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE USE_NLS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_nls enable_static enable_shared with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_rpath with_libiconv_prefix with_libintl_prefix enable_plugins enable_private enable_datebk enable_manana enable_prometheon enable_alarm_shell_danger enable_stock_buttons enable_gtktest with_pilot_prefix enable_pl_test with_libgcrypt_prefix with_openssl with_with_flock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures jpilot 1.8.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/jpilot] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of jpilot 1.8.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-nls do not use Native Language Support --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath do not hardcode runtime library paths --disable-plugins Do not compile plugin support --disable-private Do not use private records feature (password not needed to see private records) --disable-datebk Disable Datebk support --disable-manana Disable Manana support --enable-prometheon For use with Prometheon: http://www.prometheon.net --enable-alarm-shell-danger Allow alarm descriptions and notes to be used in alarm shell commands --disable-stock-buttons Disable stock buttons (icons on GUI buttons) --disable-gtktest do not try to compile and run a test GTK+ program --disable-pl-test Do not try to compile a test pilot-link program Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pilot-prefix=PFX Prefix to top level of pilot-link files (e.g., = /usr/local if the pilot-link includes are in /usr/local/include and libs are in /usr/local/lib) --with-libgcrypt-prefix=PFX prefix where LIBGCRYPT is installed (optional) --with-openssl Use OpenSSL instead of GNU libgcrypt --with-flock Substitute flock instead of fnctl for file locking (for NFS) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF jpilot configure 1.8.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by jpilot $as_me 1.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='jpilot' VERSION='1.8.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # determine build host ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5 $as_echo_n "checking for strerror in -lcposix... " >&6; } if ${ac_cv_lib_cposix_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_cposix_strerror=yes else ac_cv_lib_cposix_strerror=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5 $as_echo "$ac_cv_lib_cposix_strerror" >&6; } if test "x$ac_cv_lib_cposix_strerror" = xyes; then : LIBS="$LIBS -lcposix" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n ""; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= " >&5 $as_echo_n "checking for intltool >= ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : DATADIRNAME=share else DATADIRNAME=lib fi ;; *) DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # Extract the first word of "sed", so it can be a program name with args. set dummy sed; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else case $SED in [\\/]* | ?:[\\/]*) ac_cv_path_SED="$SED" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SED" && ac_cv_path_SED=" as_fn_error $? "sed is required for configure script" "$LINENO" 5 " ;; esac fi SED=$ac_cv_path_SED if test -n "$SED"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 $as_echo "$SED" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "grep", so it can be a program name with args. set dummy grep; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else case $GREP in [\\/]* | ?:[\\/]*) ac_cv_path_GREP="$GREP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GREP" && ac_cv_path_GREP=" as_fn_error $? "grep is required for configure script" "$LINENO" 5 " ;; esac fi GREP=$ac_cv_path_GREP if test -n "$GREP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 $as_echo "$GREP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "cut", so it can be a program name with args. set dummy cut; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CUT+:} false; then : $as_echo_n "(cached) " >&6 else case $CUT in [\\/]* | ?:[\\/]*) ac_cv_path_CUT="$CUT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CUT" && ac_cv_path_CUT=" as_fn_error $? "cut is required for configure script" "$LINENO" 5 " ;; esac fi CUT=$ac_cv_path_CUT if test -n "$CUT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5 $as_echo "$CUT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi enable_dlopen=yes case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: ALL_LINGUAS="ca cs da de es fr it ja ko nl nb pt_BR ru rw sv tr uk vi zh_CN zh_TW" GETTEXT_PACKAGE=jpilot DATADIRNAME=share mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" \ && { test -f "$additional_libdir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then found_dir="$additional_libdir" if test -f "$additional_libdir/lib$name.$shlibext"; then found_so="$additional_libdir/lib$name.$shlibext" else found_so="$additional_libdir/lib$name.dll.a" fi if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" \ && { test -f "$dir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$dir/lib$name.dll.a"; }; }; then found_dir="$dir" if test -f "$dir/lib$name.$shlibext"; then found_so="$dir/lib$name.$shlibext" else found_so="$dir/lib$name.dll.a" fi if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" \ && { test -f "$additional_libdir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then found_dir="$additional_libdir" if test -f "$additional_libdir/lib$name.$shlibext"; then found_so="$additional_libdir/lib$name.$shlibext" else found_so="$additional_libdir/lib$name.dll.a" fi if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" \ && { test -f "$dir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$dir/lib$name.dll.a"; }; }; then found_dir="$dir" if test -f "$dir/lib$name.$shlibext"; then found_so="$dir/lib$name.$shlibext" else found_so="$dir/lib$name.dll.a" fi if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" if test "x$MSGFMT" = "xno"; then if test "x$GMSGFMT" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: No gettext found" >&5 $as_echo "No gettext found" >&6; } as_fn_error $? "Either install gettext or use 'configure --disable-nls'" "$LINENO" 5 fi fi ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : else as_fn_error $? "gettext requires locale.h. Install locale.h or disable language support with 'configure --disable-nls'" "$LINENO" 5 fi # Check whether --enable-plugins was given. if test "${enable_plugins+set}" = set; then : enableval=$enable_plugins; enable_plugins=$enableval else enable_plugins=yes fi plugin_support=no if test "x$enable_plugins" = "xyes"; then for ac_func in dlopen do : ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLOPEN 1 _ACEOF fi done if test "x$ac_cv_func_dlopen" = "xyes"; then have_dlopen=yes else for lib in dl; do as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_dlopen" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -l$lib" >&5 $as_echo_n "checking for dlopen in -l$lib... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : LIBS="$LIBS -ldl"; have_dlopen=yes; break fi done fi if test "x$have_dlopen" = "xyes"; then $as_echo "#define ENABLE_PLUGINS 1" >>confdefs.h plugin_support="yes" ## AC_SUBST(plugin_support) ## %RW: not apparently used anywhere else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Could not find dlopen - plugin support disabled" >&5 $as_echo "Could not find dlopen - plugin support disabled" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Plugin support disabled by configure options" >&5 $as_echo "Plugin support disabled by configure options" >&6; } fi # Check whether --enable-private was given. if test "${enable_private+set}" = set; then : enableval=$enable_private; enable_private=$enableval else enable_private=yes fi if test "$enable_private" = "yes"; then $as_echo "#define ENABLE_PRIVATE 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Private record support disabled by configure options" >&5 $as_echo "Private record support disabled by configure options" >&6; } fi # Check whether --enable-datebk was given. if test "${enable_datebk+set}" = set; then : enableval=$enable_datebk; enable_datebk=$enableval else enable_datebk=yes fi if test "$enable_datebk" = "yes"; then $as_echo "#define ENABLE_DATEBK 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Datebk support disabled by configure options" >&5 $as_echo "Datebk support disabled by configure options" >&6; } fi # Check whether --enable-manana was given. if test "${enable_manana+set}" = set; then : enableval=$enable_manana; enable_manana=$enableval else enable_manana=yes fi if test "$enable_manana" = "yes"; then $as_echo "#define ENABLE_MANANA 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Manana support disabled by configure options" >&5 $as_echo "Manana support disabled by configure options" >&6; } fi # Check whether --enable-prometheon was given. if test "${enable_prometheon+set}" = set; then : enableval=$enable_prometheon; enable_prometheon=$enableval else enable_prometheon=no fi if test "$enable_prometheon" = "yes"; then $as_echo "#define ENABLE_PROMETHEON 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define PROGNAME "copilot" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: result: Prometheon support enabled" >&5 $as_echo "Prometheon support enabled" >&6; } else cat >>confdefs.h <<_ACEOF #define PROGNAME "jpilot" _ACEOF fi # Check whether --enable-alarm-shell-danger was given. if test "${enable_alarm_shell_danger+set}" = set; then : enableval=$enable_alarm_shell_danger; enable_alarm_shell_danger=$enableval else enable_alarm_shell_danger=no; fi if test "$enable_alarm_shell_danger" = "yes"; then $as_echo "#define ENABLE_ALARM_SHELL_DANGER 1" >>confdefs.h fi # Check whether --enable-stock_buttons was given. if test "${enable_stock_buttons+set}" = set; then : enableval=$enable_stock_buttons; enable_stock_buttons=$enableval else enable_stock_buttons=yes fi if test "x$enable_stock_buttons" = "xyes"; then $as_echo "#define ENABLE_STOCK_BUTTONS 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: stock buttons enabled by configure options" >&5 $as_echo "stock buttons enabled by configure options" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: stock buttons disabled by configure options" >&5 $as_echo "stock buttons disabled by configure options" >&6; } fi # Check whether --enable-gtktest was given. if test "${enable_gtktest+set}" = set; then : enableval=$enable_gtktest; else enable_gtktest=yes fi pkg_config_args=gtk+-2.0 for module in . do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=2.0.3 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 $as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" rm -f conf.gtktest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_gtk=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 $as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" as_fn_error $? "*** GTK >= 2.0.3 not found ***" "$LINENO" 5 fi rm -f conf.gtktest pilot_prefix="" # Check whether --with-pilot_prefix was given. if test "${with_pilot_prefix+set}" = set; then : withval=$with_pilot_prefix; fi if test "x$with_pilot_prefix" != "x"; then pilot_prefix=$with_pilot_prefix fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pilot-link header files" >&5 $as_echo_n "checking for pilot-link header files... " >&6; } pilotinclude=${FORCE_PILOT_INCLUDES:-no} if test "$pilotinclude" = "no" ; then for pilot_incl in $pilot_prefix/include /usr/include /usr/local/include \ /usr/extra/pilot/include /usr/include/libpisock; do if test -r "$pilot_incl/pi-version.h" ; then pilotinclude=yes PILOT_FLAGS="$PILOT_FLAGS -I$pilot_incl" break fi done fi if test "$pilotinclude" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Could not find the pilot-link header files" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found at $pilot_incl" >&5 $as_echo "found at $pilot_incl" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pilot library files" >&5 $as_echo_n "checking for pilot library files... " >&6; } pilotlibs=${FORCE_PILOT_LIBS:-no} PILOT_LIBS="-lpisock" if test "$pilotlibs" = "no" ; then for pilot_libs in $pilot_prefix/lib /usr/lib /usr/local/lib/ \ /usr/extra/pilot/lib $pilot_prefix/lib64 /usr/lib64 ; do if test -r $pilot_libs/libpisock.so >/dev/null 2>&1 ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi if test -r "$pilot_libs/libpisock.a" ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi if test -r "$pilot_libs/libpisock.sl" ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi done fi if test "$pilotlibs" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Could not find the pilot-link libraries" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found at $pilot_libs" >&5 $as_echo "found at $pilot_libs" >&6; } fi ac_fn_c_check_func "$LINENO" "gethostent" "ac_cv_func_gethostent" if test "x$ac_cv_func_gethostent" = xyes; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostent in -lnsl" >&5 $as_echo_n "checking for gethostent in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostent (); int main () { return gethostent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostent=yes else ac_cv_lib_nsl_gethostent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostent" >&5 $as_echo "$ac_cv_lib_nsl_gethostent" >&6; } if test "x$ac_cv_lib_nsl_gethostent" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNSL 1 _ACEOF LIBS="-lnsl $LIBS" fi fi ac_fn_c_check_func "$LINENO" "setsockopt" "ac_cv_func_setsockopt" if test "x$ac_cv_func_setsockopt" = xyes; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5 $as_echo_n "checking for setsockopt in -lsocket... " >&6; } if ${ac_cv_lib_socket_setsockopt+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char setsockopt (); int main () { return setsockopt (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_setsockopt=yes else ac_cv_lib_socket_setsockopt=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5 $as_echo "$ac_cv_lib_socket_setsockopt" >&6; } if test "x$ac_cv_lib_socket_setsockopt" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSOCKET 1 _ACEOF LIBS="-lsocket $LIBS" fi fi # Check whether --enable-pl-test was given. if test "${enable_pl_test+set}" = set; then : enableval=$enable_pl_test; enable_pl_test=$enableval else enable_pl_test=yes fi if test "x$enable_pl_test" = "xyes"; then pilotcompile=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if I can compile a pilot link program" >&5 $as_echo_n "checking to see if I can compile a pilot link program... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PILOT_FLAGS" save_LIBS="$LIBS" LIBS="$LIBS $PILOT_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "pi-version.h" #include "pi-socket.h" int main () { pi_close (0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : pilotcompile=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$pilotcompile" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Could not compile a test pilot-link program" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if I can run a pilot-link program" >&5 $as_echo_n "checking if I can run a pilot-link program... " >&6; } if test "$cross_compiling" = yes; then : error else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() { return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? " * Can not run a pilot-link test program * Make sure libpisock can be found by ld * Check /etc/ld.so.conf and run ldconfig * This test can be disabled by the --disable-pl-test option" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking pilot-link version" >&5 $as_echo_n "checking pilot-link version... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PILOT_FLAGS" save_LIBS="$LIBS" LIBS="$LIBS $PILOT_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { exit(0); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else as_fn_error $? "pilot-link header pi-version.h not found" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext pl_version_check_done=no; pl_version=`$GREP "define PILOT_LINK_VERSION" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_major=`$GREP "define PILOT_LINK_MAJOR" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_minor=`$GREP "define PILOT_LINK_MINOR" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_patch=`$GREP "define PILOT_LINK_PATCH" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3 | $SED -e 's/"//g'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: pi-version indicates $pl_version.$pl_major.$pl_minor" >&5 $as_echo "pi-version indicates $pl_version.$pl_major.$pl_minor" >&6; } if test $pl_version -eq 0 ; then if test $pl_major -ge 12 ; then if test $pl_minor -ge 5 ; then pl_version_check_done=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: pilot-link has USB" >&5 $as_echo "pilot-link has USB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: pilot-link has card support (>12.0)" >&5 $as_echo "pilot-link has card support (>12.0)" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: pilot-link has Calendar support (>12.5)" >&5 $as_echo "pilot-link has Calendar support (>12.5)" >&6; } fi fi fi if test $pl_version_check_done != yes; then as_fn_error $? "pilot-link version >= 0.12.5 is required" "$LINENO" 5 fi CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" crypto_lib="none" # Check whether --with-libgcrypt-prefix was given. if test "${with_libgcrypt_prefix+set}" = set; then : withval=$with_libgcrypt_prefix; libgcrypt_config_prefix="$withval" else libgcrypt_config_prefix="" fi if test x$libgcrypt_config_prefix != x ; then if test x${LIBGCRYPT_CONFIG+set} != xset ; then LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config fi fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}libgcrypt-config", so it can be a program name with args. set dummy ${ac_tool_prefix}libgcrypt-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBGCRYPT_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBGCRYPT_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBGCRYPT_CONFIG="$LIBGCRYPT_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBGCRYPT_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBGCRYPT_CONFIG=$ac_cv_path_LIBGCRYPT_CONFIG if test -n "$LIBGCRYPT_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGCRYPT_CONFIG" >&5 $as_echo "$LIBGCRYPT_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_LIBGCRYPT_CONFIG"; then ac_pt_LIBGCRYPT_CONFIG=$LIBGCRYPT_CONFIG # Extract the first word of "libgcrypt-config", so it can be a program name with args. set dummy libgcrypt-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_LIBGCRYPT_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_LIBGCRYPT_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_LIBGCRYPT_CONFIG="$ac_pt_LIBGCRYPT_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_LIBGCRYPT_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_LIBGCRYPT_CONFIG=$ac_cv_path_ac_pt_LIBGCRYPT_CONFIG if test -n "$ac_pt_LIBGCRYPT_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LIBGCRYPT_CONFIG" >&5 $as_echo "$ac_pt_LIBGCRYPT_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_LIBGCRYPT_CONFIG" = x; then LIBGCRYPT_CONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIBGCRYPT_CONFIG=$ac_pt_LIBGCRYPT_CONFIG fi else LIBGCRYPT_CONFIG="$ac_cv_path_LIBGCRYPT_CONFIG" fi tmp=1:1.2.0 if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then req_libgcrypt_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'` min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'` else req_libgcrypt_api=0 min_libgcrypt_version="$tmp" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBGCRYPT - version >= $min_libgcrypt_version" >&5 $as_echo_n "checking for LIBGCRYPT - version >= $min_libgcrypt_version... " >&6; } ok=no if test "$LIBGCRYPT_CONFIG" != "no" ; then req_major=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\1/'` req_minor=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\2/'` req_micro=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\3/'` libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version` major=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/'` minor=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/'` micro=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/'` if test "$major" -gt "$req_major"; then ok=yes else if test "$major" -eq "$req_major"; then if test "$minor" -gt "$req_minor"; then ok=yes else if test "$minor" -eq "$req_minor"; then if test "$micro" -ge "$req_micro"; then ok=yes fi fi fi fi fi fi if test $ok = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($libgcrypt_config_version)" >&5 $as_echo "yes ($libgcrypt_config_version)" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test $ok = yes; then # If we have a recent libgcrypt, we should also check that the # API is compatible if test "$req_libgcrypt_api" -gt 0 ; then tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0` if test "$tmp" -gt 0 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBGCRYPT API version" >&5 $as_echo_n "checking LIBGCRYPT API version... " >&6; } if test "$req_libgcrypt_api" -eq "$tmp" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5 $as_echo "okay" >&6; } else ok=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: does not match. want=$req_libgcrypt_api got=$tmp" >&5 $as_echo "does not match. want=$req_libgcrypt_api got=$tmp" >&6; } fi fi fi fi if test $ok = yes; then LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags` LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs` : libgcrypt_config_host=`$LIBGCRYPT_CONFIG --host 2>/dev/null || echo none` if test x"$libgcrypt_config_host" != xnone ; then if test x"$libgcrypt_config_host" != x"$host" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** *** The config script $LIBGCRYPT_CONFIG was *** built for $libgcrypt_config_host and thus may not match the *** used host $host. *** You may want to use the configure option --with-libgcrypt-prefix *** to specify a matching config script. ***" >&5 $as_echo "$as_me: WARNING: *** *** The config script $LIBGCRYPT_CONFIG was *** built for $libgcrypt_config_host and thus may not match the *** used host $host. *** You may want to use the configure option --with-libgcrypt-prefix *** to specify a matching config script. ***" >&2;} fi fi else LIBGCRYPT_CFLAGS="" LIBGCRYPT_LIBS="" : fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcry_md_hash_buffer in -lgcrypt" >&5 $as_echo_n "checking for gcry_md_hash_buffer in -lgcrypt... " >&6; } if ${ac_cv_lib_gcrypt_gcry_md_hash_buffer+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgcrypt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gcry_md_hash_buffer (); int main () { return gcry_md_hash_buffer (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gcrypt_gcry_md_hash_buffer=yes else ac_cv_lib_gcrypt_gcry_md_hash_buffer=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcrypt_gcry_md_hash_buffer" >&5 $as_echo "$ac_cv_lib_gcrypt_gcry_md_hash_buffer" >&6; } if test "x$ac_cv_lib_gcrypt_gcry_md_hash_buffer" = xyes; then : have_libgcrypt=1 else have_libgcrypt=0 fi # Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; have_libgcrypt="0" fi if test "$have_libgcrypt" = "0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSLeay_version in -lcrypto" >&5 $as_echo_n "checking for SSLeay_version in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_SSLeay_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char SSLeay_version (); int main () { return SSLeay_version (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_SSLeay_version=yes else ac_cv_lib_crypto_SSLeay_version=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_SSLeay_version" >&5 $as_echo "$ac_cv_lib_crypto_SSLeay_version" >&6; } if test "x$ac_cv_lib_crypto_SSLeay_version" = xyes; then : have_libcrypto=1 else have_libcrypto=0 fi else $as_echo "#define HAVE_LIBGCRYPT 1" >>confdefs.h crypto_lib="libgcrypt" fi for ac_header in fcntl.h langinfo.h locale.h stdlib.h string.h sys/socket.h sys/time.h sys/wait.h unistd.h utime.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Headers required for plugins for ac_header in netinet/in.h do : ac_fn_c_check_header_mongrel "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" if test "x$ac_cv_header_netinet_in_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NETINET_IN_H 1 _ACEOF have_netinet=1 else have_netinet=0 fi done if test "$plugin_support" = "yes" -a "$have_netinet" = "0"; then plugin_support = "no" fi # jpilot-dial required headers for ac_header in termio.h do : ac_fn_c_check_header_mongrel "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default" if test "x$ac_cv_header_termio_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TERMIO_H 1 _ACEOF have_termio=1 else have_termio=0 fi done for ac_header in openssl/md5.h do : ac_fn_c_check_header_mongrel "$LINENO" "openssl/md5.h" "ac_cv_header_openssl_md5_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_md5_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENSSL_MD5_H 1 _ACEOF have_openssl_md5=1 else have_openssl_md5=0 fi done for ac_header in openssl/des.h do : ac_fn_c_check_header_mongrel "$LINENO" "openssl/des.h" "ac_cv_header_openssl_des_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_des_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENSSL_DES_H 1 _ACEOF have_openssl_des=1 else have_openssl_des=0 fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 $as_echo_n "checking for uid_t in sys/types.h... " >&6; } if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1; then : ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 $as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then $as_echo "#define uid_t int" >>confdefs.h $as_echo "#define gid_t int" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # _NL_TIME_FIRST_WEEKDAY is an enum and not a define { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _NL_TIME_FIRST_WEEKDAY" >&5 $as_echo_n "checking for _NL_TIME_FIRST_WEEKDAY... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char c; c = *((unsigned char *) nl_langinfo(_NL_TIME_FIRST_WEEKDAY)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : nl_ok=yes else nl_ok=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nl_ok" >&5 $as_echo "$nl_ok" >&6; } if test "$nl_ok" = "yes"; then $as_echo "#define HAVE__NL_TIME_FIRST_WEEKDAY 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 $as_echo_n "checking for working strcoll... " >&6; } if ${ac_cv_func_strcoll_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_strcoll_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || strcoll ("123", "456") >= 0) ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_strcoll_works=yes else ac_cv_func_strcoll_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 $as_echo "$ac_cv_func_strcoll_works" >&6; } if test $ac_cv_func_strcoll_works = yes; then $as_echo "#define HAVE_STRCOLL 1" >>confdefs.h fi #AC_FUNC_MALLOC #AC_FUNC_REALLOC for ac_func in setenv do : ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" if test "x$ac_cv_func_setenv" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SETENV 1 _ACEOF fi done # Check whether --with-with_flock was given. if test "${with_with_flock+set}" = set; then : withval=$with_with_flock; with_flock=yes fi if test "x$with_flock" = "xyes"; then for ac_header in sys/file.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" if test "x$ac_cv_header_sys_file_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_FILE_H 1 _ACEOF $as_echo "#define USE_FLOCK 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using flock instead of fnctl" >&5 $as_echo "Using flock instead of fnctl" >&6; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-flock was given, but sys/file.h was not found See \`config.log' for more details" "$LINENO" 5; } fi done fi make_keyring=no if test "$have_libgcrypt" = "1"; then make_keyring=yes fi if test "$have_libcrypto" = "1"; then if test "$have_openssl_md5" = "1" -a "$have_openssl_des" = "1"; then make_keyring=yes OPENSSL_LIBS=-lcrypto crypto_lib="OpenSSL" fi fi if test "$make_keyring" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSL library not found, Keyring will not be built" >&5 $as_echo "$as_me: WARNING: OpenSSL library not found, Keyring will not be built" >&2;} fi keyring_plugin=no; if test "x$make_keyring" = "xyes" -a "x$plugin_support" = "xyes"; then keyring_plugin=yes; fi if test "x$keyring_plugin" = "xyes"; then MAKE_KEYRING_TRUE= MAKE_KEYRING_FALSE='#' else MAKE_KEYRING_TRUE='#' MAKE_KEYRING_FALSE= fi if test "x$plugin_support" = "xyes"; then MAKE_EXPENSE_TRUE= MAKE_EXPENSE_FALSE='#' else MAKE_EXPENSE_TRUE='#' MAKE_EXPENSE_FALSE= fi if test "x$plugin_support" = "xyes"; then MAKE_SYNCTIME_TRUE= MAKE_SYNCTIME_FALSE='#' else MAKE_SYNCTIME_TRUE='#' MAKE_SYNCTIME_FALSE= fi dialer=no if test "$have_termio" = "1"; then case "${build_os}" in linux-gnu) dialer=yes ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Operating system ${build_os} not supported by jpilot-dialer" >&5 $as_echo "$as_me: WARNING: Operating system ${build_os} not supported by jpilot-dialer" >&2;} ; dialer=no ;; esac fi if test "x$dialer" = "xyes"; then JPILOT_DIALER_TRUE= JPILOT_DIALER_FALSE='#' else JPILOT_DIALER_TRUE='#' JPILOT_DIALER_FALSE= fi if test "x$prefix" = "xNONE"; then cat >>confdefs.h <<_ACEOF #define BASE_DIR "$ac_default_prefix" _ACEOF else cat >>confdefs.h <<_ACEOF #define BASE_DIR "$prefix" _ACEOF fi abilib=$ABILIB if test "x$abilib" = "x"; then cat >>confdefs.h <<_ACEOF #define ABILIB "lib" _ACEOF else cat >>confdefs.h <<_ACEOF #define ABILIB "$abilib" _ACEOF fi ac_config_files="$ac_config_files Makefile Expense/Makefile SyncTime/Makefile KeyRing/Makefile dialer/Makefile m4/Makefile po/Makefile.in icons/Makefile docs/Makefile empty/Makefile jpilot.spec SlackBuild" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${MAKE_KEYRING_TRUE}" && test -z "${MAKE_KEYRING_FALSE}"; then as_fn_error $? "conditional \"MAKE_KEYRING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAKE_EXPENSE_TRUE}" && test -z "${MAKE_EXPENSE_FALSE}"; then as_fn_error $? "conditional \"MAKE_EXPENSE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAKE_SYNCTIME_TRUE}" && test -z "${MAKE_SYNCTIME_FALSE}"; then as_fn_error $? "conditional \"MAKE_SYNCTIME\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${JPILOT_DIALER_TRUE}" && test -z "${JPILOT_DIALER_FALSE}"; then as_fn_error $? "conditional \"JPILOT_DIALER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by jpilot $as_me 1.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ jpilot config.status 1.8.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Expense/Makefile") CONFIG_FILES="$CONFIG_FILES Expense/Makefile" ;; "SyncTime/Makefile") CONFIG_FILES="$CONFIG_FILES SyncTime/Makefile" ;; "KeyRing/Makefile") CONFIG_FILES="$CONFIG_FILES KeyRing/Makefile" ;; "dialer/Makefile") CONFIG_FILES="$CONFIG_FILES dialer/Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "icons/Makefile") CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "empty/Makefile") CONFIG_FILES="$CONFIG_FILES empty/Makefile" ;; "jpilot.spec") CONFIG_FILES="$CONFIG_FILES jpilot.spec" ;; "SlackBuild") CONFIG_FILES="$CONFIG_FILES SlackBuild" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi chmod +x SlackBuild { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: This package is configured for the following features:" >&5 $as_echo "This package is configured for the following features:" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ------------------------------------------------------" >&5 $as_echo "------------------------------------------------------" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling with plugin support.......... $enable_plugins" >&5 $as_echo "Compiling with plugin support.......... $enable_plugins" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling with private record support.. $enable_private" >&5 $as_echo "Compiling with private record support.. $enable_private" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling with Datebk support.......... $enable_datebk" >&5 $as_echo "Compiling with Datebk support.......... $enable_datebk" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling with Manana support.......... $enable_manana" >&5 $as_echo "Compiling with Manana support.......... $enable_manana" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling with Prometheon support...... $enable_prometheon" >&5 $as_echo "Compiling with Prometheon support...... $enable_prometheon" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling Expense plugin............... $plugin_support" >&5 $as_echo "Compiling Expense plugin............... $plugin_support" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling SyncTime plugin.............. $plugin_support" >&5 $as_echo "Compiling SyncTime plugin.............. $plugin_support" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling KeyRing plugin............... $keyring_plugin" >&5 $as_echo "Compiling KeyRing plugin............... $keyring_plugin" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiling dialer add-on................ $dialer" >&5 $as_echo "Compiling dialer add-on................ $dialer" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cryptographic library.................. $crypto_lib" >&5 $as_echo "Cryptographic library.................. $crypto_lib" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: GTK-2 support.......................... yes" >&5 $as_echo "GTK-2 support.......................... yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Stock buttons (icons on buttons in GUI) $enable_stock_buttons" >&5 $as_echo "Stock buttons (icons on buttons in GUI) $enable_stock_buttons" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: NLS support (foreign languages)........ $USE_NLS" >&5 $as_echo "NLS support (foreign languages)........ $USE_NLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compiler Options....................... $CFLAGS" >&5 $as_echo "Compiler Options....................... $CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Prefix directory....................... $prefix" >&5 $as_echo "Prefix directory....................... $prefix" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: pilot-link headers..................... $pilot_incl" >&5 $as_echo "pilot-link headers..................... $pilot_incl" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: USB support enabled.................... yes" >&5 $as_echo "USB support enabled.................... yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: pilot-link version found............... $pl_version.$pl_major.$pl_minor$pl_patch" >&5 $as_echo "pilot-link version found............... $pl_version.$pl_major.$pl_minor$pl_patch" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Now type make to compile" >&5 $as_echo "Now type make to compile" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } jpilot-1.8.2/prefs.h0000664000175000017500000001430012340261240011226 00000000000000/******************************************************************************* * prefs.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __PREFS_H__ #define __PREFS_H__ #include "libplugin.h" #define PREF_RCFILE 0 #define PREF_TIME 1 #define PREF_SHORTDATE 2 #define PREF_LONGDATE 3 #define PREF_FDOW 4 /*First Day Of the Week */ #define PREF_SHOW_DELETED 5 #define PREF_SHOW_MODIFIED 6 #define PREF_TODO_HIDE_COMPLETED 7 #define PREF_DATEBOOK_HIGHLIGHT_DAYS 8 #define PREF_PORT 9 #define PREF_RATE 10 #define PREF_USER 11 #define PREF_USER_ID 12 #define PREF_PC_ID 13 #define PREF_NUM_BACKUPS 14 #define PREF_WINDOW_WIDTH 15 #define PREF_WINDOW_HEIGHT 16 #define PREF_DATEBOOK_PANE 17 #define PREF_ADDRESS_PANE 18 #define PREF_TODO_PANE 19 #define PREF_MEMO_PANE 20 #define PREF_USE_DB3 21 #define PREF_LAST_APP 22 #define PREF_PRINT_THIS_MANY 23 #define PREF_PRINT_ONE_PER_PAGE 24 #define PREF_NUM_BLANK_LINES 25 #define PREF_PRINT_COMMAND 26 #define PREF_CHAR_SET 27 #define PREF_SYNC_DATEBOOK 28 #define PREF_SYNC_ADDRESS 29 #define PREF_SYNC_TODO 30 #define PREF_SYNC_MEMO 31 #define PREF_SYNC_MEMO32 32 #define PREF_ADDRESS_NOTEBOOK_PAGE 33 #define PREF_OUTPUT_HEIGHT 34 #define PREF_OPEN_ALARM_WINDOWS 35 #define PREF_DO_ALARM_COMMAND 36 #define PREF_ALARM_COMMAND 37 #define PREF_REMIND_IN 38 #define PREF_REMIND_UNITS 39 #define PREF_PASSWORD 40 #define PREF_MEMO32_MODE 41 #define PREF_PAPER_SIZE 42 #define PREF_DATEBOOK_EXPORT_FILENAME 43 #define PREF_DATEBOOK_IMPORT_PATH 44 #define PREF_ADDRESS_EXPORT_FILENAME 45 #define PREF_ADDRESS_IMPORT_PATH 46 #define PREF_TODO_EXPORT_FILENAME 47 #define PREF_TODO_IMPORT_PATH 48 #define PREF_MEMO_EXPORT_FILENAME 49 #define PREF_MEMO_IMPORT_PATH 50 #define PREF_MANANA_MODE 51 #define PREF_SYNC_MANANA 52 #define PREF_USE_JOS 53 #define PREF_PHONE_PREFIX1 54 #define PREF_CHECK_PREFIX1 55 #define PREF_PHONE_PREFIX2 56 #define PREF_CHECK_PREFIX2 57 #define PREF_PHONE_PREFIX3 58 #define PREF_CHECK_PREFIX3 59 #define PREF_DIAL_COMMAND 60 #define PREF_DATEBOOK_TODO_PANE 61 #define PREF_DATEBOOK_TODO_SHOW 62 #define PREF_TODO_HIDE_NOT_DUE 63 #define PREF_TODO_COMPLETION_DATE 64 #define PREF_INSTALL_PATH 65 #define PREF_MONTHVIEW_WIDTH 66 #define PREF_MONTHVIEW_HEIGHT 67 #define PREF_WEEKVIEW_WIDTH 68 #define PREF_WEEKVIEW_HEIGHT 69 #define PREF_LAST_DATE_CATEGORY 70 #define PREF_LAST_ADDR_CATEGORY 71 #define PREF_LAST_TODO_CATEGORY 72 #define PREF_LAST_MEMO_CATEGORY 73 #define PREF_MAIL_COMMAND 74 #define PREF_VERSION 75 #define PREF_UTF_ENCODING 76 #define PREF_CONFIRM_FILE_INSTALL 77 #define PREF_TODO_DAYS_DUE 78 #define PREF_TODO_DAYS_TILL_DUE 79 #define PREF_SHOW_TOOLTIPS 80 #define PREF_DATEBOOK_NOTE_PANE 81 #define PREF_DATEBOOK_HI_TODAY 82 #define PREF_DATEBOOK_ANNI_YEARS 83 #define PREF_KEYRING_PANE 84 #define PREF_EXPENSE_PANE 85 /* 0 for Datebook, 1 for Calendar */ #define PREF_DATEBOOK_VERSION 86 /* 0 for Address, 1 for Contacts */ #define PREF_ADDRESS_VERSION 87 /* 0 for Todo, 1 for Tasks */ #define PREF_TODO_VERSION 88 /* 0 for Memo, 1 for Memos, 2 for Memo32 */ #define PREF_MEMO_VERSION 89 #define PREF_CONTACTS_PHOTO_FILENAME 90 #define PREF_TODO_SORT_COLUMN 91 #define PREF_TODO_SORT_ORDER 92 #define PREF_ADDR_SORT_ORDER 93 #define PREF_ADDR_NAME_COL_SZ 94 #define PREF_TODO_NOTE_PANE 95 #define PREF_EXPENSE_SORT_COLUMN 96 #define PREF_EXPENSE_SORT_ORDER 97 #define PREF_KEYR_EXPORT_FILENAME 98 #define PREF_EXTERNAL_EDITOR 99 /* Number of preferences in use */ #define NUM_PREFS 100 /* Maximum number of preferences */ #define MAX_NUM_PREFS 250 /* New code should use MAX_PREF_LEN for clarity over MAX_PREF_VALUE */ #define MAX_PREF_LEN 200 #define MAX_PREF_VALUE 200 #define MAX_PREF_NUM_BACKUPS 99 #define CHAR_SET_LATIN1 0 /* English, European, Latin based languages */ #define CHAR_SET_JAPANESE 1 #define CHAR_SET_1250 2 /* Czech, Polish (Unix: ISO-8859-2) */ #define CHAR_SET_1251 3 /* Russian; palm koi8-r, host win1251 */ #define CHAR_SET_1251_B 4 /* Russian; palm win1251, host koi8-r */ #define CHAR_SET_TRADITIONAL_CHINESE 5 /* Taiwan Chinese */ #define CHAR_SET_KOREAN 6 /* Korean Hangul */ #define CHAR_SET_UTF 7 #define CHAR_SET_1250_UTF 7 /* Czech, Polish (latin2, CP1250) */ #define CHAR_SET_1252_UTF 8 /* Latin European (latin1, CP1252) */ #define CHAR_SET_1253_UTF 9 /* Modern Greek (CP1253) */ #define CHAR_SET_ISO8859_2_UTF 10 /* Czech, Polish (latin2, ISO8859-2) */ #define CHAR_SET_KOI8_R_UTF 11 /* Cyrillic (KOI8-R) */ #define CHAR_SET_1251_UTF 12 /* Cyrillic (CP1251) */ #define CHAR_SET_GBK_UTF 13 /* Chinese (GB2312) */ #define CHAR_SET_SJIS_UTF 14 /* Japanese (SJIS) */ #define CHAR_SET_1255_UTF 15 /* Hebrew (CP1255) */ #define CHAR_SET_BIG5_UTF 16 /* Chinese (BIG-5) */ #define CHAR_SET_949_UTF 17 /* Korean (CP949) */ #define NUM_CHAR_SETS 18 void pref_init(void); int pref_read_rc_file(void); int pref_write_rc_file(void); int get_pref(int which, long *n, const char **ret); int set_pref(int which, long n, const char *string, int save); /* Specialized functions */ int set_pref_possibility(int which, long n, int save); int get_pref_possibility(int which, int n, char *ret); int get_pref_dmy_order(void); void get_pref_hour_ampm(char *datef); int get_pref_time_no_secs(char *datef); int get_pref_time_no_secs_no_ampm(char *datef); /* * Get the preference value as long. If failed to do so, return the * specified default. */ long get_pref_int_default(int which, long defval); int make_pref_menu(GtkWidget **pref_menu, int pref_num); #endif jpilot-1.8.2/jpilot.desktop0000664000175000017500000000025112320101153012624 00000000000000[Desktop Entry] Name=J-Pilot Comment=Desktop organizer application for the Palm Pilot Exec=jpilot Icon=jpilot.xpm Terminal=false Type=Application Categories=Office;PDA; jpilot-1.8.2/config.h.in0000664000175000017500000001205512336026321011772 00000000000000/* config.h.in. Generated from configure.in by autoheader. */ /* ABILIB */ #undef ABILIB /* BASE_DIR */ #undef BASE_DIR /* Datebook description and note allowed in shell commands */ #undef ENABLE_ALARM_SHELL_DANGER /* DateBk support */ #undef ENABLE_DATEBK /* Manana support */ #undef ENABLE_MANANA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* plugin support */ #undef ENABLE_PLUGINS /* Private record support */ #undef ENABLE_PRIVATE /* Prometheon support */ #undef ENABLE_PROMETHEON /* Use GTK2 stock buttons */ #undef ENABLE_STOCK_BUTTONS /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H /* Use GNU libgcrypt instead of OpenSSL */ #undef HAVE_LIBGCRYPT /* Define to 1 if you have the `nsl' library (-lnsl). */ #undef HAVE_LIBNSL /* Define to 1 if you have the `socket' library (-lsocket). */ #undef HAVE_LIBSOCKET /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_DES_H /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_MD5_H /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcoll' function and it is properly defined. */ #undef HAVE_STRCOLL /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_UTIME_H /* Define if _NL_TIME_FIRST_WEEKDAY is available */ #undef HAVE__NL_TIME_FIRST_WEEKDAY /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* program name */ #undef PROGNAME /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Using flock instead of fnctl */ #undef USE_FLOCK /* Version number of package */ #undef VERSION /* Define to `int' if doesn't define. */ #undef gid_t /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if doesn't define. */ #undef uid_t jpilot-1.8.2/NEWS0000664000175000017500000000000012320101153010417 00000000000000jpilot-1.8.2/search_gui.c0000664000175000017500000005140612340261240012223 00000000000000/******************************************************************************* * search_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "prefs.h" #include "log.h" #include "datebook.h" #include "calendar.h" #include "address.h" #include "todo.h" #include "memo.h" #ifdef ENABLE_PLUGINS # include "plugins.h" #endif /********************************* Constants **********************************/ #define SEARCH_MAX_COLUMN_LEN 80 /******************************* Global vars **********************************/ static struct search_record *search_rl = NULL; static GtkWidget *case_sense_checkbox; static GtkWidget *window = NULL; static GtkWidget *entry = NULL; static GtkAccelGroup *accel_group = NULL; static int clist_row_selected; /****************************** Prototypes ************************************/ static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); /****************************** Main Code *************************************/ static int datebook_search_sort_compare(const void *v1, const void *v2) { CalendarEventList **cel1, **cel2; struct CalendarEvent *ce1, *ce2; time_t time1, time2; cel1=(CalendarEventList **)v1; cel2=(CalendarEventList **)v2; ce1=&((*cel1)->mcale.cale); ce2=&((*cel2)->mcale.cale); time1 = mktime(&(ce1->begin)); time2 = mktime(&(ce2->begin)); return(time2 - time1); } static int search_datebook(const char *needle, GtkWidget *clist) { gchar *empty_line[] = { "","" }; CalendarEventList *ce_list; CalendarEventList *temp_cel; int found, count; int case_sense; char str[202]; char str2[SEARCH_MAX_COLUMN_LEN+2]; char date_str[52]; char datef[52]; const char *svalue1; struct search_record *new_sr; long datebook_version=0; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); /* Search Appointments */ ce_list = NULL; get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); if (ce_list==NULL) { return 0; } /* Sort returned results according to date rather than just HH:MM */ calendar_sort(&ce_list, datebook_search_sort_compare); count = 0; case_sense = GTK_TOGGLE_BUTTON(case_sense_checkbox)->active; for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { found = 0; if ( (temp_cel->mcale.cale.description) && (temp_cel->mcale.cale.description[0]) ) { if (jp_strstr(temp_cel->mcale.cale.description, needle, case_sense)) { found = 1; } } if ( !found && (temp_cel->mcale.cale.note) && (temp_cel->mcale.cale.note[0]) ) { if (jp_strstr(temp_cel->mcale.cale.note, needle, case_sense )) { found = 2; } } if (datebook_version) { if ( !found && (temp_cel->mcale.cale.location) && (temp_cel->mcale.cale.location[0]) ) { if (jp_strstr(temp_cel->mcale.cale.location, needle, case_sense )) { found = 3; } } } if (found) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); if (datebook_version==0) { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("datebook")); } else { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("calendar")); } /* get the date */ get_pref(PREF_SHORTDATE, NULL, &svalue1); if (svalue1 == NULL) { strcpy(datef, "%x"); } else { strncpy(datef, svalue1, sizeof(datef)); } strftime(date_str, sizeof(date_str), datef, &temp_cel->mcale.cale.begin); date_str[sizeof(date_str)-1]='\0'; if (found == 1) { g_snprintf(str, sizeof(str), "%s\t%s", date_str, temp_cel->mcale.cale.description); } else if (found == 2) { g_snprintf(str, sizeof(str), "%s\t%s", date_str, temp_cel->mcale.cale.note); } else { g_snprintf(str, sizeof(str), "%s\t%s", date_str, temp_cel->mcale.cale.location); } lstrncpy_remove_cr_lfs(str2, str, SEARCH_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), 0, 1, str2); /* Add to the search list */ new_sr = malloc(sizeof(struct search_record)); new_sr->app_type = DATEBOOK; new_sr->plugin_flag = 0; new_sr->unique_id = temp_cel->mcale.unique_id; new_sr->next = search_rl; search_rl = new_sr; gtk_clist_set_row_data(GTK_CLIST(clist), 0, new_sr); count++; } } jp_logf(JP_LOG_DEBUG, "calling free_CalendarEventList\n"); free_CalendarEventList(&ce_list); return count; } static int search_address_or_contacts(const char *needle, GtkWidget *clist) { gchar *empty_line[] = { "","" }; char str2[SEARCH_MAX_COLUMN_LEN+2]; AddressList *addr_list; ContactList *cont_list; ContactList *temp_cl; struct search_record *new_sr; int i, count; int case_sense; long address_version=0; get_pref(PREF_ADDRESS_VERSION, &address_version, NULL); /* Get addresses and move to a contacts structure, or get contacts directly */ if (address_version==0) { addr_list = NULL; get_addresses2(&addr_list, SORT_ASCENDING, 2, 2, 2, CATEGORY_ALL); copy_addresses_to_contacts(addr_list, &cont_list); free_AddressList(&addr_list); } else { cont_list = NULL; get_contacts2(&cont_list, SORT_ASCENDING, 2, 2, 2, CATEGORY_ALL); } if (cont_list==NULL) { return 0; } count = 0; case_sense = GTK_TOGGLE_BUTTON(case_sense_checkbox)->active; for (temp_cl = cont_list; temp_cl; temp_cl=temp_cl->next) { for (i=0; imcont.cont.entry[i]) { if ( jp_strstr(temp_cl->mcont.cont.entry[i], needle, case_sense) ) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); if (address_version==0) { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("address")); } else { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("contact")); } lstrncpy_remove_cr_lfs(str2, temp_cl->mcont.cont.entry[i], SEARCH_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), 0, 1, str2); /* Add to the search list */ new_sr = malloc(sizeof(struct search_record)); new_sr->app_type = ADDRESS; new_sr->plugin_flag = 0; new_sr->unique_id = temp_cl->mcont.unique_id; new_sr->next = search_rl; search_rl = new_sr; gtk_clist_set_row_data(GTK_CLIST(clist), 0, new_sr); count++; break; } } } } jp_logf(JP_LOG_DEBUG, "calling free_ContactList\n"); free_ContactList(&cont_list); return count; } static int search_todo(const char *needle, GtkWidget *clist) { gchar *empty_line[] = { "","" }; char str2[SEARCH_MAX_COLUMN_LEN+2]; ToDoList *todo_list; ToDoList *temp_todo; struct search_record *new_sr; int found, count; int case_sense; /* Search Appointments */ todo_list = NULL; get_todos2(&todo_list, SORT_DESCENDING, 2, 2, 2, 1, CATEGORY_ALL); if (todo_list==NULL) { return 0; } count = 0; case_sense = GTK_TOGGLE_BUTTON(case_sense_checkbox)->active; for (temp_todo = todo_list; temp_todo; temp_todo=temp_todo->next) { found = 0; if ( (temp_todo->mtodo.todo.description) && (temp_todo->mtodo.todo.description[0]) ) { if ( jp_strstr(temp_todo->mtodo.todo.description, needle, case_sense) ) { found = 1; } } if ( !found && (temp_todo->mtodo.todo.note) && (temp_todo->mtodo.todo.note[0]) ) { if ( jp_strstr(temp_todo->mtodo.todo.note, needle, case_sense) ) { found = 2; } } if (found) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("todo")); if (found == 1) { lstrncpy_remove_cr_lfs(str2, temp_todo->mtodo.todo.description, SEARCH_MAX_COLUMN_LEN); } else { lstrncpy_remove_cr_lfs(str2, temp_todo->mtodo.todo.note, SEARCH_MAX_COLUMN_LEN); } gtk_clist_set_text(GTK_CLIST(clist), 0, 1, str2); /* Add to the search list */ new_sr = malloc(sizeof(struct search_record)); new_sr->app_type = TODO; new_sr->plugin_flag = 0; new_sr->unique_id = temp_todo->mtodo.unique_id; new_sr->next = search_rl; search_rl = new_sr; gtk_clist_set_row_data(GTK_CLIST(clist), 0, new_sr); count++; } } jp_logf(JP_LOG_DEBUG, "calling free_ToDoList\n"); free_ToDoList(&todo_list); return count; } static int search_memo(const char *needle, GtkWidget *clist) { gchar *empty_line[] = { "","" }; char str2[SEARCH_MAX_COLUMN_LEN+2]; MemoList *memo_list; MemoList *temp_memo; struct search_record *new_sr; int count; int case_sense; long memo_version=0; get_pref(PREF_MEMO_VERSION, &memo_version, NULL); /* Search Memos */ memo_list = NULL; get_memos2(&memo_list, SORT_DESCENDING, 2, 2, 2, CATEGORY_ALL); if (memo_list==NULL) { return 0; } count = 0; case_sense = GTK_TOGGLE_BUTTON(case_sense_checkbox)->active; for (temp_memo = memo_list; temp_memo; temp_memo=temp_memo->next) { if (jp_strstr(temp_memo->mmemo.memo.text, needle, case_sense) ) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); if (memo_version==0) { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("memo")); } else { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("memos")); } if (temp_memo->mmemo.memo.text) { lstrncpy_remove_cr_lfs(str2, temp_memo->mmemo.memo.text, SEARCH_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), 0, 1, str2); } /* Add to the search list */ new_sr = malloc(sizeof(struct search_record)); new_sr->app_type = MEMO; new_sr->plugin_flag = 0; new_sr->unique_id = temp_memo->mmemo.unique_id; new_sr->next = search_rl; search_rl = new_sr; gtk_clist_set_row_data(GTK_CLIST(clist), 0, new_sr); count++; } } jp_logf(JP_LOG_DEBUG, "calling free_MemoList\n"); free_MemoList(&memo_list); return count; } #ifdef ENABLE_PLUGINS static int search_plugins(const char *needle, const GtkWidget *clist) { GList *plugin_list, *temp_list; gchar *empty_line[] = { "","" }; char str2[SEARCH_MAX_COLUMN_LEN+2]; int found; int count; int case_sense; struct search_result *sr, *temp_sr; struct plugin_s *plugin; struct search_record *new_sr; plugin_list = NULL; plugin_list = get_plugin_list(); found = 0; case_sense = GTK_TOGGLE_BUTTON(case_sense_checkbox)->active; count = 0; for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if (plugin) { sr = NULL; if (plugin->plugin_search) { if (plugin->plugin_search(needle, case_sense, &sr) > 0) { for (temp_sr=sr; temp_sr; temp_sr=temp_sr->next) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); if (plugin->menu_name) { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, plugin->menu_name); } else { gtk_clist_set_text(GTK_CLIST(clist), 0, 0, _("plugin ?")); } if (temp_sr->line) { lstrncpy_remove_cr_lfs(str2, temp_sr->line, SEARCH_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), 0, 1, str2); } /* Add to the search list */ new_sr = malloc(sizeof(struct search_record)); new_sr->app_type = plugin->number; new_sr->plugin_flag = 1; new_sr->unique_id = temp_sr->unique_id; new_sr->next = search_rl; search_rl = new_sr; gtk_clist_set_row_data(GTK_CLIST(clist), 0, new_sr); count++; } free_search_result(&sr); } } } } return count; } #endif static gboolean cb_destroy(GtkWidget *widget) { if (search_rl) { free_search_record_list(&search_rl); search_rl = NULL; } window = NULL; return FALSE; } static void cb_quit(GtkWidget *widget, gpointer data) { gtk_widget_destroy(data); } static void cb_entry(GtkWidget *widget, gpointer data) { gchar *empty_line[] = { "","" }; GtkWidget *clist; const char *entry_text; int count = 0; jp_logf(JP_LOG_DEBUG, "enter cb_entry\n"); entry_text = gtk_entry_get_text(GTK_ENTRY(widget)); if (!entry_text || !strlen(entry_text)) { return; } jp_logf(JP_LOG_DEBUG, "entry text = %s\n", entry_text); clist = data; gtk_clist_clear(GTK_CLIST(clist)); count += search_address_or_contacts(entry_text, clist); count += search_todo(entry_text, clist); count += search_memo(entry_text, clist); #ifdef ENABLE_PLUGINS count += search_plugins(entry_text, clist); #endif /* sort the results */ gtk_clist_set_sort_column(GTK_CLIST(clist), 1); gtk_clist_sort(GTK_CLIST(clist)); /* the datebook events are already sorted by date */ count += search_datebook(entry_text, clist); if (count == 0) { gtk_clist_prepend(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), 0, 1, _("No records found")); } /* Highlight the first row in the list of returned items. * This does NOT cause the main window to jump to the selected record. */ clist_select_row(GTK_CLIST(clist), 0, 0); /* select the first record found */ cb_clist_selection(clist, 0, 0, (GdkEventButton *)1, NULL); return; } static void cb_search(GtkWidget *widget, gpointer data) { cb_entry(entry, data); } static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct search_record *sr; clist_row_selected = row; if (!event) return; sr = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (sr == NULL) { return; } switch (sr->app_type) { case DATEBOOK: glob_find_id = sr->unique_id; cb_app_button(NULL, GINT_TO_POINTER(DATEBOOK)); break; case ADDRESS: glob_find_id = sr->unique_id; cb_app_button(NULL, GINT_TO_POINTER(ADDRESS)); break; case TODO: glob_find_id = sr->unique_id; cb_app_button(NULL, GINT_TO_POINTER(TODO)); break; case MEMO: glob_find_id = sr->unique_id; cb_app_button(NULL, GINT_TO_POINTER(MEMO)); break; default: #ifdef ENABLE_PLUGINS /* Not one of the main 4 apps so it must be a plugin */ jp_logf(JP_LOG_DEBUG, "choosing search result from plugin %d\n", sr->app_type); call_plugin_gui(sr->app_type, sr->unique_id); #endif break; } } static gboolean cb_key_pressed_in_clist(GtkWidget *widget, GdkEventKey *event, gpointer data) { if (event->keyval == GDK_Return) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); cb_clist_selection(widget, clist_row_selected, 0, (GdkEventButton *)1, NULL); return TRUE; } return FALSE; } void cb_search_gui(GtkWidget *widget, gpointer data) { GtkWidget *scrolled_window; GtkWidget *clist; GtkWidget *label; GtkWidget *button; GtkWidget *vbox, *hbox; char temp[256]; if (GTK_IS_WIDGET(window)) { /* Shift focus to existing window if called again and window is still alive. */ gtk_window_present(GTK_WINDOW(window)); gtk_widget_grab_focus(GTK_WIDGET(entry)); return; } if (search_rl) { free_search_record_list(&search_rl); search_rl = NULL; } window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 500, 300); g_snprintf(temp, sizeof(temp), "%s %s", PN, _("Search")); gtk_window_set_title(GTK_WINDOW(window), temp); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(cb_destroy), window); accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* Search label */ label = gtk_label_new(_("Search for: ")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); /* Search entry */ entry = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); gtk_widget_grab_focus(GTK_WIDGET(entry)); /* Case Sensitive checkbox */ case_sense_checkbox = gtk_check_button_new_with_label(_("Case Sensitive")); gtk_box_pack_start(GTK_BOX(hbox), case_sense_checkbox, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(case_sense_checkbox), FALSE); /* Scrolled window for search results */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 3); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0); clist = gtk_clist_new(2); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_signal_connect(GTK_OBJECT(clist), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_in_clist), NULL); gtk_clist_set_shadow_type(GTK_CLIST(clist), SHADOW); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 1, TRUE); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(clist)); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_entry), clist); hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* Search button */ button = gtk_button_new_from_stock(GTK_STOCK_FIND); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_search), clist); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); /* clicking on "Case Sensitive" also starts a search */ gtk_signal_connect(GTK_OBJECT(case_sense_checkbox), "clicked", GTK_SIGNAL_FUNC(cb_search), clist); /* Done button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_quit), window); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); gtk_widget_add_accelerator(button, "clicked", accel_group, GDK_Escape, 0, 0); gtk_widget_show_all(window); } jpilot-1.8.2/plugins.c0000664000175000017500000003217412340261240011574 00000000000000/******************************************************************************* * plugins.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #ifdef ENABLE_PLUGINS #include #include #include #include #include #include "utils.h" #include "log.h" #include "plugins.h" #include #include "i18n.h" /******************************* Global vars **********************************/ static GList *plugins = NULL; /****************************** Prototypes ************************************/ static int get_plugin_info(struct plugin_s *p, char *path); static int get_plugin_sync_bits(void); static gint plugin_sort(gconstpointer a, gconstpointer b); /****************************** Main Code *************************************/ /* Write out the jpilot.plugins file that tells which plugins to sync */ void write_plugin_sync_file(void) { FILE *out; GList *temp_list; struct plugin_s *Pplugin; out=jp_open_home_file(EPN".plugins", "w"); if (!out) { return; } fwrite("Version 1\n", strlen("Version 1\n"), 1, out); for (temp_list = plugins; temp_list; temp_list = temp_list->next) { Pplugin = temp_list->data; if (Pplugin) { if (Pplugin->sync_on) { fwrite("Y ", 2, 1, out); } else { fwrite("N ", 2, 1, out); } fwrite(Pplugin->full_path, strlen(Pplugin->full_path), 1, out); fwrite("\n", strlen("\n"), 1, out); } } fclose(out); } /* This is just a repeated subroutine to load_plugins not needing * a name of its own. * Assumes dir has already been checked */ static int load_plugins_sub1(DIR *dir, char *path, int *number, unsigned char user_only) { int i, r; int count; struct dirent *dirent; char full_name[FILENAME_MAX]; struct plugin_s temp_plugin, *new_plugin; GList *plugin_names = NULL; /* keep a list of plugins found so far */ GList *temp_list = NULL; count = 0; for (i=0; (dirent = readdir(dir)); i++) { if (i>1000) { jp_logf(JP_LOG_WARN, "load_plugins_sub1(): %s\n", _("infinite loop")); return 0; } /* If the filename has either of these extensions then plug it in */ if ((strcmp(&(dirent->d_name[strlen(dirent->d_name)-3]), ".so")) && (strcmp(&(dirent->d_name[strlen(dirent->d_name)-3]), ".sl")) && (strcmp(&(dirent->d_name[strlen(dirent->d_name)-6]), ".dylib"))) { continue; } else { jp_logf(JP_LOG_DEBUG, "found plugin %s\n", dirent->d_name); /* We know path has a trailing slash after it */ g_snprintf(full_name, sizeof(full_name), "%s%s", path, dirent->d_name); r = get_plugin_info(&temp_plugin, full_name); temp_plugin.number = *number; temp_plugin.user_only = user_only; if (r==0) { if (temp_plugin.name) { jp_logf(JP_LOG_DEBUG, "plugin name is [%s]\n", temp_plugin.name); } if (g_list_find_custom(plugin_names, temp_plugin.name, (GCompareFunc)strcmp) == NULL) { new_plugin = malloc(sizeof(struct plugin_s)); if (!new_plugin) { jp_logf(JP_LOG_WARN, "load plugins(): %s\n", _("Out of memory")); return count; } memcpy(new_plugin, &temp_plugin, sizeof(struct plugin_s)); plugins = g_list_prepend(plugins, new_plugin); plugin_names = g_list_prepend(plugin_names, g_strdup(temp_plugin.name)); count++; (*number)++; } } } } plugins = g_list_sort(plugins, plugin_sort); for (temp_list = plugin_names; temp_list; temp_list = temp_list->next) { if (temp_list->data) { g_free(temp_list->data); } } g_list_free(plugin_names); return count; } static gint plugin_sort(gconstpointer a, gconstpointer b) { const char *ca = ((struct plugin_s *)a)->menu_name; const char *cb = ((struct plugin_s *)b)->menu_name; /* menu_name is NULL for plugin without menu entry */ if (ca == NULL) ca = ((struct plugin_s *)a)->name; if (cb == NULL) cb = ((struct plugin_s *)b)->name; return strcasecmp(ca, cb); } int load_plugins(void) { DIR *dir; char path[FILENAME_MAX]; int count, number; count = 0; number = DATEBOOK + 100; /* I just made up this number */ plugins = NULL; /* ABILIB is for Irix, should normally be "lib" */ g_snprintf(path, sizeof(path), "%s/%s/%s/%s/", BASE_DIR, ABILIB, EPN, "plugins"); jp_logf(JP_LOG_DEBUG, "opening dir %s\n", path); cleanup_path(path); dir = opendir(path); if (dir) { count += load_plugins_sub1(dir, path, &number, 0); closedir(dir); } get_home_file_name("plugins/", path, sizeof(path)); cleanup_path(path); jp_logf(JP_LOG_DEBUG, "opening dir %s\n", path); dir = opendir(path); if (dir) { count += load_plugins_sub1(dir, path, &number, 1); closedir(dir); } get_plugin_sync_bits(); return count; } /* Now we need to look in the jpilot_plugins file to see which plugins * are enabled to sync and which are not */ static int get_plugin_sync_bits(void) { int i; GList *temp_list; struct plugin_s *Pplugin; char line[1024]; char *Pline; char *Pc; FILE *in; in=jp_open_home_file(EPN".plugins", "r"); if (!in) { return EXIT_SUCCESS; } for (i=0; (!feof(in)); i++) { if (i>MAX_NUM_PLUGINS) { jp_logf(JP_LOG_WARN, "load_plugins(): %s\n", _("infinite loop")); fclose(in); return EXIT_FAILURE; } line[0]='\0'; Pc = fgets(line, sizeof(line), in); if (!Pc) { break; } if (line[strlen(line)-1]=='\n') { line[strlen(line)-1]='\0'; } if ((!strncmp(line, "Version", 7)) && (strcmp(line, "Version 1"))) { jp_logf(JP_LOG_WARN, _("While reading %s%s line 1:[%s]\n"), EPN, ".plugins", line); jp_logf(JP_LOG_WARN, _("Wrong Version\n")); jp_logf(JP_LOG_WARN, _("Check preferences->conduits\n")); fclose(in); return EXIT_FAILURE; } if (i>0) { if (toupper(line[0])=='N') { Pline = line + 2; for (temp_list = plugins; temp_list; temp_list = temp_list->next) { Pplugin = temp_list->data; if (!strcmp(Pline, Pplugin->full_path)) { Pplugin->sync_on=0; } } } } } fclose(in); return EXIT_SUCCESS; } static int get_plugin_info(struct plugin_s *p, char *path) { void *h; const char *err; char name[52]; char db_name[52]; int version, major_version, minor_version; void (*plugin_versionM)(int *major_version, int *minor_version); p->full_path = NULL; p->handle = NULL; p->sync_on = 1; p->name = NULL; p->db_name = NULL; p->number = 0; p->plugin_get_name = NULL; p->plugin_get_menu_name = NULL; p->plugin_get_help_name = NULL; p->plugin_get_db_name = NULL; p->plugin_startup = NULL; p->plugin_gui = NULL; p->plugin_help = NULL; p->plugin_print = NULL; p->plugin_import = NULL; p->plugin_export = NULL; p->plugin_gui_cleanup = NULL; p->plugin_pre_sync_pre_connect = NULL; p->plugin_pre_sync = NULL; p->plugin_sync = NULL; p->plugin_post_sync = NULL; p->plugin_exit_cleanup = NULL; p->plugin_unpack_cai_from_ai = NULL; p->plugin_pack_cai_into_ai = NULL; h = dlopen(path, RTLD_LAZY); if (!h) { jp_logf(JP_LOG_WARN, _("Open failed on plugin [%s]\n error [%s]\n"), path, dlerror()); return EXIT_FAILURE; } jp_logf(JP_LOG_DEBUG, "opened plugin [%s]\n", path); p->handle=h; p->full_path = strdup(path); /* plugin_versionM */ #if defined __OpenBSD__ && !defined __ELF__ #define dlsym(x,y) dlsym(x, "_" y) #endif plugin_versionM = dlsym(h, "plugin_version"); if (plugin_versionM==NULL) { err = dlerror(); jp_logf(JP_LOG_WARN, "plugin_version: [%s]\n", err); jp_logf(JP_LOG_WARN, _(" plugin is invalid: [%s]\n"), path); dlclose(h); p->handle=NULL; return EXIT_FAILURE; } plugin_versionM(&major_version, &minor_version); version=major_version*1000+minor_version; if ((major_version <= 0) && (minor_version < 99)) { jp_logf(JP_LOG_WARN, _("Plugin:[%s]\n"), path); jp_logf(JP_LOG_WARN, _("This plugin is version (%d.%d).\n"), major_version, minor_version); jp_logf(JP_LOG_WARN, _("It is too old to work with this version of J-Pilot.\n")); dlclose(h); p->handle=NULL; return EXIT_FAILURE; } jp_logf(JP_LOG_DEBUG, "This plugin is version (%d.%d).\n", major_version, minor_version); /* plugin_get_name */ jp_logf(JP_LOG_DEBUG, "getting plugin_get_name\n"); p->plugin_get_name = dlsym(h, "plugin_get_name"); if (p->plugin_get_name==NULL) { err = dlerror(); jp_logf(JP_LOG_WARN, "plugin_get_name: [%s]\n", err); jp_logf(JP_LOG_WARN, _(" plugin is invalid: [%s]\n"), path); dlclose(h); p->handle=NULL; return EXIT_FAILURE; } if (p->plugin_get_name) { p->plugin_get_name(name, 50); name[50]='\0'; p->name = strdup(name); } else { p->name = NULL; } /* plugin_get_menu_name */ jp_logf(JP_LOG_DEBUG, "getting plugin_get_menu_name\n"); p->plugin_get_menu_name = dlsym(h, "plugin_get_menu_name"); if (p->plugin_get_menu_name) { p->plugin_get_menu_name(name, 50); name[50]='\0'; p->menu_name = strdup(name); } else { p->menu_name = NULL; } /* plugin_get_help_name */ jp_logf(JP_LOG_DEBUG, "getting plugin_get_help_name\n"); p->plugin_get_help_name = dlsym(h, "plugin_get_help_name"); if (p->plugin_get_help_name) { p->plugin_get_help_name(name, 50); name[50]='\0'; p->help_name = strdup(name); } else { p->help_name = NULL; } /* plugin_get_db_name */ jp_logf(JP_LOG_DEBUG, "getting plugin_get_db_name\n"); p->plugin_get_db_name = dlsym(h, "plugin_get_db_name"); if (p->plugin_get_db_name) { p->plugin_get_db_name(db_name, 50); db_name[50]='\0'; } else { db_name[0]='\0'; } p->db_name = strdup(db_name); /* plugin_gui */ p->plugin_gui = dlsym(h, "plugin_gui"); /* plugin_help */ p->plugin_help = dlsym(h, "plugin_help"); /* plugin_help */ p->plugin_print = dlsym(h, "plugin_print"); /* plugin_import */ p->plugin_import = dlsym(h, "plugin_import"); /* plugin_export */ p->plugin_export = dlsym(h, "plugin_export"); /* plugin_gui_cleanup */ p->plugin_gui_cleanup = dlsym(h, "plugin_gui_cleanup"); /* plugin_startup */ p->plugin_startup = dlsym(h, "plugin_startup"); /* plugin_pre_sync */ p->plugin_pre_sync = dlsym(h, "plugin_pre_sync"); /* plugin_pre_sync_pre_connect */ p->plugin_pre_sync_pre_connect = dlsym(h, "plugin_pre_sync_pre_connect"); /* plugin_sync */ p->plugin_sync = dlsym(h, "plugin_sync"); /* plugin_post_sync */ p->plugin_post_sync = dlsym(h, "plugin_post_sync"); /* plugin_search */ p->plugin_search = dlsym(h, "plugin_search"); /* plugin_exit_cleanup */ p->plugin_exit_cleanup = dlsym(h, "plugin_exit_cleanup"); p->plugin_unpack_cai_from_ai = dlsym(h, "plugin_unpack_cai_from_ai"); p->plugin_pack_cai_into_ai = dlsym(h, "plugin_pack_cai_into_ai"); return EXIT_SUCCESS; } /* This will always return the first plugin list entry */ GList *get_plugin_list(void) { return plugins; } void free_plugin_list(GList **plugin_list) { GList *temp_list; struct plugin_s *p; for (temp_list = *plugin_list; temp_list; temp_list = temp_list->next) { if (temp_list->data) { p=temp_list->data; if (p->full_path) free(p->full_path); if (p->name) free(p->name); if (p->menu_name) free(p->menu_name); if (p->help_name) free(p->help_name); if (p->db_name) free(p->db_name); free(p); } } g_list_free(*plugin_list); *plugin_list=NULL; } void free_search_result(struct search_result **sr) { struct search_result *temp_sr, *temp_sr_next; for (temp_sr = *sr; temp_sr; temp_sr=temp_sr_next) { if (temp_sr->line) { free(temp_sr->line); } temp_sr_next = temp_sr->next; free(temp_sr); } *sr = NULL; } #endif /* ENABLE_PLUGINS */ jpilot-1.8.2/BUGS0000664000175000017500000000375012320101153010422 00000000000000============================================================================== The most recent list of bugs can be found at http://bugs.jpilot.org To report new bugs please use the reporting form on bugs.jpilot.org When reporting a bug, particularly if the bug is reproduceable, it may be helpful to run 'jpilot -d' to turn debug mode on. Perform the sequence of actions necessary to reproduce the error and then include the log file(~/.jpilot/jpilot.log) in the bug report. ============================================================================== These are some of the known bugs: * Priority High: * Priority Medium: - print system is not i18n compliant * Priority Low: - Kyocera QCP 6035 phone/palm combos don't close the address database, so it can't be sync'ed. It is a Kyocera problem, and there is no known solution. - Setting the time on Palm OS 3.3 in a conduit will crash the handheld. SyncTime will detect OS 3.3 and do nothing. The fix is to upgrade Palm OS. * Priority Who Cares?: * Quirks (not really bugs): - jpilot lets you enter in blank todo's, etc. The palm pilot will not allow this. - The palm pilot will only let you make appointments on 5 minute intervals. jpilot will allow 1 minute intervals. - The PalmOS datebook will alarm on private records even when they are hidden and they show up on the screen. Right, or wrong, who knows. Jpilot will do the same. * Palm OS bugs that have been found while creating J-Pilot - If you try to sync with a pilotrate of 0 then the palm pilot with get a fatal exception and reboot. (tested on 3.1) This is a PalmOS bug. - The Palm pilot will let you sync (add) an appointment that repeats weekly, but doesn't repeat on any day. It won't show up in the calendar, but if you search for it, it shows up. When you click on it in find, a Fatal Exception occurs and the Pilot reboots. This is a PalmOS bug if you ask me. - Empty appointments crash Palm OS 2.0 (Jpilot doesn't allow them anymore) jpilot-1.8.2/Expense/0000775000175000017500000000000012340262141011430 500000000000000jpilot-1.8.2/Expense/Makefile.am0000664000175000017500000000042212320101153013373 00000000000000libdir = @libdir@/@PACKAGE@/plugins if MAKE_EXPENSE lib_LTLIBRARIES = libexpense.la libexpense_la_SOURCES = expense.c libexpense_la_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ -I$(top_srcdir) libexpense_la_LDFLAGS = -module -avoid-version libexpense_la_LIBADD = @GTK_LIBS@ endif jpilot-1.8.2/Expense/expense.c0000664000175000017500000020413412340261240013166 00000000000000/******************************************************************************* * expense.c * * This is a plugin for J-Pilot which implements an interface to the * Palm Expense application. * * Copyright (C) 1999-2014 by Judd Montgomery * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include #include #include #include #include #include #include "libplugin.h" #include "i18n.h" #include "utils.h" #include "prefs.h" #include "stock_buttons.h" /******************************************************************************/ /* Constants */ /******************************************************************************/ #define EXPENSE_TYPE 3 #define EXPENSE_PAYMENT 4 #define EXPENSE_CURRENCY 5 #define EXP_DATE_COLUMN 0 #define PLUGIN_MAX_INACTIVE_TIME 1 #define NUM_EXP_CAT_ITEMS 16 #define MAX_EXPENSE_TYPES 28 #define MAX_PAYMENTS 8 #define MAX_CURRENCYS 34 #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 /* This was copied out of the pilot-link package. * I just like it here for quick reference. struct Expense { struct tm date; enum ExpenseType type; enum ExpensePayment payment; int currency; char * amount; char * vendor; char * city; char * attendees; char * note; }; */ /* This is my wrapper to the expense structure so that I can put * a few more fields in with it */ struct MyExpense { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct Expense ex; struct MyExpense *next; }; struct currency_s { const char *country; int currency; }; /******************************************************************************/ /* Global vars */ /******************************************************************************/ static struct currency_s glob_currency[MAX_CURRENCYS]={ {N_("Australia"), 0}, {N_("Austria"), 1}, {N_("Belgium"), 2}, {N_("Brazil"), 3}, {N_("Canada"), 4}, {N_("Denmark"), 5}, {N_("EU (Euro)"), 133}, {N_("Finland"), 6}, {N_("France"), 7}, {N_("Germany"), 8}, {N_("Hong Kong"), 9}, {N_("Iceland"), 10}, {N_("India"), 24}, {N_("Indonesia"), 25}, {N_("Ireland"), 11}, {N_("Italy"), 12}, {N_("Japan"), 13}, {N_("Korea"), 26}, {N_("Luxembourg"), 14}, {N_("Malaysia"), 27}, {N_("Mexico"), 15}, {N_("Netherlands"), 16}, {N_("New Zealand"), 17}, {N_("Norway"), 18}, {N_("P.R.C."), 28}, {N_("Philippines"), 29}, {N_("Singapore"), 30}, {N_("Spain"), 19}, {N_("Sweden"), 20}, {N_("Switzerland"), 21}, {N_("Taiwan"), 32}, {N_("Thailand"), 31}, {N_("United Kingdom"), 22}, {N_("United States"), 23} }; /* Left-hand side of GUI */ static struct sorted_cats sort_l[NUM_EXP_CAT_ITEMS]; static GtkWidget *category_menu1; /* Need two extra slots for the ALL category and Edit Categories... */ static GtkWidget *exp_cat_menu_item1[NUM_EXP_CAT_ITEMS+2]; static GtkWidget *scrolled_window; static GtkWidget *clist; /* Right-hand side of GUI */ static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *copy_record_button; static GtkWidget *table; static GtkWidget *category_menu2; static GtkWidget *exp_cat_menu_item2[NUM_EXP_CAT_ITEMS]; static GtkWidget *menu_payment; static GtkWidget *menu_item_payment[MAX_PAYMENTS]; static GtkWidget *menu_expense_type; static GtkWidget *menu_item_expense_type[MAX_EXPENSE_TYPES]; static GtkWidget *menu_currency; static GtkWidget *menu_item_currency[MAX_CURRENCYS]; static GtkWidget *spinner_mon, *spinner_day, *spinner_year; static GtkAdjustment *adj_mon, *adj_day, *adj_year; static GtkWidget *entry_amount; static GtkWidget *entry_vendor; static GtkWidget *entry_city; static GtkWidget *pane=NULL; #ifndef ENABLE_STOCK_BUTTONS static GtkAccelGroup *accel_group; #endif static GtkWidget *attendees; static GObject *attendees_buffer; static GtkWidget *note; static GObject *note_buffer; /* This is the category that is currently being displayed */ static int exp_category = CATEGORY_ALL; static time_t plugin_last_time = 0; static int record_changed; static int clist_row_selected; static int clist_col_selected; static int connected=0; static int glob_detail_type; static int glob_detail_payment; static int glob_detail_currency_pos; static struct MyExpense *glob_myexpense_list=NULL; /******************************************************************************/ /* Prototypes */ /******************************************************************************/ static void display_records(void); static void connect_changed_signals(int con_or_dis); static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); static void cb_add_new_record(GtkWidget *widget, gpointer data); static void cb_pulldown_menu(GtkWidget *item, unsigned int value); static int make_menu(const char *items[], int menu_index, GtkWidget **Poption_menu, GtkWidget *menu_items[]); static int expense_find(int unique_id); static void cb_category(GtkWidget *item, int selection); static int find_sort_cat_pos(int cat); static int find_menu_cat_pos(int cat); /******************************************************************************/ /* Start of code */ /******************************************************************************/ int plugin_unpack_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ExpenseAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "unpack_expense_cai_from_ai\n"); memset(&ai, 0, sizeof(ai)); r = unpack_ExpenseAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_ExpenseAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(cai, &(ai.category), sizeof(struct CategoryAppInfo)); return EXIT_SUCCESS; } int plugin_pack_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len) { struct ExpenseAppInfo ai; int r; jp_logf(JP_LOG_DEBUG, "pack_expense_cai_into_ai\n"); r = unpack_ExpenseAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "unpack_ExpenseAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } memcpy(&(ai.category), cai, sizeof(struct CategoryAppInfo)); r = pack_ExpenseAppInfo(&ai, ai_raw, len); if (r <= 0) { jp_logf(JP_LOG_DEBUG, "pack_ExpenseAppInfo failed %s %d\n", __FILE__, __LINE__); return EXIT_FAILURE; } return EXIT_SUCCESS; } static gint sort_compare_date(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2) { const GtkCListRow *row1, *row2; struct MyExpense *mexp1, *mexp2; time_t time1, time2; row1 = (const GtkCListRow *) ptr1; row2 = (const GtkCListRow *) ptr2; mexp1 = row1->data; mexp2 = row2->data; time1 = mktime(&(mexp1->ex.date)); time2 = mktime(&(mexp2->ex.date)); return(time1 - time2); } static void cb_clist_click_column(GtkWidget *clist, int column) { struct MyExpense *mexp; unsigned int unique_id; /* Remember currently selected item and return to it after sort * This is critically important because sorting without updating the * global variable clist_row_selected can cause data loss */ mexp = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mexp < (struct MyExpense *)CLIST_MIN_DATA) { unique_id = 0; } else { unique_id = mexp->unique_id; } /* Clicking on same column toggles ascending/descending sort */ if (clist_col_selected == column) { if (GTK_CLIST(clist)->sort_type == GTK_SORT_ASCENDING) { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_DESCENDING); } else { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } } else /* Always sort in ascending order when changing sort column */ { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } clist_col_selected = column; gtk_clist_set_sort_column(GTK_CLIST(clist), column); switch (column) { case EXP_DATE_COLUMN: /* Date column */ gtk_clist_set_compare_func(GTK_CLIST(clist), sort_compare_date); break; default: /* All other columns can use GTK default sort function */ gtk_clist_set_compare_func(GTK_CLIST(clist), NULL); break; } gtk_clist_sort(GTK_CLIST(clist)); /* Return to previously selected item */ expense_find(unique_id); } static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); break; case NEW_FLAG: gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); break; default: return; } record_changed=new_state; } static void cb_record_changed(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if (GTK_CLIST(clist)->rows > 0) { set_new_button_to(MODIFY_FLAG); } else { set_new_button_to(NEW_FLAG); } } } static void connect_changed_signals(int con_or_dis) { int i; /* CONNECT */ if ((con_or_dis==CONNECT_SIGNALS) && (!connected)) { jp_logf(JP_LOG_DEBUG, "Expense: connect_changed_signals\n"); connected=1; for (i=0; iex)); next_mexp = mexp->next; free(mexp); } *PPmexp=NULL; } #define PLUGIN_MAJOR 1 #define PLUGIN_MINOR 1 /* This is a mandatory plugin function. */ void plugin_version(int *major_version, int *minor_version) { *major_version = PLUGIN_MAJOR; *minor_version = PLUGIN_MINOR; } static int static_plugin_get_name(char *name, int len) { jp_logf(JP_LOG_DEBUG, "Expense: plugin_get_name\n"); snprintf(name, len, "Expense %d.%d", PLUGIN_MAJOR, PLUGIN_MINOR); return EXIT_SUCCESS; } /* This is a mandatory plugin function. */ int plugin_get_name(char *name, int len) { return static_plugin_get_name(name, len); } /* * This is an optional plugin function. * This is the name that will show up in the plugins menu in J-Pilot. */ int plugin_get_menu_name(char *name, int len) { strncpy(name, _("Expense"), len); return EXIT_SUCCESS; } /* * This is an optional plugin function. * This is the name that will show up in the plugins help menu in J-Pilot. * If this function is used then plugin_help must also be defined. */ int plugin_get_help_name(char *name, int len) { g_snprintf(name, len, _("About %s"), _("Expense")); return EXIT_SUCCESS; } /* * This is an optional plugin function. * This is the palm database that will automatically be synced. */ int plugin_get_db_name(char *name, int len) { strncpy(name, "ExpenseDB", len); return EXIT_SUCCESS; } /* * A utility function for getting textual data from an enum. */ static char *get_entry_type(enum ExpenseType type) { switch(type) { case etAirfare: return _("Airfare"); case etBreakfast: return _("Breakfast"); case etBus: return _("Bus"); case etBusinessMeals: return _("BusinessMeals"); case etCarRental: return _("CarRental"); case etDinner: return _("Dinner"); case etEntertainment: return _("Entertainment"); case etFax: return _("Fax"); case etGas: return _("Gas"); case etGifts: return _("Gifts"); case etHotel: return _("Hotel"); case etIncidentals: return _("Incidentals"); case etLaundry: return _("Laundry"); case etLimo: return _("Limo"); case etLodging: return _("Lodging"); case etLunch: return _("Lunch"); case etMileage: return _("Mileage"); case etOther: return _("Other"); case etParking: return _("Parking"); case etPostage: return _("Postage"); case etSnack: return _("Snack"); case etSubway: return _("Subway"); case etSupplies: return _("Supplies"); case etTaxi: return _("Taxi"); case etTelephone: return _("Telephone"); case etTips: return _("Tips"); case etTolls: return _("Tolls"); case etTrain: return _("Train"); default: return NULL; } } /* This function gets called when the "delete" button is pressed */ static void cb_delete(GtkWidget *widget, gpointer data) { struct MyExpense *mexp; int size; unsigned char buf[0xFFFF]; buf_rec br; int flag; jp_logf(JP_LOG_DEBUG, "Expense: cb_delete\n"); flag=GPOINTER_TO_INT(data); mexp = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (!mexp) { return; } /* The record that we want to delete should be written to the pc file * so that it can be deleted at sync time. We need the original record * so that if it has changed on the pilot we can warn the user that * the record has changed on the pilot. */ size = pack_Expense(&(mexp->ex), buf, 0xFFFF); br.rt = mexp->rt; br.unique_id = mexp->unique_id; br.attrib = mexp->attrib; br.buf = buf; br.size = size; if ((flag==MODIFY_FLAG) || (flag==DELETE_FLAG)) { jp_delete_record("ExpenseDB", &br, DELETE_FLAG); } if (flag == DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected > 0) { clist_row_selected--; } display_records(); } } /* * This is called when the "Clear" button is pressed. * It just clears out all the detail fields. */ static void exp_clear_details(void) { time_t ltime; struct tm *now; int new_cat; int sorted_position; jp_logf(JP_LOG_DEBUG, "Expense: exp_clear_details\n"); time(<ime); now = localtime(<ime); /* Disconnect signals to prevent callbacks while we change values */ connect_changed_signals(DISCONNECT_SIGNALS); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_mon), now->tm_mon+1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_day), now->tm_mday); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_year), now->tm_year+1900); gtk_entry_set_text(GTK_ENTRY(entry_amount), ""); gtk_entry_set_text(GTK_ENTRY(entry_vendor), ""); gtk_entry_set_text(GTK_ENTRY(entry_city), ""); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(attendees_buffer), "", -1); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(note_buffer), "", -1); if (exp_category==CATEGORY_ALL) { new_cat = 0; } else { new_cat = exp_category; } sorted_position = find_sort_cat_pos(new_cat); if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(exp_cat_menu_item2[sorted_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } set_new_button_to(CLEAR_FLAG); connect_changed_signals(CONNECT_SIGNALS); } /* returns position, position starts at zero */ static int currency_id_to_position(int currency) { int i; int found=0; for (i=0; iunique_id; } /* Grab details of record from widgets on right-hand side of screen */ ex.type = glob_detail_type; ex.payment = glob_detail_payment; ex.currency = position_to_currency_id(glob_detail_currency_pos); /* gtk_entry_get_text *does not* allocate memory */ text = gtk_entry_get_text(GTK_ENTRY(entry_amount)); ex.amount = (char *)text; if (ex.amount[0]=='\0') { ex.amount=NULL; } text = gtk_entry_get_text(GTK_ENTRY(entry_vendor)); ex.vendor = (char *)text; if (ex.vendor[0]=='\0') { ex.vendor=NULL; } text = gtk_entry_get_text(GTK_ENTRY(entry_city)); ex.city = (char *)text; if (ex.city[0]=='\0') { ex.city=NULL; } ex.date.tm_mon = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner_mon)) - 1;; ex.date.tm_mday = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner_day));; ex.date.tm_year = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner_year)) - 1900;; ex.date.tm_hour = 12; ex.date.tm_min = 0; ex.date.tm_sec = 0; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(attendees_buffer),&start_iter,&end_iter); ex.attendees = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(attendees_buffer),&start_iter,&end_iter,TRUE); if (ex.attendees[0]=='\0') { free(ex.attendees); ex.attendees=NULL; } gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(note_buffer),&start_iter,&end_iter); ex.note = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(note_buffer),&start_iter,&end_iter,TRUE); if (ex.note[0]=='\0') { free(ex.note); ex.note=NULL; } /* * The record must be packed into a palm record (blob of data) * pack_Expense just happens to be already written in pilot-link, * however, a pack function must be written for each record type. */ size = pack_Expense(&ex, buf, 0xFFFF); if (ex.attendees) { free(ex.attendees); } if (ex.note) { free(ex.note); } /* This is a new record from the PC, and not yet on the palm */ br.rt = NEW_PC_REC; /* jp_pc_write will give us a temporary PC unique ID. */ /* The palm will give us an "official" unique ID during the sync */ /* Any attributes go here. Usually just the category */ /* Get the category that is set from the menu */ for (i=0; iactive) { br.attrib = sort_l[i].cat_num; break; } } } jp_logf(JP_LOG_DEBUG, "category is %d\n", br.attrib); br.buf = buf; br.size = size; br.unique_id = 0; if (flag==MODIFY_FLAG) { cb_delete(NULL, data); if ((mexp->rt==PALM_REC) || (mexp->rt==REPLACEMENT_PALM_REC)) { /* This code is to keep the unique ID intact */ br.unique_id = unique_id; br.rt = REPLACEMENT_PALM_REC; } } /* Write out the record. It goes to the .pc3 file until it gets synced */ jp_pc_write("ExpenseDB", &br); set_new_button_to(CLEAR_FLAG); display_records(); return; } /* * This function just adds the record to the clist on the left side of * the screen. */ static int display_record(struct MyExpense *mexp, int at_row) { char *Ptype; char date[12]; GdkColor color; GdkColormap *colormap; jp_logf(JP_LOG_DEBUG, "Expense: display_record\n"); switch (mexp->rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: colormap = gtk_widget_get_colormap(clist); color.red = CLIST_NEW_RED; color.green = CLIST_NEW_GREEN; color.blue = CLIST_NEW_BLUE; gdk_color_alloc(colormap, &color); gtk_clist_set_background(GTK_CLIST(clist), at_row, &color); break; case DELETED_PALM_REC: case DELETED_PC_REC: colormap = gtk_widget_get_colormap(clist); color.red = CLIST_DEL_RED; color.green = CLIST_DEL_GREEN; color.blue = CLIST_DEL_BLUE; gdk_color_alloc(colormap, &color); gtk_clist_set_background(GTK_CLIST(clist), at_row, &color); break; case MODIFIED_PALM_REC: colormap = gtk_widget_get_colormap(clist); color.red = CLIST_MOD_RED; color.green = CLIST_MOD_GREEN; color.blue = CLIST_MOD_BLUE; gdk_color_alloc(colormap, &color); gtk_clist_set_background(GTK_CLIST(clist), at_row, &color); break; default: if (mexp->attrib & dlpRecAttrSecret) { colormap = gtk_widget_get_colormap(clist); color.red = CLIST_PRIVATE_RED; color.green = CLIST_PRIVATE_GREEN; color.blue = CLIST_PRIVATE_BLUE; gdk_color_alloc(colormap, &color); gtk_clist_set_background(GTK_CLIST(clist), at_row, &color); } else { gtk_clist_set_background(GTK_CLIST(clist), at_row, NULL); } } gtk_clist_set_row_data(GTK_CLIST(clist), at_row, mexp); sprintf(date, "%02d/%02d", mexp->ex.date.tm_mon+1, mexp->ex.date.tm_mday); gtk_clist_set_text(GTK_CLIST(clist), at_row, 0, date); Ptype = get_entry_type(mexp->ex.type); gtk_clist_set_text(GTK_CLIST(clist), at_row, 1, Ptype); if (mexp->ex.amount) { gtk_clist_set_text(GTK_CLIST(clist), at_row, 2, mexp->ex.amount); } return EXIT_SUCCESS; } /* * This function lists the records in the clist on the left side of * the screen. */ static void display_records(void) { int num, i; int entries_shown; struct MyExpense *mexp; GList *records; GList *temp_list; buf_rec *br; gchar *empty_line[] = { "","","" }; jp_logf(JP_LOG_DEBUG, "Expense: display_records\n"); records=NULL; free_myexpense_list(&glob_myexpense_list); /* Clear left-hand side of window */ exp_clear_details(); /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); connect_changed_signals(DISCONNECT_SIGNALS); gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif /* This function takes care of reading the Database for us */ num = jp_read_DB_files("ExpenseDB", &records); if (-1 == num) return; entries_shown = 0; for (i=0, temp_list = records; temp_list; temp_list = temp_list->next, i++) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } /* Since deleted and modified records are also returned and we don't * want to see those we skip over them. */ if ((br->rt == DELETED_PALM_REC) || (br->rt == DELETED_PC_REC) || (br->rt == MODIFIED_PALM_REC) ) { continue; } if (exp_category < NUM_EXP_CAT_ITEMS) { if ( ((br->attrib & 0x0F) != exp_category) && exp_category != CATEGORY_ALL) { continue; } } mexp = malloc(sizeof(struct MyExpense)); mexp->next = NULL; mexp->attrib = br->attrib; mexp->unique_id = br->unique_id; mexp->rt = br->rt; /* We need to unpack the record blobs from the database. * unpack_Expense is already written in pilot-link, but normally * an unpack must be written for each type of application */ if (unpack_Expense(&(mexp->ex), br->buf, br->size)!=0) { gtk_clist_append(GTK_CLIST(clist), empty_line); display_record(mexp, entries_shown); entries_shown++; } /* Prepend entry at head of list */ mexp->next = glob_myexpense_list; glob_myexpense_list = mexp; } jp_free_DB_records(&records); /* Sort the clist */ gtk_clist_sort(GTK_CLIST(clist)); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); /* Select the existing requested row, or row 0 if that is impossible */ if (clist_row_selected <= entries_shown) { gtk_clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } else { gtk_clist_select_row(GTK_CLIST(clist), 0, 0); } /* Unfreeze clist after all changes */ gtk_clist_thaw(GTK_CLIST(clist)); connect_changed_signals(CONNECT_SIGNALS); jp_logf(JP_LOG_DEBUG, "Expense: leave display_records\n"); } /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; iactive) { if (exp_category == selection) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (exp_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(exp_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(exp_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (selection==NUM_EXP_CAT_ITEMS+1) { cb_edit_cats(item, NULL); } else { exp_category = selection; } jp_logf(JP_LOG_DEBUG, "cb_category() cat=%d\n", exp_category); clist_row_selected = 0; display_records(); jp_logf(JP_LOG_DEBUG, "Leaving cb_category()\n"); } } /* * This function just displays a record on the right hand side of the screen * (the details) after a row has been selected in the clist on the left. */ static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct MyExpense *mexp; int b; int index, sorted_position; int currency_position; unsigned int unique_id = 0; jp_logf(JP_LOG_DEBUG, "Expense: cb_clist_selection\n"); if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { mexp = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mexp!=NULL) { unique_id = mexp->unique_id; } b=dialog_save_changed_record(scrolled_window, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { expense_find(unique_id); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } clist_row_selected = row; mexp = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mexp==NULL) { return; } set_new_button_to(CLEAR_FLAG); /* Need to disconnect signals while changing values */ connect_changed_signals(DISCONNECT_SIGNALS); index = mexp->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (exp_cat_menu_item2[sorted_position]==NULL) { /* Illegal category */ jp_logf(JP_LOG_DEBUG, "Category is not legal\n"); sorted_position = 0; } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(exp_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); if (mexp->ex.type < MAX_EXPENSE_TYPES) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (menu_item_expense_type[mexp->ex.type]), TRUE); } else { jp_logf(JP_LOG_WARN, _("Expense: Unknown expense type\n")); } if (mexp->ex.payment < MAX_PAYMENTS) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (menu_item_payment[mexp->ex.payment]), TRUE); } else { jp_logf(JP_LOG_WARN, _("Expense: Unknown payment type\n")); } currency_position = currency_id_to_position(mexp->ex.currency); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (menu_item_currency[currency_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(menu_expense_type), mexp->ex.type); gtk_option_menu_set_history(GTK_OPTION_MENU(menu_payment), mexp->ex.payment); gtk_option_menu_set_history(GTK_OPTION_MENU(menu_currency), currency_position); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_mon), mexp->ex.date.tm_mon+1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_day), mexp->ex.date.tm_mday); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_year), mexp->ex.date.tm_year+1900); if (mexp->ex.amount) { gtk_entry_set_text(GTK_ENTRY(entry_amount), mexp->ex.amount); } else { gtk_entry_set_text(GTK_ENTRY(entry_amount), ""); } if (mexp->ex.vendor) { gtk_entry_set_text(GTK_ENTRY(entry_vendor), mexp->ex.vendor); } else { gtk_entry_set_text(GTK_ENTRY(entry_vendor), ""); } if (mexp->ex.city) { gtk_entry_set_text(GTK_ENTRY(entry_city), mexp->ex.city); } else { gtk_entry_set_text(GTK_ENTRY(entry_city), ""); } gtk_text_buffer_set_text(GTK_TEXT_BUFFER(attendees_buffer), "", -1); if (mexp->ex.attendees) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(attendees_buffer), mexp->ex.attendees, -1); } gtk_text_buffer_set_text(GTK_TEXT_BUFFER(note_buffer), "", -1); if (mexp->ex.note) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(note_buffer), mexp->ex.note, -1); } connect_changed_signals(CONNECT_SIGNALS); jp_logf(JP_LOG_DEBUG, "Expense: leaving cb_clist_selection\n"); } /* * All menus use this same callback function. I use the value parameter * to determine which menu was changed and which item was selected from it. */ static void cb_pulldown_menu(GtkWidget *item, unsigned int value) { int menu, sel; jp_logf(JP_LOG_DEBUG, "Expense: cb_pulldown_menu\n"); if (!item) return; if (!(GTK_CHECK_MENU_ITEM(item))->active) return; menu = (value & 0xFF00) >> 8; sel = value & 0x00FF; switch (menu) { case EXPENSE_TYPE: glob_detail_type = sel; break; case EXPENSE_PAYMENT: glob_detail_payment = sel; break; case EXPENSE_CURRENCY: glob_detail_currency_pos = sel; break; } } /* * Just a convenience function for passing in an array of strings and getting * them all stuffed into a menu. */ static int make_menu(const char *items[], int menu_index, GtkWidget **Poption_menu, GtkWidget *menu_items[]) { int i, item_num; GSList *group; GtkWidget *option_menu; GtkWidget *menu_item; GtkWidget *menu; jp_logf(JP_LOG_DEBUG, "Expense: make_menu\n"); *Poption_menu = option_menu = gtk_option_menu_new(); menu = gtk_menu_new(); group = NULL; for (i=0; items[i]; i++) { menu_item = gtk_radio_menu_item_new_with_label(group, _(items[i])); menu_items[i] = menu_item; item_num = i; gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(cb_pulldown_menu), GINT_TO_POINTER(menu_index<<8 | item_num)); group = gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(menu_item)); gtk_menu_append(GTK_MENU(menu), menu_item); gtk_widget_show(menu_item); } gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); /* Make this one show up by default */ gtk_option_menu_set_history(GTK_OPTION_MENU(option_menu), 0); gtk_widget_show(option_menu); return EXIT_SUCCESS; } /* * This function makes all of the menus on the screen. */ static void make_menus(void) { struct ExpenseAppInfo exp_app_info; unsigned char *buf; int buf_size; int i; long char_set; char *cat_name; const char *payment[MAX_PAYMENTS+1]={ N_("American Express"), N_("Cash"), N_("Check"), N_("Credit Card"), N_("Master Card"), N_("Prepaid"), N_("VISA"), N_("Unfiled"), NULL }; const char *expense_type[MAX_CURRENCYS+1]={ N_("Airfare"), N_("Breakfast"), N_("Bus"), N_("BusinessMeals"), N_("CarRental"), N_("Dinner"), N_("Entertainment"), N_("Fax"), N_("Gas"), N_("Gifts"), N_("Hotel"), N_("Incidentals"), N_("Laundry"), N_("Limo"), N_("Lodging"), N_("Lunch"), N_("Mileage"), N_("Other"), N_("Parking"), N_("Postage"), N_("Snack"), N_("Subway"), N_("Supplies"), N_("Taxi"), N_("Telephone"), N_("Tips"), N_("Tolls"), N_("Train"), NULL }; const char *currency[MAX_CURRENCYS+1]; jp_logf(JP_LOG_DEBUG, "Expense: make_menus\n"); /* Point the currency array to the country names and NULL terminate it */ for (i=0; irows; i++) { mexp = gtk_clist_get_row_data(GTK_CLIST(clist), i); if (!mexp) { break; } if (mexp->unique_id==unique_id) { found = TRUE; *found_at = i; break; } } return found; } static int expense_find(int unique_id) { int r, found_at; jp_logf(JP_LOG_DEBUG, "Expense: expense_find, unique_id=%d\n",unique_id); if (unique_id) { r = expense_clist_find_id(clist, unique_id, &found_at); if (r) { gtk_clist_select_row(GTK_CLIST(clist), found_at, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), found_at)) { gtk_clist_moveto(GTK_CLIST(clist), found_at, 0, 0.5, 0.0); } } } return EXIT_SUCCESS; } /* * This function is called by J-Pilot when the user selects this plugin * from the plugin menu, or from the search window when a search result * record is chosen. In the latter case, unique ID will be set. This * application should go directly to that record if the ID is set. */ int plugin_gui(GtkWidget *vbox, GtkWidget *hbox, unsigned int unique_id) { GtkWidget *vbox1, *vbox2; GtkWidget *hbox_temp; GtkWidget *temp_vbox; GtkWidget *label; GtkWidget *separator; time_t ltime; struct tm *now; long ivalue; long show_tooltips; char *titles[]={"","",""}; int i; int cycle_category=FALSE; int new_cat; int index, index2; jp_logf(JP_LOG_DEBUG, "Expense: plugin gui started, unique_id=%d\n", unique_id); record_changed = CLEAR_FLAG; if (difftime(time(NULL), plugin_last_time) > PLUGIN_MAX_INACTIVE_TIME) { cycle_category = FALSE; } else { cycle_category = TRUE; } /* reset time entered */ plugin_last_time = time(NULL); /* called to display the result of a search */ if (unique_id) { cycle_category = FALSE; } clist_row_selected = 0; time(<ime); now = localtime(<ime); /************************************************************/ /* Build the GUI */ get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); /* Make the menus */ make_menus(); pane = gtk_hpaned_new(); get_pref(PREF_EXPENSE_PANE, &ivalue, NULL); gtk_paned_set_position(GTK_PANED(pane), ivalue); gtk_box_pack_start(GTK_BOX(hbox), pane, TRUE, TRUE, 5); /* left and right main boxes */ vbox1 = gtk_vbox_new(FALSE, 0); vbox2 = gtk_vbox_new(FALSE, 0); gtk_paned_pack1(GTK_PANED(pane), vbox1, TRUE, FALSE); gtk_paned_pack2(GTK_PANED(pane), vbox2, TRUE, FALSE); gtk_widget_set_usize(GTK_WIDGET(vbox1), 0, 230); gtk_widget_set_usize(GTK_WIDGET(vbox2), 0, 230); /* Make accelerators for some buttons window */ #ifndef ENABLE_STOCK_BUTTONS accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(vbox)), accel_group); #endif /************************************************************/ /* Left half of screen */ /* Make menu box for category menu */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox1), hbox_temp, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_temp), category_menu1, TRUE, TRUE, 0); /* Scrolled Window */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox1), scrolled_window, TRUE, TRUE, 0); /* Clist */ clist = gtk_clist_new_with_titles(3, titles); gtk_clist_set_column_title(GTK_CLIST(clist), 0, _("Date")); gtk_clist_set_column_title(GTK_CLIST(clist), 1, _("Type")); gtk_clist_set_column_title(GTK_CLIST(clist), 2, _("Amount")); /* auto resize is used in all the other application clists but here * it produces a cramped layout so a minimum width is specified */ gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); gtk_clist_set_column_min_width(GTK_CLIST(clist), 0, 44); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 1, TRUE); gtk_clist_set_column_min_width(GTK_CLIST(clist), 1, 100); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 2, FALSE); gtk_clist_column_titles_active(GTK_CLIST(clist)); gtk_signal_connect(GTK_OBJECT(clist), "click_column", GTK_SIGNAL_FUNC (cb_clist_click_column), NULL); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_clist_set_shadow_type(GTK_CLIST(clist), SHADOW); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); /* Restore previous sorting configuration */ get_pref(PREF_EXPENSE_SORT_COLUMN, &ivalue, NULL); clist_col_selected = ivalue; gtk_clist_set_sort_column(GTK_CLIST(clist), clist_col_selected); switch (clist_col_selected) { case EXP_DATE_COLUMN: /* Date column */ gtk_clist_set_compare_func(GTK_CLIST(clist),sort_compare_date); break; default: /* All other columns can use GTK default sort function */ gtk_clist_set_compare_func(GTK_CLIST(clist),NULL); break; } get_pref(PREF_EXPENSE_SORT_ORDER, &ivalue, NULL); gtk_clist_set_sort_type(GTK_CLIST(clist), ivalue); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(clist)); /************************************************************/ /* Right half of screen */ hbox_temp = gtk_hbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Delete, Copy, New, etc. buttons */ CREATE_BUTTON(delete_record_button, _("Delete"), DELETE, _("Delete the selected record"), GDK_d, GDK_CONTROL_MASK, "Ctrl+D"); gtk_signal_connect(GTK_OBJECT(delete_record_button), "clicked", GTK_SIGNAL_FUNC(cb_delete), GINT_TO_POINTER(DELETE_FLAG)); CREATE_BUTTON(copy_record_button, _("Copy"), COPY, _("Copy the selected record"), GDK_c, GDK_CONTROL_MASK|GDK_SHIFT_MASK, "Ctrl+Shift+C") gtk_signal_connect(GTK_OBJECT(copy_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(COPY_FLAG)); CREATE_BUTTON(new_record_button, _("New Record"), NEW, _("Add a new record"), GDK_n, GDK_CONTROL_MASK, "Ctrl+N") gtk_signal_connect(GTK_OBJECT(new_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(CLEAR_FLAG)); CREATE_BUTTON(add_record_button, _("Add Record"), ADD, _("Add the new record"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(add_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(NEW_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(add_record_button)->child)), "label_high"); #endif CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /*Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); table = gtk_table_new(8, 2, FALSE); gtk_box_pack_start(GTK_BOX(vbox2), table, FALSE, FALSE, 0); /* Category Menu */ label = gtk_label_new(_("Category:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 0, 1, GTK_FILL, GTK_FILL, 2, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(category_menu2), 1, 2, 0, 1); /* Type Menu */ label = gtk_label_new(_("Type:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 1, 2, GTK_FILL, GTK_FILL, 2, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(menu_expense_type), 1, 2, 1, 2); /* Payment Menu */ label = gtk_label_new(_("Payment:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 2, 3, GTK_FILL, GTK_FILL, 2, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(menu_payment), 1, 2, 2, 3); /* Currency Menu */ label = gtk_label_new(_("Currency:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 3, 4, GTK_FILL, GTK_FILL, 2, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(menu_currency), 1, 2, 3, 4); /* Date Spinners */ label = gtk_label_new(_("Date:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.8); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 4, 5, GTK_FILL, GTK_FILL, 2, 0); hbox_temp = gtk_hbox_new(FALSE, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(hbox_temp), 1, 2, 4, 5); /* Month spinner */ temp_vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_temp), temp_vbox, FALSE, FALSE, 0); label = gtk_label_new(_("Month:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(temp_vbox), label, FALSE, TRUE, 0); adj_mon = GTK_ADJUSTMENT(gtk_adjustment_new(now->tm_mon+1, 1.0, 12.0, 1.0, 5.0, 0.0)); spinner_mon = gtk_spin_button_new(adj_mon, 0, 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(spinner_mon), FALSE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinner_mon), TRUE); gtk_box_pack_start(GTK_BOX(temp_vbox), spinner_mon, FALSE, TRUE, 0); /* Day spinner */ temp_vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_temp), temp_vbox, FALSE, FALSE, 0); label = gtk_label_new(_("Day:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(temp_vbox), label, FALSE, TRUE, 0); adj_day = GTK_ADJUSTMENT(gtk_adjustment_new(now->tm_mday, 1.0, 31.0, 1.0, 5.0, 0.0)); spinner_day = gtk_spin_button_new(adj_day, 0, 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(spinner_day), FALSE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinner_day), TRUE); gtk_box_pack_start(GTK_BOX(temp_vbox), spinner_day, FALSE, TRUE, 0); /* Year spinner */ temp_vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_temp), temp_vbox, FALSE, FALSE, 0); label = gtk_label_new(_("Year:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(temp_vbox), label, FALSE, TRUE, 0); adj_year = GTK_ADJUSTMENT(gtk_adjustment_new(now->tm_year+1900, 0.0, 2037.0, 1.0, 100.0, 0.0)); spinner_year = gtk_spin_button_new(adj_year, 0, 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(spinner_year), FALSE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinner_year), TRUE); gtk_box_pack_start(GTK_BOX(temp_vbox), spinner_year, FALSE, TRUE, 0); gtk_widget_set_usize(spinner_year, 55, 0); /* Amount Entry */ label = gtk_label_new(_("Amount:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 5, 6, GTK_FILL, GTK_FILL, 2, 0); entry_amount = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(entry_amount), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_amount), 1, 2, 5, 6); /* Vendor Entry */ label = gtk_label_new(_("Vendor:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 6, 7, GTK_FILL, GTK_FILL, 2, 0); entry_vendor = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(entry_vendor), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_vendor), 1, 2, 6, 7); /* City */ label = gtk_label_new(_("City:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 7, 8, GTK_FILL, GTK_FILL, 2, 0); entry_city = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(entry_city), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_city), 1, 2, 7, 8); /* Attendees */ label = gtk_label_new(_("Attendees")); gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0); /* Attendees textbox */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); /*gtk_widget_set_usize(GTK_WIDGET(scrolled_window), 150, 0); */ gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox2), scrolled_window, TRUE, TRUE, 0); attendees = gtk_text_view_new(); attendees_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(attendees))); gtk_text_view_set_editable(GTK_TEXT_VIEW(attendees), TRUE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(attendees), GTK_WRAP_WORD); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(attendees)); label = gtk_label_new(_("Note")); gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0); /* Note textbox */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); /*gtk_widget_set_usize(GTK_WIDGET(scrolled_window), 150, 0); */ gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox2), scrolled_window, TRUE, TRUE, 0); note = gtk_text_view_new(); note_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(note))); gtk_text_view_set_editable(GTK_TEXT_VIEW(note), TRUE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(note), GTK_WRAP_WORD); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(note)); gtk_widget_show_all(hbox); gtk_widget_show_all(vbox); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); if (cycle_category) { /* First cycle exp_category var */ if (exp_category == CATEGORY_ALL) { new_cat = -1; } else { new_cat = find_sort_cat_pos(exp_category); } for (i=0; i= NUM_EXP_CAT_ITEMS) { exp_category = CATEGORY_ALL; break; } if ((sort_l[new_cat].Pcat) && (sort_l[new_cat].Pcat[0])) { exp_category = sort_l[new_cat].cat_num; break; } } /* Then update menu with new exp_category */ if (exp_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(exp_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(exp_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } } else { exp_category = CATEGORY_ALL; } /* The focus doesn't do any good on the application button */ gtk_widget_grab_focus(GTK_WIDGET(clist)); jp_logf(JP_LOG_DEBUG, "Expense: calling display_records\n"); display_records(); jp_logf(JP_LOG_DEBUG, "Expense: after display_records\n"); if (unique_id) { expense_find(unique_id); } return EXIT_SUCCESS; } /* * This function is called by J-Pilot before switching to another application. * The plugin is expected to perform any desirable cleanup operations before * its windows are terminated. Desirable actions include freeing allocated * memory, storing state variables, etc. */ int plugin_gui_cleanup(void) { int b; jp_logf(JP_LOG_DEBUG, "Expense: plugin_gui_cleanup\n"); b=dialog_save_changed_record(scrolled_window, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } connect_changed_signals(DISCONNECT_SIGNALS); free_myexpense_list(&glob_myexpense_list); if (pane) { /* Remove the accelerators */ #ifndef ENABLE_STOCK_BUTTONS gtk_window_remove_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(pane)), accel_group); #endif set_pref(PREF_EXPENSE_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); pane = NULL; } set_pref(PREF_EXPENSE_SORT_COLUMN, clist_col_selected, NULL, TRUE); set_pref(PREF_EXPENSE_SORT_ORDER, GTK_CLIST(clist)->sort_type, NULL, TRUE); plugin_last_time = time(NULL); return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed when J-Pilot starts up. * base_dir is where J-Pilot is compiled to be installed at (e.g. /usr/local/) */ int plugin_startup(jp_startup_info *info) { jp_init(); jp_logf(JP_LOG_DEBUG, "Expense: plugin_startup\n"); if (info) { if (info->base_dir) { jp_logf(JP_LOG_DEBUG, "Expense: base_dir = [%s]\n", info->base_dir); } } return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed before a sync occurs. * Any sync preperation can be done here. */ int plugin_pre_sync(void) { jp_logf(JP_LOG_DEBUG, "Expense: plugin_pre_sync\n"); return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed during a sync. * Notice that I don't need to sync the Expense application. Since I used * the plugin_get_db_name call to tell J-Pilot what to sync for me. It will * be done automatically. */ int plugin_sync(int sd) { jp_logf(JP_LOG_DEBUG, "Expense: plugin_sync\n"); return EXIT_SUCCESS; } static int add_search_result(const char *line, int unique_id, struct search_result **sr) { struct search_result *temp_sr; jp_logf(JP_LOG_DEBUG, "Expense: add_search_result for [%s]\n", line); temp_sr=malloc(sizeof(struct search_result)); if (!temp_sr) { return EXIT_FAILURE; } temp_sr->unique_id=unique_id; temp_sr->line=strdup(line); temp_sr->next = *sr; *sr = temp_sr; return 0; } /* * This function is called when the user does a search. It should return * records which match the search string. */ int plugin_search(const char *search_string, int case_sense, struct search_result **sr) { GList *records; GList *temp_list; buf_rec *br; struct MyExpense mexp; int num, count; char *line; jp_logf(JP_LOG_DEBUG, "Expense: plugin_search\n"); records = NULL; *sr = NULL; /* This function takes care of reading the Database for us */ num = jp_read_DB_files("ExpenseDB", &records); if (-1 == num) return 0; count = 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } /* Since deleted and modified records are also returned and we don't * want to see those we skip over them. */ if ((br->rt == DELETED_PALM_REC) || (br->rt == DELETED_PC_REC) || (br->rt == MODIFIED_PALM_REC)) { continue; } mexp.attrib = br->attrib; mexp.unique_id = br->unique_id; mexp.rt = br->rt; /* We need to unpack the record blobs from the database. * unpack_Expense is already written in pilot-link, but normally * an unpack must be written for each type of application */ if (unpack_Expense(&(mexp.ex), br->buf, br->size)!=0) { line = NULL; if (jp_strstr(mexp.ex.amount, search_string, case_sense)) line = mexp.ex.amount; if (jp_strstr(mexp.ex.vendor, search_string, case_sense)) line = mexp.ex.vendor; if (jp_strstr(mexp.ex.city, search_string, case_sense)) line = mexp.ex.city; if (jp_strstr(mexp.ex.attendees, search_string, case_sense)) line = mexp.ex.attendees; if (jp_strstr(mexp.ex.note, search_string, case_sense)) line = mexp.ex.note; if (line) { /* Add it to our result list */ jp_logf(JP_LOG_DEBUG, "Expense: calling add_search_result\n"); add_search_result(line, br->unique_id, sr); jp_logf(JP_LOG_DEBUG, "Expense: back from add_search_result\n"); count++; } free_Expense(&(mexp.ex)); } } jp_free_DB_records(&records); return count; } int plugin_help(char **text, int *width, int *height) { /* We could also pass back *text=NULL * and implement whatever we wanted to here. */ char plugin_name[200]; static_plugin_get_name(plugin_name, sizeof(plugin_name)); *text = g_strdup_printf( /*-------------------------------------------*/ _("%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" ), plugin_name ); *height = 0; *width = 0; return EXIT_SUCCESS; } /* * This is a plugin callback function called after a sync. */ int plugin_post_sync(void) { jp_logf(JP_LOG_DEBUG, "Expense: plugin_post_sync\n"); return EXIT_SUCCESS; } /* * This is a plugin callback function called during program exit. */ int plugin_exit_cleanup(void) { jp_logf(JP_LOG_DEBUG, "Expense: plugin_exit_cleanup\n"); return EXIT_SUCCESS; } jpilot-1.8.2/Expense/Makefile.in0000664000175000017500000005465712336026321013441 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Expense DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libexpense_la_DEPENDENCIES = am__libexpense_la_SOURCES_DIST = expense.c @MAKE_EXPENSE_TRUE@am_libexpense_la_OBJECTS = \ @MAKE_EXPENSE_TRUE@ libexpense_la-expense.lo libexpense_la_OBJECTS = $(am_libexpense_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libexpense_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libexpense_la_CFLAGS) \ $(CFLAGS) $(libexpense_la_LDFLAGS) $(LDFLAGS) -o $@ @MAKE_EXPENSE_TRUE@am_libexpense_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libexpense_la_SOURCES) DIST_SOURCES = $(am__libexpense_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@/@PACKAGE@/plugins libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @MAKE_EXPENSE_TRUE@lib_LTLIBRARIES = libexpense.la @MAKE_EXPENSE_TRUE@libexpense_la_SOURCES = expense.c @MAKE_EXPENSE_TRUE@libexpense_la_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ -I$(top_srcdir) @MAKE_EXPENSE_TRUE@libexpense_la_LDFLAGS = -module -avoid-version @MAKE_EXPENSE_TRUE@libexpense_la_LIBADD = @GTK_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Expense/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Expense/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libexpense.la: $(libexpense_la_OBJECTS) $(libexpense_la_DEPENDENCIES) $(EXTRA_libexpense_la_DEPENDENCIES) $(AM_V_CCLD)$(libexpense_la_LINK) $(am_libexpense_la_rpath) $(libexpense_la_OBJECTS) $(libexpense_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libexpense_la-expense.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libexpense_la-expense.lo: expense.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libexpense_la_CFLAGS) $(CFLAGS) -MT libexpense_la-expense.lo -MD -MP -MF $(DEPDIR)/libexpense_la-expense.Tpo -c -o libexpense_la-expense.lo `test -f 'expense.c' || echo '$(srcdir)/'`expense.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libexpense_la-expense.Tpo $(DEPDIR)/libexpense_la-expense.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='expense.c' object='libexpense_la-expense.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libexpense_la_CFLAGS) $(CFLAGS) -c -o libexpense_la-expense.lo `test -f 'expense.c' || echo '$(srcdir)/'`expense.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/Makefile.am0000664000175000017500000001044412336026630012006 00000000000000SUBDIRS = m4 po Expense SyncTime KeyRing dialer icons docs empty EXTRA_DIST = config.rpath mkinstalldirs reconf autogen.sh \ intltool-extract.in intltool-merge.in intltool-update.in gettext.h \ ChangeLog ChangeLog.git \ po/POTFILES \ jpilot.spec \ SlackBuild description-pak \ jpilot.desktop \ $(color_DATA) \ jpilot.xpm DISTCLEANFILES = intltool-extract intltool-merge intltool-update ChangeLog.git desktopdir = $(datadir)/applications desktop_DATA = jpilot.desktop # The skin files for changing jpilot appearance colordir = $(pkgdatadir) color_DATA = \ jpilotrc.blue jpilotrc.default jpilotrc.green jpilotrc.purple \ jpilotrc.steel # Instructions for the code to build begins here bin_PROGRAMS = jpilot jpilot-dump jpilot-sync jpilot-merge jpilot_SOURCES = \ address.c \ address.h \ address_gui.c \ alarms.c \ alarms.h \ category.c \ calendar.c \ calendar.h \ contact.c \ cp1250.c \ cp1250.h \ dat.c \ datebook.c \ datebook.h \ datebook_gui.c \ dialer.c \ export_gui.c \ export.h \ i18n.h \ import_gui.c \ install_gui.c \ install_user.c \ install_user.h \ japanese.c \ japanese.h \ jpilot.c \ jpilot.h \ jp-contact.c \ jp-pi-contact.h \ libplugin.c \ libplugin.h \ log.c \ log.h \ memo.c \ memo_gui.c \ memo.h \ monthview_gui.c \ otherconv.c \ otherconv.h \ password.c \ password.h \ pidfile.c \ pidfile.h \ plugins.c \ plugins.h \ prefs.c \ prefs_gui.c \ prefs_gui.h \ prefs.h \ print.c \ print_gui.c \ print.h \ print_headers.c \ print_headers.h \ print_logo.c \ print_logo.h \ restore_gui.c \ restore.h \ russian.c \ russian.h \ search_gui.c \ stock_buttons.h \ sync.c \ sync.h \ todo.c \ todo_gui.c \ todo.h \ utils.c \ utils.h \ weekview_gui.c \ icons/address.xpm \ icons/datebook.xpm \ icons/memo.xpm \ icons/todo.xpm \ icons/sync.xpm \ icons/cancel_sync.xpm \ icons/backup.xpm \ icons/clist_mini_icons.h \ icons/appl_menu_icons.h \ icons/lock_icons.h jpilot_dump_SOURCES = \ address.c \ calendar.c \ category.c \ cp1250.c \ datebook.c \ japanese.c \ jpilot-dump.c \ libplugin.c \ log.c \ memo.c \ otherconv.c \ password.c \ plugins.c \ prefs.c \ russian.c \ todo.c \ utils.c \ jp-contact.c jpilot_sync_SOURCES = \ cp1250.c \ category.c \ jpilot-sync.c \ japanese.c \ libplugin.c \ log.c \ otherconv.c \ password.c \ plugins.c \ prefs.c \ russian.c \ sync.c \ utils.c \ jp-contact.c jpilot_merge_SOURCES = \ cp1250.c \ japanese.c \ libplugin.c \ log.c \ jpilot-merge.c \ otherconv.c \ plugins.c \ prefs.c \ russian.c \ utils.c # Include gettext macros that we have placed in the m4 directory # and include in the distribution. ACLOCAL_AMFLAGS = -I m4 # Add i18n support localedir = $(datadir)/locale I18NDEFS = -DLOCALEDIR=\"$(localedir)\" AM_CFLAGS= @PILOT_FLAGS@ @GTK_CFLAGS@ ${I18NDEFS} # Add linkflags jpilot_LDFLAGS = -export-dynamic jpilot_LDADD=@LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_dump_LDADD=@LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_sync_LDFLAGS = -export-dynamic jpilot_sync_LDADD=@LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_merge_LDADD=@LIBS@ @PILOT_LIBS@ @GTK_LIBS@ ################################################################################ ## The rest of the file is copied over to the Makefile with only variable ## substitution. ################################################################################ # Automatically update the libtool script if it becomes out-of-date. LIBTOOL_DEPS = @LIBTOOL_DEPS@ libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck better-world: echo "make better-world: rm -rf -any -all windows" peace: echo "make peace: not war" test_compile: @-rm -f autogen.log autogen.log2 make.log @echo "Configuring Jpilot build" autogen.sh > autogen.log 2>&1 @-grep -v 'warning: underquoted definition' autogen.log > autogen.log2 !(grep 'warn' autogen.log2) !(grep ' error' autogen.log2) make > make.log 2>&1 !(grep 'warn' make.log) !(grep 'error' make.log) ChangeLog.cvs: rcs2log -h hostname | perl -pe \ 's//Ludovic Rousseau /; \ s//Judd Montgomery /; \ s//David A. Desrosiers /; \ s//Rik Wehbring /' > $@ .PHONY: ChangeLog.cvs ChangeLog.git: git log --pretty > $@ .PHONY: ChangeLog.git jpilot-1.8.2/gettext.h0000664000175000017500000002237612320101153011601 00000000000000/* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc. 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, 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option. */ #if ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by the gettext() and ngettext() macros. This is an alternative to calling textdomain(), and is useful for libraries. */ # ifdef DEFAULT_TEXT_DOMAIN # undef gettext # define gettext(Msgid) \ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) # endif #else /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. We don't include as well because people using "gettext.h" will not include , and also including would fail on SunOS 4, whereas is OK. */ #if defined(__sun) # include #endif /* Many header files from the libstdc++ coming with g++ 3.3 or newer include , which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. */ #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) # include # if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H # include # endif #endif /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # define gettext(Msgid) ((const char *) (Msgid)) # define dgettext(Domainname, Msgid) ((const char *) (Msgid)) # define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define textdomain(Domainname) ((const char *) (Domainname)) # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) # define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String /* The separator between msgctxt and msgid in a .mo file. */ #define GETTEXT_CONTEXT_GLUE "\004" /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be short and rarely need to change. The letter 'p' stands for 'particular' or 'special'. */ #ifdef DEFAULT_TEXT_DOMAIN # define pgettext(Msgctxt, Msgid) \ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #else # define pgettext(Msgctxt, Msgid) \ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #endif #define dpgettext(Domainname, Msgctxt, Msgid) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) #ifdef DEFAULT_TEXT_DOMAIN # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #else # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #endif #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * pgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, int category) { const char *translation = dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) return msgid; else return translation; } #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * npgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { const char *translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); if (translation == msg_ctxt_id || translation == msgid_plural) return (n == 1 ? msgid : msgid_plural); else return translation; } /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID can be arbitrary expressions. But for string literals these macros are less efficient than those above. */ #include #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \ (__GNUC__ >= 3 || __GNUG__ >= 2 /* || __STDC_VERSION__ >= 199901L */ ) #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include #endif #define pgettext_expr(Msgctxt, Msgid) \ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcgettext (domain, msg_ctxt_id, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (translation != msg_ctxt_id) return translation; } return msgid; } #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcnpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (!(translation == msg_ctxt_id || translation == msgid_plural)) return translation; } return (n == 1 ? msgid : msgid_plural); } #endif /* _LIBGETTEXT_H */ jpilot-1.8.2/jp-contact.c0000664000175000017500000000465712340261240012162 00000000000000/******************************************************************************* * contact.c: Translate Palm contact data formats * A module of J-Pilot http://jpilot.org * * Copyright (C) 2003-2014 by Judd Montgomery * * This code is NOT derived from contact.c from pilot-link * pilot-link's contact.c was based on this code. * This code was however based on address.c and was originally written to * be part of pilot-link, however licensing issues * prevent this code from being part of pilot-link. * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include #include #include #include "pi-macros.h" #include "jp-pi-contact.h" #include "config.h" #include /****************************** Main Code *************************************/ void jp_free_Contact(struct Contact *c) { free_Contact(c); } int jp_unpack_Contact(struct Contact *c, pi_buffer_t *buf) { // Pilot-link doesn't do anything with the contactsType parameter yet return unpack_Contact(c, buf, contacts_v10); } int jp_pack_Contact(struct Contact *c, pi_buffer_t *buf) { // Pilot-link doesn't do anything with the contactsType parameter yet return pack_Contact(c, buf, contacts_v10); } int jp_Contact_add_blob(struct Contact *c, struct ContactBlob *blob) { return Contact_add_blob(c, blob); } int jp_Contact_add_picture(struct Contact *c, struct ContactPicture *p) { return Contact_add_picture(c, p); } int jp_unpack_ContactAppInfo(struct ContactAppInfo *ai, pi_buffer_t *buf) { return unpack_ContactAppInfo(ai, buf); } int jp_pack_ContactAppInfo(struct ContactAppInfo *ai, pi_buffer_t *buf) { return pack_ContactAppInfo(ai, buf); } jpilot-1.8.2/datebook_gui.c0000664000175000017500000061127112340261240012550 00000000000000/******************************************************************************* * datebook_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include "datebook.h" #include "calendar.h" #include "i18n.h" #include "utils.h" #include "todo.h" #include "log.h" #include "prefs.h" #include "password.h" #include "export.h" #include "print.h" #include "alarms.h" #include "stock_buttons.h" /********************************* Constants **********************************/ //#define EASTER #define PAGE_NONE 0 #define PAGE_DAY 1 #define PAGE_WEEK 2 #define PAGE_MONTH 3 #define PAGE_YEAR 4 #define BEGIN_DATE_BUTTON 5 /* Maximum length of description (not including the null) */ /* todo check this before every record write */ #define MAX_DESC_LEN 255 #define DATEBOOK_MAX_COLUMN_LEN 80 #define DB_TIME_COLUMN 0 #define DB_NOTE_COLUMN 1 #define DB_ALARM_COLUMN 2 #ifdef ENABLE_DATEBK # define DB_FLOAT_COLUMN 3 static int DB_APPT_COLUMN=4; #else static int DB_APPT_COLUMN=3; #endif #define NUM_DATEBOOK_CAT_ITEMS 16 #define NUM_EXPORT_TYPES 3 #define NUM_DBOOK_CSV_FIELDS 19 #define NUM_CALENDAR_CSV_FIELDS 20 /* RFCs use CRLF for Internet newline */ #define CRLF "\x0D\x0A" #define BROWSE_OK 1 #define BROWSE_CANCEL 2 #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 #define CAL_DAY_SELECTED 327 #define UPDATE_DATE_ENTRIES 0x01 #define UPDATE_DATE_MENUS 0x02 #define START_TIME_FLAG 0x00 #define END_TIME_FLAG 0x80 #define HOURS_FLAG 0x40 /* #define DAY_VIEW */ /******************************* Global vars **********************************/ /* Keeps track of whether code is using Datebook, or Calendar database * 0 is Datebook, 1 is Calendar */ static long datebook_version=0; /* This refers to the main jpilot window. This should probably * be replaced somehow by a GTK call which works out what the * top-level window is from the widget. Right now it relies * on the fact that there is only one item titled "window" in * the global name space */ extern GtkWidget *window; extern GtkWidget *glob_date_label; extern gint glob_date_timer_tag; static GtkWidget *pane; static GtkWidget *note_pane; static GtkWidget *todo_pane; static GtkWidget *todo_vbox; static struct CalendarAppInfo dbook_app_info; static int dbook_category = CATEGORY_ALL; static struct sorted_cats sort_l[NUM_DATEBOOK_CAT_ITEMS]; static GtkWidget *main_calendar; static GtkWidget *dow_label; static GtkWidget *clist; static GtkWidget *dbook_desc, *dbook_note; static GObject *dbook_desc_buffer,*dbook_note_buffer; /* Need two extra slots for the ALL category and Edit Categories... */ static GtkWidget *dbook_cat_menu_item1[NUM_DATEBOOK_CAT_ITEMS+2]; static GtkWidget *dbook_cat_menu_item2[NUM_DATEBOOK_CAT_ITEMS]; static GtkWidget *category_menu1; static GtkWidget *category_menu2; static GtkWidget *private_checkbox; static GtkWidget *check_button_alarm; static GtkWidget *check_button_day_endon; static GtkWidget *check_button_week_endon; static GtkWidget *check_button_mon_endon; static GtkWidget *check_button_year_endon; static GtkWidget *units_entry; static GtkWidget *repeat_day_entry; static GtkWidget *repeat_week_entry; static GtkWidget *repeat_mon_entry; static GtkWidget *repeat_year_entry; static GtkWidget *radio_button_no_time; static GtkWidget *radio_button_appt_time; static GtkWidget *radio_button_alarm_min; static GtkWidget *radio_button_alarm_hour; static GtkWidget *radio_button_alarm_day; static GtkWidget *location_entry; static GtkWidget *glob_endon_day_button; static struct tm glob_endon_day_tm; static GtkWidget *glob_endon_week_button; static struct tm glob_endon_week_tm; static GtkWidget *glob_endon_mon_button; static struct tm glob_endon_mon_tm; static GtkWidget *glob_endon_year_button; static struct tm glob_endon_year_tm; static GtkWidget *toggle_button_repeat_days[7]; static GtkWidget *toggle_button_repeat_mon_byday; static GtkWidget *toggle_button_repeat_mon_bydate; static GtkWidget *notebook; static int current_day; /* range 1-31 */ static int current_month; /* range 0-11 */ static int current_year; /* years since 1900 */ static int clist_row_selected; static int record_changed; #ifdef ENABLE_DATEBK int datebk_category=0xFFFF; /* This is a bitmask */ static GtkWidget *datebk_entry; #endif static GtkWidget *hbox_alarm1, *hbox_alarm2; static GtkWidget *scrolled_window; static struct tm begin_date, end_date; static GtkWidget *option1, *option2, *option3, *option4; static GtkWidget *begin_date_button; static GtkWidget *begin_time_entry, *end_time_entry; static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *undelete_record_button; static GtkWidget *copy_record_button; static GtkWidget *cancel_record_button; static GtkAccelGroup *accel_group; static CalendarEventList *glob_cel = NULL; /* For todo list */ static GtkWidget *todo_clist; static GtkWidget *show_todos_button; static GtkWidget *todo_scrolled_window; static ToDoList *datebook_todo_list=NULL; /* For export GUI */ static GtkWidget *export_window; static GtkWidget *save_as_entry; static GtkWidget *export_radio_type[NUM_EXPORT_TYPES+1]; static int glob_export_type; /****************************** Prototypes ************************************/ static void highlight_days(void); static int datebook_find(void); static int datebook_update_clist(void); static void update_endon_button(GtkWidget *button, struct tm *t); static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); static void cb_add_new_record(GtkWidget *widget, gpointer data); static void set_new_button_to(int new_state); static void connect_changed_signals(int con_or_dis); static int datebook_export_gui(GtkWidget *main_window, int x, int y); /****************************** Main Code *************************************/ static int datebook_to_text(struct CalendarEvent *cale, char *text, int len) { int i; const char *short_date; const char *pref_time; char temp[255]; char text_time[200]; char str_begin_date[20]; char str_begin_time[20]; char str_end_time[20]; char text_repeat_type[40]; char text_repeat_day[200]; char text_end_date[200]; char text_repeat_freq[200]; char text_alarm[40]; char text_repeat_days[200]; char text_exceptions[65535]; char *adv_type[] = { N_("Minutes"), N_("Hours"), N_("Days") }; char *repeat_type[] = { N_("Repeat Never"), N_("Repeat Daily"), N_("Repeat Weekly"), N_("Repeat MonthlyByDay"), N_("Repeat MonthlyByDate"), N_("Repeat YearlyDate"), N_("Repeat YearlyDay") }; char *days[] = { N_("Su"), N_("Mo"), N_("Tu"), N_("We"), N_("Th"), N_("Fr"), N_("Sa"), N_("Su") }; if ((cale->repeatWeekstart<0) ||(cale->repeatWeekstart>6)) { cale->repeatWeekstart=0; } get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref(PREF_TIME, NULL, &pref_time); /* Event date/time */ strftime(str_begin_date, sizeof(str_begin_date), short_date, &(cale->begin)); if (cale->event) { sprintf(text_time, _("Start Date: %s\nTime: Event"), str_begin_date); } else { strftime(str_begin_time, sizeof(str_begin_time), pref_time, &(cale->begin)); strftime(str_end_time, sizeof(str_end_time), pref_time, &(cale->end)); str_begin_date[19]='\0'; str_begin_time[19]='\0'; str_end_time[19]='\0'; sprintf(text_time, _("Start Date: %s\nTime: %s to %s"), str_begin_date, str_begin_time, str_end_time); } /* Alarm */ if (cale->alarm) { sprintf(text_alarm, " %d ", cale->advance); i=cale->advanceUnits; if ((i>-1) && (i<3)) { strcat(text_alarm, adv_type[i]); } else { strcat(text_alarm, _("Unknown")); } } else { text_alarm[0]='\0'; } /* Repeat Type */ i=cale->repeatType; if ((i > -1) && (i < 7)) { strcpy(text_repeat_type, _(repeat_type[i])); } else { strcpy(text_repeat_type, _("Unknown")); } /* End Date */ strcpy(text_end_date, _("End Date: ")); if (cale->repeatForever) { strcat(text_end_date, _("Never")); } else { strftime(temp, sizeof(temp), short_date, &(cale->repeatEnd)); strcat(text_end_date, temp); } strcat(text_end_date, "\n"); sprintf(text_repeat_freq, _("Repeat Frequency: %d\n"), cale->repeatFrequency); if (cale->repeatType==calendarRepeatNone) { text_end_date[0]='\0'; text_repeat_freq[0]='\0'; } /* Repeat Day (for MonthlyByDay) */ text_repeat_day[0]='\0'; if (cale->repeatType==calendarRepeatMonthlyByDay) { sprintf(text_repeat_day, _("Monthly Repeat Day %d\n"), cale->repeatDay); } /* Repeat Days (for weekly) */ text_repeat_days[0]='\0'; if (cale->repeatType==calendarRepeatWeekly) { strcpy(text_repeat_days, _("Repeat on Days:")); for (i=0; i<7; i++) { if (cale->repeatDays[i]) { strcat(text_repeat_days, " "); strcat(text_repeat_days, _(days[i])); } } strcat(text_repeat_days, "\n"); } text_exceptions[0]='\0'; if (cale->exceptions > 0) { sprintf(text_exceptions, _("Number of exceptions: %d"), cale->exceptions); for (i=0; iexceptions; i++) { strcat(text_exceptions, "\n"); strftime(temp, sizeof(temp), short_date, &(cale->exception[i])); strcat(text_exceptions, temp); if (strlen(text_exceptions)>65000) { strcat(text_exceptions, _("\nmore...")); break; } } strcat(text_exceptions, "\n"); } if (datebook_version==0) { /* DateBook app */ g_snprintf(text, len, "%s %s\n" "%s %s\n" "%s\n" "%s %s%s\n" "%s %s\n" "%s" "%s" "%s %s\n" "%s" "%s" "%s", _("Description:"), cale->description, _("Note:"), (cale->note ? cale->note : ""), text_time, _("Alarm:"), cale->alarm ? _("Yes"):_("No"), text_alarm, _("Repeat Type:"), text_repeat_type, text_repeat_freq, text_end_date, _("Start of Week:"), _(days[cale->repeatWeekstart]), text_repeat_day, text_repeat_days, text_exceptions ); } else { /* Calendar app */ g_snprintf(text, len, "%s %s\n" "%s %s\n" "%s %s\n" "%s\n" "%s %s%s\n" "%s %s\n" "%s" "%s" "%s %s\n" "%s" "%s" "%s", _("Description:"), cale->description, _("Note:"), (cale->note ? cale->note : ""), _("Location:"), (cale->location ? cale->location : ""), text_time, _("Alarm:"), cale->alarm ? _("Yes"):_("No"), text_alarm, _("Repeat Type:"), text_repeat_type, text_repeat_freq, text_end_date, _("Start of Week:"), _(days[cale->repeatWeekstart]), text_repeat_day, text_repeat_days, text_exceptions ); } return EXIT_SUCCESS; } /*************** Start Import Code ***************/ static int cb_dbook_import(GtkWidget *parent_window, const char *file_path, int type) { FILE *in; char text[65536]; char description[65536]; char note[65536]; char location[65536]; struct CalendarEvent new_cale; unsigned char attrib; int i, str_i, ret, index; int import_all; AppointmentList *alist; CalendarEventList *celist; CalendarEventList *temp_celist; struct CategoryAppInfo cai; char old_cat_name[32]; int suggested_cat_num; int new_cat_num; int priv; int year, month, day, hour, minute; in=fopen(file_path, "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), file_path); return EXIT_FAILURE; } /* CSV */ if (type==IMPORT_TYPE_CSV) { jp_logf(JP_LOG_DEBUG, "Datebook import CSV [%s]\n", file_path); /* Get the first line containing the format and check for reasonableness */ if (fgets(text, sizeof(text), in) == NULL) { jp_logf(JP_LOG_WARN, "fgets failed %s %d\n", __FILE__, __LINE__); } if (datebook_version==0) { ret = verify_csv_header(text, NUM_DBOOK_CSV_FIELDS, file_path); } else { ret = verify_csv_header(text, NUM_CALENDAR_CSV_FIELDS, file_path); } if (EXIT_FAILURE == ret) return EXIT_FAILURE; import_all=FALSE; while (1) { memset(&new_cale, 0, sizeof(new_cale)); /* Read the category field */ read_csv_field(in, text, sizeof(text)); if (feof(in)) break; #ifdef JPILOT_DEBUG printf("category is [%s]\n", text); #endif g_strlcpy(old_cat_name, text, 16); /* Figure out what the best category number is */ suggested_cat_num=0; for (i=0; i 0) { new_cale.description=description; } else { new_cale.description=NULL; } /* Note */ read_csv_field(in, note, sizeof(note)); if (strlen(note) > 0) { new_cale.note=note; } else { new_cale.note=NULL; } if (datebook_version) { /* Location */ read_csv_field(in, location, sizeof(location)); if (strlen(location) > 0) { new_cale.location=location; } else { new_cale.location=NULL; } } /* Event */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.event)); /* Begin Time */ memset(&(new_cale.begin), 0, sizeof(new_cale.begin)); read_csv_field(in, text, sizeof(text)); sscanf(text, "%d %d %d %d:%d", &year, &month, &day, &hour, &minute); new_cale.begin.tm_year=year-1900; new_cale.begin.tm_mon=month-1; new_cale.begin.tm_mday=day; new_cale.begin.tm_hour=hour; new_cale.begin.tm_min=minute; new_cale.begin.tm_isdst=-1; mktime(&(new_cale.begin)); /* End Time */ memset(&(new_cale.end), 0, sizeof(new_cale.end)); read_csv_field(in, text, sizeof(text)); sscanf(text, "%d %d %d %d:%d", &year, &month, &day, &hour, &minute); new_cale.end.tm_year=year-1900; new_cale.end.tm_mon=month-1; new_cale.end.tm_mday=day; new_cale.end.tm_hour=hour; new_cale.end.tm_min=minute; new_cale.end.tm_isdst=-1; mktime(&(new_cale.end)); /* Alarm */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.alarm)); /* Alarm Advance */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.advance)); /* Advance Units */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.advanceUnits)); /* Repeat Type */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(i)); new_cale.repeatType=i; /* Repeat Forever */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.repeatForever)); /* Repeat End */ memset(&(new_cale.repeatEnd), 0, sizeof(new_cale.repeatEnd)); read_csv_field(in, text, sizeof(text)); sscanf(text, "%d %d %d", &year, &month, &day); new_cale.repeatEnd.tm_year=year-1900; new_cale.repeatEnd.tm_mon=month-1; new_cale.repeatEnd.tm_mday=day; new_cale.repeatEnd.tm_isdst=-1; mktime(&(new_cale.repeatEnd)); /* Repeat Frequency */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.repeatFrequency)); /* Repeat Day */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(i)); new_cale.repeatDay=i; /* Repeat Days */ read_csv_field(in, text, sizeof(text)); for (i=0; i<7; i++) { new_cale.repeatDays[i]=(text[i]=='1'); } /* Week Start */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.repeatWeekstart)); /* Number of Exceptions */ read_csv_field(in, text, sizeof(text)); sscanf(text, "%d", &(new_cale.exceptions)); /* Exceptions */ ret = read_csv_field(in, text, sizeof(text)); new_cale.exception=calloc(new_cale.exceptions, sizeof(struct tm)); for (str_i=0, i=0; i MAX_DESC_LEN) { new_cale.description[MAX_DESC_LEN+1]='\0'; jp_logf(JP_LOG_WARN, _("Appointment description text > %d, truncating to %d\n"), MAX_DESC_LEN, MAX_DESC_LEN); } pc_calendar_write(&new_cale, NEW_PC_REC, attrib, NULL); } } } /* Palm Desktop DAT format */ if (type==IMPORT_TYPE_DAT) { jp_logf(JP_LOG_DEBUG, "Datebook import DAT [%s]\n", file_path); if (dat_check_if_dat_file(in)!=DAT_DATEBOOK_FILE) { dialog_generic_ok(notebook, _("Error"), DIALOG_ERROR, _("File doesn't appear to be datebook.dat format\n")); fclose(in); return EXIT_FAILURE; } alist=NULL; dat_get_appointments(in, &alist, &cai); /* Copy this to a calendar event list */ copy_appointments_to_calendarEvents(alist, &celist); free_AppointmentList(&alist); import_all=FALSE; for (temp_celist=celist; temp_celist; temp_celist=temp_celist->next) { index=temp_celist->mcale.unique_id-1; if (index<0) { g_strlcpy(old_cat_name, _("Unfiled"), 16); } else { g_strlcpy(old_cat_name, cai.name[index], 16); } /* Figure out what category it was in the dat file */ index=temp_celist->mcale.unique_id-1; suggested_cat_num=0; if (index>-1) { for (i=0; imcale.cale), text, 65535); ret=import_record_ask(parent_window, pane, text, &(dbook_app_info.category), old_cat_name, (temp_celist->mcale.attrib & 0x10), suggested_cat_num, &new_cat_num); } else { new_cat_num=suggested_cat_num; } if (ret==DIALOG_SAID_IMPORT_QUIT) break; if (ret==DIALOG_SAID_IMPORT_SKIP) continue; if (ret==DIALOG_SAID_IMPORT_ALL) import_all=TRUE; attrib = (new_cat_num & 0x0F) | ((temp_celist->mcale.attrib & 0x10) ? dlpRecAttrSecret : 0); if ((ret==DIALOG_SAID_IMPORT_YES) || (import_all)) { pc_calendar_write(&(temp_celist->mcale.cale), NEW_PC_REC, attrib, NULL); } } free_CalendarEventList(&celist); } datebook_refresh(FALSE, TRUE); fclose(in); return EXIT_SUCCESS; } int datebook_import(GtkWidget *window) { char *type_desc[] = { N_("CSV (Comma Separated Values)"), N_("DAT/DBA (Palm Archive Formats)"), NULL }; int type_int[] = { IMPORT_TYPE_CSV, IMPORT_TYPE_DAT, 0 }; /* Hide ABA import of CalendarDB until file format has been decoded */ if (datebook_version==1) { type_desc[1] = NULL; type_int[1] = 0; } import_gui(window, pane, type_desc, type_int, cb_dbook_import); return EXIT_SUCCESS; } /*** End Import Code ***/ /*************** Start Export Code ***************/ /* TODO rename */ static void appt_export_ok(int type, const char *filename) { MyCalendarEvent *mcale; CalendarEventList *cel, *temp_list; FILE *out; struct stat statb; int i, r; char *button_text[]={N_("OK")}; char *button_overwrite_text[]={N_("No"), N_("Yes")}; char text[1024]; char csv_text[65550]; char *p; gchar *end; time_t ltime; struct tm *now = NULL; struct tm ical_time; long char_set; char username[256]; char hostname[256]; const char *svalue; long userid; const char *short_date; char pref_time[40]; char str1[256], str2[256]; char date_string[1024]; char *utf; /* Open file for export, including corner cases where file exists or * can't be opened */ if (!stat(filename, &statb)) { if (S_ISDIR(statb.st_mode)) { g_snprintf(text, sizeof(text), _("%s is a directory"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } g_snprintf(text, sizeof(text), _("Do you want to overwrite file %s?"), filename); r = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_QUESTION, text, 2, button_overwrite_text); if (r!=DIALOG_SAID_2) { return; } } out = fopen(filename, "w"); if (!out) { g_snprintf(text, sizeof(text), _("Error opening file: %s"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } /* Write a header for TEXT file */ if (type == EXPORT_TYPE_TEXT) { get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(date_string, sizeof(date_string), "%s %s", str1, str2); if (datebook_version==0) { fprintf(out, _("Datebook exported from %s %s on %s\n\n"), PN,VERSION,date_string); } else { fprintf(out, _("Calendar exported from %s %s on %s\n\n"), PN,VERSION,date_string); } } /* Write a header to the CSV file */ if (type == EXPORT_TYPE_CSV) { if (datebook_version==0) { fprintf(out, "CSV datebook version "VERSION": Category, Private, " "Description, Note, Event, Begin, End, Alarm, Advance, " "Advance Units, Repeat Type, Repeat Forever, Repeat End, " "Repeat Frequency, Repeat Day, Repeat Days, " "Week Start, Number of Exceptions, Exceptions\n"); } else { fprintf(out, "CSV calendar version "VERSION": Category, Private, " "Description, Note, Location, " "Event, Begin, End, Alarm, Advance, " "Advance Units, Repeat Type, Repeat Forever, Repeat End, " "Repeat Frequency, Repeat Day, Repeat Days, " "Week Start, Number of Exceptions, Exceptions\n"); } } /* Special setup for ICAL export */ if (type == EXPORT_TYPE_ICALENDAR) { get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set < CHAR_SET_UTF) { jp_logf(JP_LOG_WARN, _("Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n")); } /* Convert User Name stored in Palm character set */ get_pref(PREF_USER, NULL, &svalue); g_strlcpy(text, svalue, 128); text[127] = '\0'; charset_p2j(text, 128, char_set); str_to_ical_str(username, sizeof(username), text); get_pref(PREF_USER_ID, &userid, NULL); gethostname(text, sizeof(hostname)); text[sizeof(hostname)-1]='\0'; str_to_ical_str(hostname, sizeof(hostname), text); time(<ime); now = gmtime(<ime); } get_pref(PREF_CHAR_SET, &char_set, NULL); cel=NULL; get_days_calendar_events2(&cel, NULL, 2, 2, 2, CATEGORY_ALL, NULL); mcale=NULL; for (i=0, temp_list=cel; temp_list; temp_list = temp_list->next, i++) { mcale = &(temp_list->mcale); switch (type) { case EXPORT_TYPE_TEXT: csv_text[0]='\0'; datebook_to_text(&(mcale->cale), csv_text, sizeof(csv_text)); fprintf(out, "%s\n", csv_text); break; case EXPORT_TYPE_CSV: if (datebook_version==0) { fprintf(out, "\"\","); /* No category for Datebook */ } else { utf = charset_p2newj(dbook_app_info.category.name[mcale->attrib & 0x0F], 16, char_set); str_to_csv_str(csv_text, utf); fprintf(out, "\"%s\",", csv_text); g_free(utf); } fprintf(out, "\"%s\",", (mcale->attrib & dlpRecAttrSecret) ? "1":"0"); str_to_csv_str(csv_text, mcale->cale.description); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mcale->cale.note); fprintf(out, "\"%s\",", csv_text); if (datebook_version) { str_to_csv_str(csv_text, mcale->cale.location); fprintf(out, "\"%s\",", csv_text); } fprintf(out, "\"%d\",", mcale->cale.event); fprintf(out, "\"%d %02d %02d %02d:%02d\",", mcale->cale.begin.tm_year+1900, mcale->cale.begin.tm_mon+1, mcale->cale.begin.tm_mday, mcale->cale.begin.tm_hour, mcale->cale.begin.tm_min); fprintf(out, "\"%d %02d %02d %02d:%02d\",", mcale->cale.end.tm_year+1900, mcale->cale.end.tm_mon+1, mcale->cale.end.tm_mday, mcale->cale.end.tm_hour, mcale->cale.end.tm_min); fprintf(out, "\"%s\",", (mcale->cale.alarm) ? "1":"0"); fprintf(out, "\"%d\",", mcale->cale.advance); fprintf(out, "\"%d\",", mcale->cale.advanceUnits); fprintf(out, "\"%d\",", mcale->cale.repeatType); if (mcale->cale.repeatType == calendarRepeatNone) { /* Single events don't have valid repeat data fields so * a standard output data template is used for them */ fprintf(out, "\"0\",\"1970 01 01\",\"0\",\"0\",\"0\",\"0\",\"0\",\""); } else { fprintf(out, "\"%d\",", mcale->cale.repeatForever); if (mcale->cale.repeatForever) { /* repeatForever events don't have valid end date fields * so a standard output date is used for them */ fprintf(out, "\"1970 01 01\","); } else { fprintf(out, "\"%d %02d %02d\",", mcale->cale.repeatEnd.tm_year+1900, mcale->cale.repeatEnd.tm_mon+1, mcale->cale.repeatEnd.tm_mday); } fprintf(out, "\"%d\",", mcale->cale.repeatFrequency); fprintf(out, "\"%d\",", mcale->cale.repeatDay); fprintf(out, "\""); for (i=0; i<7; i++) { fprintf(out, "%d", mcale->cale.repeatDays[i]); } fprintf(out, "\","); fprintf(out, "\"%d\",", mcale->cale.repeatWeekstart); fprintf(out, "\"%d\",", mcale->cale.exceptions); fprintf(out, "\""); if (mcale->cale.exceptions > 0) { for (i=0; icale.exceptions; i++) { if (i>0) { fprintf(out, ","); } fprintf(out, "%d %02d %02d", mcale->cale.exception[i].tm_year+1900, mcale->cale.exception[i].tm_mon+1, mcale->cale.exception[i].tm_mday); } } /* if for exceptions */ } /* else for repeat event */ fprintf(out, "\"\n"); break; case EXPORT_TYPE_ICALENDAR: /* RFC 2445: Internet Calendaring and Scheduling Core * Object Specification */ if (i == 0) { fprintf(out, "BEGIN:VCALENDAR"CRLF); fprintf(out, "VERSION:2.0"CRLF); fprintf(out, "PRODID:%s"CRLF, FPI_STRING); } fprintf(out, "BEGIN:VEVENT"CRLF); /* XXX maybe if it's secret export a VFREEBUSY busy instead? */ if (mcale->attrib & dlpRecAttrSecret) { fprintf(out, "CLASS:PRIVATE"CRLF); } fprintf(out, "UID:palm-datebook-%08x-%08lx-%s@%s"CRLF, mcale->unique_id, userid, username, hostname); fprintf(out, "DTSTAMP:%04d%02d%02dT%02d%02d%02dZ"CRLF, now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); if (datebook_version) { /* Calendar supports categories and locations */ utf = charset_p2newj(dbook_app_info.category.name[mcale->attrib & 0x0F], 16, char_set); str_to_ical_str(text, sizeof(text), utf); fprintf(out, "CATEGORIES:%s"CRLF, text); g_free(utf); if (mcale->cale.location) { str_to_ical_str(text, sizeof(text), mcale->cale.location); fprintf(out, "LOCATION:%s"CRLF, text); } } /* Create truncated description for use in SUMMARY field */ if (mcale->cale.description) { g_strlcpy(text, mcale->cale.description, 51); /* truncate the string on a UTF-8 character boundary */ if (char_set > CHAR_SET_UTF) { if (!g_utf8_validate(text, -1, (const gchar **)&end)) *end = 0; } } else { /* Handle pathological case with null description. */ text[0] = '\0'; } if ((p = strchr(text, '\n'))) { *p = '\0'; } str_to_ical_str(csv_text, sizeof(csv_text), text); fprintf(out, "SUMMARY:%s%s"CRLF, csv_text, strlen(text) > 49 ? "..." : ""); str_to_ical_str(csv_text, sizeof(csv_text), mcale->cale.description); fprintf(out, "DESCRIPTION:%s", csv_text); if (mcale->cale.note && mcale->cale.note[0]) { str_to_ical_str(csv_text, sizeof(csv_text), mcale->cale.note); fprintf(out, "\\n"CRLF" %s"CRLF, csv_text); } else { fprintf(out, CRLF); } if (mcale->cale.event) { fprintf(out, "DTSTART;VALUE=DATE:%04d%02d%02d"CRLF, mcale->cale.begin.tm_year+1900, mcale->cale.begin.tm_mon+1, mcale->cale.begin.tm_mday); /* XXX unclear: can "event" span multiple days? */ /* since DTEND is "noninclusive", should this be the next day? */ if (mcale->cale.end.tm_year != mcale->cale.begin.tm_year || mcale->cale.end.tm_mon != mcale->cale.begin.tm_mon || mcale->cale.end.tm_mday != mcale->cale.begin.tm_mday) { fprintf(out, "DTEND;VALUE=DATE:%04d%02d%02d"CRLF, mcale->cale.end.tm_year+1900, mcale->cale.end.tm_mon+1, mcale->cale.end.tm_mday); } } else { /* * These are "local" times, so will be treated as being in * the other person's timezone when they are imported. This * may or may not be what is desired. (DateBk calls this * "all time zones"). * * DateBk timezones could help us decide what to do here. * * When using DateBk timezones, we could write them out * as iCalendar timezones. * * Maybe the default should be to write an absolute (UTC) time, * and only write a "local" time when using DateBk and it says to. * It'd be interesting to see if repeated events get translated * properly when doing this, or if they become not eligible for * daylight savings. This probably depends on the importing * application. */ fprintf(out, "DTSTART:%04d%02d%02dT%02d%02d00"CRLF, mcale->cale.begin.tm_year+1900, mcale->cale.begin.tm_mon+1, mcale->cale.begin.tm_mday, mcale->cale.begin.tm_hour, mcale->cale.begin.tm_min); fprintf(out, "DTEND:%04d%02d%02dT%02d%02d00"CRLF, mcale->cale.end.tm_year+1900, mcale->cale.end.tm_mon+1, mcale->cale.end.tm_mday, mcale->cale.end.tm_hour, mcale->cale.end.tm_min); } if (mcale->cale.repeatType != calendarRepeatNone) { int wcomma, rptday; char *wday[] = {"SU","MO","TU","WE","TH","FR","SA"}; fprintf(out, "RRULE:FREQ="); switch (mcale->cale.repeatType) { case calendarRepeatNone: /* can't happen, just here to silence compiler warning */ break; case calendarRepeatDaily: fprintf(out, "DAILY"); break; case calendarRepeatWeekly: fprintf(out, "WEEKLY;BYDAY="); wcomma=0; for (i=0; i<7; i++) { if (mcale->cale.repeatDays[i]) { if (wcomma) { fprintf(out, ","); } wcomma = 1; fprintf(out, "%s", wday[i]); } } break; case calendarRepeatMonthlyByDay: rptday = (mcale->cale.repeatDay / 7) + 1; fprintf(out, "MONTHLY;BYDAY=%d%s", rptday == 5 ? -1 : rptday, wday[mcale->cale.repeatDay % 7]); break; case calendarRepeatMonthlyByDate: fprintf(out, "MONTHLY;BYMONTHDAY=%d", mcale->cale.begin.tm_mday); break; case calendarRepeatYearly: fprintf(out, "YEARLY"); break; } if (mcale->cale.repeatFrequency != 1) { if (mcale->cale.repeatType == calendarRepeatWeekly && mcale->cale.repeatWeekstart >= 0 && mcale->cale.repeatWeekstart < 7) { fprintf(out, CRLF" "); /* Weekly repeats can exceed RFC line length */ fprintf(out, ";WKST=%s", wday[mcale->cale.repeatWeekstart]); } fprintf(out, ";INTERVAL=%d", mcale->cale.repeatFrequency); } if (!mcale->cale.repeatForever) { /* RFC 5445, which supercedes RFC 2445, specifies that dates * are inclusive of the last event. This clears up confusion * in the earlier specification and means that Jpilot no longer * needs to add +1day to the end of repeating events. */ memset(&ical_time, 0, sizeof(ical_time)); ical_time.tm_year = mcale->cale.repeatEnd.tm_year; ical_time.tm_mon = mcale->cale.repeatEnd.tm_mon; ical_time.tm_mday = mcale->cale.repeatEnd.tm_mday; ical_time.tm_isdst= -1; mktime(&ical_time); fprintf(out, ";UNTIL=%04d%02d%02d", ical_time.tm_year+1900, ical_time.tm_mon+1, ical_time.tm_mday); } fprintf(out, CRLF); if (mcale->cale.exceptions > 0) { for (i=0; icale.exceptions; i++) { fprintf(out, "EXDATE;VALUE=DATE:%04d%02d%02d"CRLF, mcale->cale.exception[i].tm_year+1900, mcale->cale.exception[i].tm_mon+1, mcale->cale.exception[i].tm_mday); } } } if (mcale->cale.alarm) { char *units; fprintf(out, "BEGIN:VALARM"CRLF); fprintf(out, "ACTION:DISPLAY"CRLF); str_to_ical_str(csv_text, sizeof(csv_text), mcale->cale.description); fprintf(out, "DESCRIPTION:%s"CRLF, csv_text); switch (mcale->cale.advanceUnits) { case advMinutes: units = "M"; break; case advHours: units = "H"; break; case advDays: units = "D"; break; default: /* XXX */ units = "?"; break; } fprintf(out, "TRIGGER:-PT%d%s"CRLF, mcale->cale.advance, units); fprintf(out, "END:VALARM"CRLF); } fprintf(out, "END:VEVENT"CRLF); if (temp_list->next == NULL) { fprintf(out, "END:VCALENDAR"CRLF); } break; default: jp_logf(JP_LOG_WARN, _("Unknown export type\n")); dialog_generic_ok(notebook, _("Error"), DIALOG_ERROR, _("Unknown export type")); } } free_CalendarEventList(&cel); if (out) { fclose(out); } } /*************** Start Export GUI ***************/ int datebook_export(GtkWidget *window) { int x, y; gdk_window_get_root_origin(window->window, &x, &y); x+=40; datebook_export_gui(window, x, y); return EXIT_SUCCESS; } static gboolean cb_export_destroy(GtkWidget *widget) { const char *filename; filename = gtk_entry_get_text(GTK_ENTRY(save_as_entry)); set_pref(PREF_DATEBOOK_EXPORT_FILENAME, 0, filename, TRUE); gtk_main_quit(); return FALSE; } static void cb_ok(GtkWidget *widget, gpointer data) { const char *filename; filename = gtk_entry_get_text(GTK_ENTRY(save_as_entry)); appt_export_ok(glob_export_type, filename); gtk_widget_destroy(data); } static void cb_export_browse(GtkWidget *widget, gpointer data) { int r; const char *svalue; r = export_browse(GTK_WIDGET(data), PREF_DATEBOOK_EXPORT_FILENAME); if (r==BROWSE_OK) { get_pref(PREF_DATEBOOK_EXPORT_FILENAME, NULL, &svalue); gtk_entry_set_text(GTK_ENTRY(save_as_entry), svalue); } } static void cb_export_quit(GtkWidget *widget, gpointer data) { gtk_widget_destroy(data); } static void cb_export_type(GtkWidget *widget, gpointer data) { glob_export_type=GPOINTER_TO_INT(data); } static int datebook_export_gui(GtkWidget *main_window, int x, int y) { GtkWidget *button; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GSList *group; char *type_text[]={N_("Text"), N_("CSV"), N_("iCalendar"), NULL}; int type_int[]={EXPORT_TYPE_TEXT, EXPORT_TYPE_CSV, EXPORT_TYPE_ICALENDAR}; int i; const char *svalue; jp_logf(JP_LOG_DEBUG, "datebook_export_gui()\n"); glob_export_type=EXPORT_TYPE_TEXT; export_window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", _("Export"), NULL); gtk_widget_set_uposition(export_window, x, y); gtk_window_set_modal(GTK_WINDOW(export_window), TRUE); gtk_window_set_transient_for(GTK_WINDOW(export_window), GTK_WINDOW(main_window)); gtk_container_set_border_width(GTK_CONTAINER(export_window), 5); gtk_signal_connect(GTK_OBJECT(export_window), "destroy", GTK_SIGNAL_FUNC(cb_export_destroy), export_window); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(export_window), vbox); /* Label for instructions */ label = gtk_label_new(_("Export All Datebook Records")); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); /* Export Type Buttons */ group = NULL; for (i=0; iactive) { on=1; } else { on=0; } cat_bit = bit << category; if (on) { datebk_category |= cat_bit; } else { datebk_category &= ~cat_bit; } datebook_update_clist(); } static void cb_datebk_category(GtkWidget *widget, gpointer data) { int i, count; int b; int flag; jp_logf(JP_LOG_DEBUG, "cb_datebk_category\n"); flag=GPOINTER_TO_INT(data); b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } count=0; for (i=0; i<16; i++) { if (GTK_IS_WIDGET(toggle_button[i])) { if ((GTK_TOGGLE_BUTTON(toggle_button[i])->active) != (flag)) { count++; } } } cb_toggle(NULL, count | 0x4000); for (i=0; i<16; i++) { if (GTK_IS_WIDGET(toggle_button[i])) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button[i]), flag); } } if (flag) { datebk_category=0xFFFF; } else { datebk_category=0x0000; } datebook_update_clist(); } static void cb_datebk_cats(GtkWidget *widget, gpointer data) { struct CalendarAppInfo cai; int i; int bit; char title[200]; GtkWidget *table; GtkWidget *button; GtkWidget *vbox, *hbox; long char_set; jp_logf(JP_LOG_DEBUG, "cb_datebk_cats\n"); if (GTK_IS_WINDOW(window_datebk_cats)) { gdk_window_raise(window_datebk_cats->window); jp_logf(JP_LOG_DEBUG, "datebk_cats window is already up\n"); return; } get_calendar_or_datebook_app_info(&cai, 0); window_datebk_cats = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(window_datebk_cats), GTK_WIN_POS_MOUSE); gtk_window_set_modal(GTK_WINDOW(window_datebk_cats), TRUE); gtk_window_set_transient_for(GTK_WINDOW(window_datebk_cats), GTK_WINDOW(gtk_widget_get_toplevel(widget))); gtk_container_set_border_width(GTK_CONTAINER(window_datebk_cats), 10); g_snprintf(title, sizeof(title), "%s %s", PN, _("Datebook Categories")); gtk_window_set_title(GTK_WINDOW(window_datebk_cats), title); gtk_signal_connect(GTK_OBJECT(window_datebk_cats), "destroy", GTK_SIGNAL_FUNC(cb_destroy_datebk_cats), window_datebk_cats); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window_datebk_cats), vbox); /* Table */ table = gtk_table_new(8, 2, TRUE); gtk_table_set_row_spacings(GTK_TABLE(table),0); gtk_table_set_col_spacings(GTK_TABLE(table),0); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=0, bit=1; i<16; i++, bit <<= 1) { if (cai.category.name[i][0]) { char *l; l = charset_p2newj(cai.category.name[i], sizeof(cai.category.name[0]), char_set); toggle_button[i]=gtk_toggle_button_new_with_label(l); g_free(l); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button[i]), datebk_category & bit); gtk_table_attach_defaults (GTK_TABLE(table), GTK_WIDGET(toggle_button[i]), (i>7)?1:0, (i>7)?2:1, (i>7)?i-8:i, (i>7)?i-7:i+1); gtk_signal_connect(GTK_OBJECT(toggle_button[i]), "toggled", GTK_SIGNAL_FUNC(cb_toggle), GINT_TO_POINTER(i)); } else { toggle_button[i]=NULL; } } hbox = gtk_hbutton_box_new(); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* Close button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_quit_datebk_cats), window_datebk_cats); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); /* All button */ button = gtk_button_new_with_label(_("All")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_datebk_category), GINT_TO_POINTER(1)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); /* None button */ button = gtk_button_new_with_label(_("None")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_datebk_category), GINT_TO_POINTER(0)); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show_all(window_datebk_cats); } #endif /*** End Datebk3/4 Code ***/ /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; itm_mon), &(Pt->tm_mday), &(Pt->tm_year)); } else { r = cal_dialog(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("End On Date"), fdow, &(Pt->tm_mon), &(Pt->tm_mday), &(Pt->tm_year)); } if (GPOINTER_TO_INT(data) == BEGIN_DATE_BUTTON) { end_date.tm_mon = begin_date.tm_mon; end_date.tm_mday = begin_date.tm_mday; end_date.tm_year = begin_date.tm_year; } if (r==CAL_DONE) { if (Pcheck_button) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Pcheck_button), TRUE); } if (Pbutton) { update_endon_button(Pbutton, Pt); } } } static void cb_weekview(GtkWidget *widget, gpointer data) { struct tm date; memset(&date, 0, sizeof(date)); date.tm_mon=current_month; date.tm_mday=current_day; date.tm_year=current_year; date.tm_sec=0; date.tm_min=0; date.tm_hour=11; date.tm_isdst=-1; mktime(&date); weekview_gui(&date); } static void init(void) { time_t ltime; struct tm *now; struct tm next_tm; int next_found; CalendarEventList *ce_list; CalendarEventList *temp_cel; #ifdef ENABLE_DATEBK long use_db3_tags; #endif #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); if (use_db3_tags) { DB_APPT_COLUMN=4; } else { DB_APPT_COLUMN=3; } #endif time(<ime); now = localtime(<ime); current_day = now->tm_mday; current_month = now->tm_mon; current_year = now->tm_year; memcpy(&glob_endon_day_tm, now, sizeof(glob_endon_day_tm)); memcpy(&glob_endon_week_tm, now, sizeof(glob_endon_week_tm)); memcpy(&glob_endon_mon_tm, now, sizeof(glob_endon_mon_tm)); memcpy(&glob_endon_year_tm, now, sizeof(glob_endon_year_tm)); if (glob_find_id) { jp_logf(JP_LOG_DEBUG, "init() glob_find_id = %d\n", glob_find_id); /* Search appointments for this id to get its date */ ce_list = NULL; get_days_calendar_events2(&ce_list, NULL, 1, 1, 1, CATEGORY_ALL, NULL); for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { if (temp_cel->mcale.unique_id == glob_find_id) { jp_logf(JP_LOG_DEBUG, "init() found glob_find_id\n"); /* Position calendar on the actual event * or the next future occurrence * depending on which is closest to the current date */ if (temp_cel->mcale.cale.repeatType == calendarRepeatNone) { next_found = 0; } else { next_found = find_next_rpt_event(&(temp_cel->mcale.cale), now, &next_tm); } if (!next_found) { current_month = temp_cel->mcale.cale.begin.tm_mon; current_day = temp_cel->mcale.cale.begin.tm_mday; current_year = temp_cel->mcale.cale.begin.tm_year; } else { current_month = next_tm.tm_mon; current_day = next_tm.tm_mday; current_year = next_tm.tm_year; } } } free_CalendarEventList(&ce_list); } clist_row_selected=0; record_changed=CLEAR_FLAG; } static int dialog_4_or_last(int dow) { char *days[]={ N_("Sunday"), N_("Monday"), N_("Tuesday"), N_("Wednesday"), N_("Thursday"), N_("Friday"), N_("Saturday") }; char text[255]; char *button_text[]={N_("4th"), N_("Last")}; sprintf(text, _("This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?"), _(days[dow]), _(days[dow])); return dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(scrolled_window)), _("Question?"), DIALOG_QUESTION, text, 2, button_text); } static int dialog_current_future_all_cancel(void) { char text[]= N_("This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?"); char *button_text[]={ N_("Current"), N_("Future"), N_("All"), N_("Cancel") }; return dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(scrolled_window)), _("Question?"), DIALOG_QUESTION, _(text), 4, button_text); } #ifdef EASTER static int dialog_easter(int mday) { char text[255]; char who[50]; char *button_text[]={"I'll send a present!!!"}; if (mday==29) { strcpy(who, "Judd Montgomery"); } if (mday==20) { strcpy(who, "Jacki Montgomery"); } sprintf(text, "Today is\n" "%s\'s\n" "Birthday!\n", who); return dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(scrolled_window)), "Happy Birthday to Me!", DIALOG_INFO, text, 1, button_text); } #endif /* End of Dialog window code */ /* month = 0-11 */ /* dom = day of month 1-31 */ /* year = calendar year - 1900 */ /* dow = day of week 0-6, where 0=Sunday, etc. */ /* */ /* Returns an enum from DayOfMonthType defined in pi-datebook.h */ static long get_dom_type(int month, int dom, int year, int dow) { long r; int ndim; /* ndim = number of days in month 28-31 */ int dow_fdof; /* Day of the week for the first day of the month */ int result; r=((int)((dom-1)/7))*7 + dow; /* If its the 5th occurrence of this dow in the month then it is always * going to be the last occurrence of that dow in the month. * Sometimes this will occur in the 4th week, sometimes in the 5th. * If its the 4th occurrence of this dow in the month and there is a 5th * then it always the 4th occurrence. * If its the 4th occurrence of this dow in the month and there is not a * 5th then we need to ask if this appointment repeats on the last dow of * the month, or the 4th dow of every month. * This should be perfectly clear now, right? */ /* These are the last 2 lines of the DayOfMonthType enum: */ /* dom4thSun, dom4thMon, dom4thTue, dom4thWen, dom4thThu, dom4thFri, dom4thSat */ /* domLastSun, domLastMon, domLastTue, domLastWen, domLastThu, domLastFri, domLastSat */ if ((r>=dom4thSun) && (r<=dom4thSat)) { get_month_info(month, dom, year, &dow_fdof, &ndim); if ((ndim - dom < 7)) { /* This is the 4th dow, and there is no 5th in this month. */ result = dialog_4_or_last(dow); /* If they want it to be the last dow in the month instead of the */ /* 4th, then we need to add 7. */ if (result == DIALOG_SAID_LAST) { r += 7; } } } return r; } /* flag UPDATE_DATE_ENTRY is to set entry fields * flag UPDATE_DATE_MENUS is to set menu items */ static void set_begin_end_labels(struct tm *begin, struct tm *end, int flags) { char str[255]; char time1_str[255]; char time2_str[255]; char pref_time[40]; const char *pref_date; str[0]='\0'; get_pref(PREF_SHORTDATE, NULL, &pref_date); strftime(str, sizeof(str), pref_date, begin); gtk_label_set_text(GTK_LABEL(GTK_BIN(begin_date_button)->child), str); if (flags & UPDATE_DATE_ENTRIES) { if (GTK_TOGGLE_BUTTON(radio_button_no_time)->active) { gtk_entry_set_text(GTK_ENTRY(begin_time_entry), ""); gtk_entry_set_text(GTK_ENTRY(end_time_entry), ""); } else { get_pref_time_no_secs(pref_time); jp_strftime(time1_str, sizeof(time1_str), pref_time, begin); jp_strftime(time2_str, sizeof(time2_str), pref_time, end); gtk_entry_set_text(GTK_ENTRY(begin_time_entry), time1_str); gtk_entry_set_text(GTK_ENTRY(end_time_entry), time2_str); } } if (flags & UPDATE_DATE_MENUS) { gtk_option_menu_set_history(GTK_OPTION_MENU(option1), begin_date.tm_hour); gtk_option_menu_set_history(GTK_OPTION_MENU(option2), begin_date.tm_min/5); gtk_option_menu_set_history(GTK_OPTION_MENU(option3), end_date.tm_hour); gtk_option_menu_set_history(GTK_OPTION_MENU(option4), end_date.tm_min/5); } } static void clear_begin_end_labels(void) { begin_date.tm_mon = current_month; begin_date.tm_mday = current_day; begin_date.tm_year = current_year; begin_date.tm_hour = 8; begin_date.tm_min = 0; begin_date.tm_sec = 0; begin_date.tm_isdst = -1; end_date.tm_mon = current_month; end_date.tm_mday = current_day; end_date.tm_year = current_year; end_date.tm_hour = 9; end_date.tm_min = 0; end_date.tm_sec = 0; end_date.tm_isdst = -1; set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES | UPDATE_DATE_MENUS); } static void appt_clear_details(void) { int i; struct tm today; int new_cat; int sorted_position; #ifdef ENABLE_DATEBK long use_db3_tags; #endif connect_changed_signals(DISCONNECT_SIGNALS); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_alarm), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_no_time), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), FALSE); clear_begin_end_labels(); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_desc_buffer), "", -1); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), "", -1); #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); if (use_db3_tags) { gtk_entry_set_text(GTK_ENTRY(datebk_entry), ""); } #endif if (datebook_version) { /* Calendar has a location field */ gtk_entry_set_text(GTK_ENTRY(location_entry), ""); } /* Clear the notebook pages */ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_NONE); gtk_entry_set_text(GTK_ENTRY(units_entry), "5"); gtk_entry_set_text(GTK_ENTRY(repeat_day_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_week_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_mon_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_year_entry), "1"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_day_endon), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_week_endon), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_mon_endon), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_year_endon), FALSE); for(i=0; i<7; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button_repeat_days[i]), FALSE); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button_repeat_mon_bydate), TRUE); memset(&today, 0, sizeof(today)); today.tm_year = current_year; today.tm_mon = current_month; today.tm_mday = current_day; today.tm_hour = 12; today.tm_min = 0; mktime(&today); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button_repeat_days[today.tm_wday]), TRUE); memcpy(&glob_endon_day_tm, &today, sizeof(glob_endon_day_tm)); memcpy(&glob_endon_week_tm, &today, sizeof(glob_endon_week_tm)); memcpy(&glob_endon_mon_tm, &today, sizeof(glob_endon_mon_tm)); memcpy(&glob_endon_year_tm, &today, sizeof(glob_endon_year_tm)); if (datebook_version) { /* Calendar supports categories */ if (dbook_category==CATEGORY_ALL) { new_cat = 0; } else { new_cat = dbook_category; } sorted_position = find_sort_cat_pos(new_cat); if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(dbook_cat_menu_item2[sorted_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } } connect_changed_signals(CONNECT_SIGNALS); } /* TODO rename */ static int appt_get_details(struct CalendarEvent *cale, unsigned char *attrib) { int i; time_t ltime, ltime2; char str[30]; gint page; int total_repeat_days; char datef[32]; const char *svalue1, *svalue2; const gchar *text1; GtkTextIter start_iter; GtkTextIter end_iter; #ifdef ENABLE_DATEBK gchar *datebk_note_text=NULL; gchar *text2; long use_db3_tags; char null_str[]=""; #endif const char *period[] = { N_("None"), N_("day"), N_("week"), N_("month"), N_("year") }; #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif memset(cale, 0, sizeof(*cale)); *attrib = 0; if (datebook_version) { /* Calendar supports categories */ /* Get the category that is set from the menu */ for (i=0; iactive) { *attrib = sort_l[i].cat_num; break; } } } } time(<ime); localtime(<ime); total_repeat_days=0; /* The first day of the week */ /* I always use 0, Sunday is always 0 in this code */ cale->repeatWeekstart=0; cale->exceptions = 0; cale->exception = NULL; /* daylight savings flag */ cale->end.tm_isdst=cale->begin.tm_isdst=-1; /* Begin time */ cale->begin.tm_mon = begin_date.tm_mon; cale->begin.tm_mday = begin_date.tm_mday; cale->begin.tm_year = begin_date.tm_year; cale->begin.tm_hour = begin_date.tm_hour; cale->begin.tm_min = begin_date.tm_min; cale->begin.tm_sec = 0; /* End time */ cale->end.tm_mon = end_date.tm_mon; cale->end.tm_mday = end_date.tm_mday; cale->end.tm_year = end_date.tm_year; cale->end.tm_hour = end_date.tm_hour; cale->end.tm_min = end_date.tm_min; cale->end.tm_sec = 0; if (GTK_TOGGLE_BUTTON(radio_button_no_time)->active) { cale->event=1; /* This event doesn't have a time */ cale->begin.tm_hour = 0; cale->begin.tm_min = 0; cale->begin.tm_sec = 0; cale->end.tm_hour = 0; cale->end.tm_min = 0; cale->end.tm_sec = 0; } else { cale->event=0; } ltime = mktime(&cale->begin); ltime2 = mktime(&cale->end); /* Datebook does not support events spanning midnight where the beginning time is greater than the ending time */ if (datebook_version == 0) { if (ltime > ltime2) { memcpy(&(cale->end), &(cale->begin), sizeof(struct tm)); } } if (GTK_TOGGLE_BUTTON(check_button_alarm)->active) { cale->alarm = 1; text1 = gtk_entry_get_text(GTK_ENTRY(units_entry)); cale->advance=atoi(text1); jp_logf(JP_LOG_DEBUG, "alarm advance %d", cale->advance); if (GTK_TOGGLE_BUTTON(radio_button_alarm_min)->active) { cale->advanceUnits = advMinutes; jp_logf(JP_LOG_DEBUG, "min\n"); } if (GTK_TOGGLE_BUTTON(radio_button_alarm_hour)->active) { cale->advanceUnits = advHours; jp_logf(JP_LOG_DEBUG, "hour\n"); } if (GTK_TOGGLE_BUTTON(radio_button_alarm_day)->active) { cale->advanceUnits = advDays; jp_logf(JP_LOG_DEBUG, "day\n"); } } else { cale->alarm = 0; } page = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); cale->repeatEnd.tm_hour = 0; cale->repeatEnd.tm_min = 0; cale->repeatEnd.tm_sec = 0; cale->repeatEnd.tm_isdst= -1; switch (page) { case PAGE_NONE: cale->repeatType=calendarRepeatNone; jp_logf(JP_LOG_DEBUG, "no repeat\n"); break; case PAGE_DAY: cale->repeatType=calendarRepeatDaily; text1 = gtk_entry_get_text(GTK_ENTRY(repeat_day_entry)); cale->repeatFrequency = atoi(text1); jp_logf(JP_LOG_DEBUG, "every %d day(s)\n", cale->repeatFrequency); if (GTK_TOGGLE_BUTTON(check_button_day_endon)->active) { cale->repeatForever=0; jp_logf(JP_LOG_DEBUG, "end on day\n"); cale->repeatEnd.tm_mon = glob_endon_day_tm.tm_mon; cale->repeatEnd.tm_mday = glob_endon_day_tm.tm_mday; cale->repeatEnd.tm_year = glob_endon_day_tm.tm_year; cale->repeatEnd.tm_isdst = -1; mktime(&cale->repeatEnd); } else { cale->repeatForever=1; } break; case PAGE_WEEK: cale->repeatType=calendarRepeatWeekly; text1 = gtk_entry_get_text(GTK_ENTRY(repeat_week_entry)); cale->repeatFrequency = atoi(text1); jp_logf(JP_LOG_DEBUG, "every %d week(s)\n", cale->repeatFrequency); if (GTK_TOGGLE_BUTTON(check_button_week_endon)->active) { cale->repeatForever=0; jp_logf(JP_LOG_DEBUG, "end on week\n"); cale->repeatEnd.tm_mon = glob_endon_week_tm.tm_mon; cale->repeatEnd.tm_mday = glob_endon_week_tm.tm_mday; cale->repeatEnd.tm_year = glob_endon_week_tm.tm_year; cale->repeatEnd.tm_isdst = -1; mktime(&cale->repeatEnd); get_pref(PREF_SHORTDATE, NULL, &svalue1); get_pref(PREF_TIME, NULL, &svalue2); if ((svalue1==NULL) || (svalue2==NULL)) { strcpy(datef, "%x %X"); } else { sprintf(datef, "%s %s", svalue1, svalue2); } strftime(str, sizeof(str), datef, &cale->repeatEnd); jp_logf(JP_LOG_DEBUG, "repeat_end time = %s\n", str); } else { cale->repeatForever=1; } jp_logf(JP_LOG_DEBUG, "Repeat Days:"); cale->repeatWeekstart = 0; /* We are going to always use 0 */ for (i=0; i<7; i++) { cale->repeatDays[i]=(GTK_TOGGLE_BUTTON(toggle_button_repeat_days[i])->active); total_repeat_days += cale->repeatDays[i]; } jp_logf(JP_LOG_DEBUG, "\n"); break; case PAGE_MONTH: text1 = gtk_entry_get_text(GTK_ENTRY(repeat_mon_entry)); cale->repeatFrequency = atoi(text1); jp_logf(JP_LOG_DEBUG, "every %d month(s)\n", cale->repeatFrequency); if (GTK_TOGGLE_BUTTON(check_button_mon_endon)->active) { cale->repeatForever=0; jp_logf(JP_LOG_DEBUG, "end on month\n"); cale->repeatEnd.tm_mon = glob_endon_mon_tm.tm_mon; cale->repeatEnd.tm_mday = glob_endon_mon_tm.tm_mday; cale->repeatEnd.tm_year = glob_endon_mon_tm.tm_year; cale->repeatEnd.tm_isdst = -1; mktime(&cale->repeatEnd); get_pref(PREF_SHORTDATE, NULL, &svalue1); get_pref(PREF_TIME, NULL, &svalue2); if ((svalue1==NULL) || (svalue2==NULL)) { strcpy(datef, "%x %X"); } else { sprintf(datef, "%s %s", svalue1, svalue2); } strftime(str, sizeof(str), datef, &cale->repeatEnd); jp_logf(JP_LOG_DEBUG, "repeat_end time = %s\n", str); } else { cale->repeatForever=1; } if (GTK_TOGGLE_BUTTON(toggle_button_repeat_mon_byday)->active) { cale->repeatType=calendarRepeatMonthlyByDay; cale->repeatDay = get_dom_type(cale->begin.tm_mon, cale->begin.tm_mday, cale->begin.tm_year, cale->begin.tm_wday); jp_logf(JP_LOG_DEBUG, "***by day\n"); } if (GTK_TOGGLE_BUTTON(toggle_button_repeat_mon_bydate)->active) { cale->repeatType=calendarRepeatMonthlyByDate; jp_logf(JP_LOG_DEBUG, "***by date\n"); } break; case PAGE_YEAR: cale->repeatType=calendarRepeatYearly; text1 = gtk_entry_get_text(GTK_ENTRY(repeat_year_entry)); cale->repeatFrequency = atoi(text1); jp_logf(JP_LOG_DEBUG, "every %s year(s)\n", cale->repeatFrequency); if (GTK_TOGGLE_BUTTON(check_button_year_endon)->active) { cale->repeatForever=0; jp_logf(JP_LOG_DEBUG, "end on year\n"); cale->repeatEnd.tm_mon = glob_endon_year_tm.tm_mon; cale->repeatEnd.tm_mday = glob_endon_year_tm.tm_mday; cale->repeatEnd.tm_year = glob_endon_year_tm.tm_year; cale->repeatEnd.tm_isdst = -1; mktime(&cale->repeatEnd); get_pref(PREF_SHORTDATE, NULL, &svalue1); get_pref(PREF_TIME, NULL, &svalue2); if ((svalue1==NULL) || (svalue2==NULL)) { strcpy(datef, "%x %X"); } else { sprintf(datef, "%s %s", svalue1, svalue2); } str[0]='\0'; strftime(str, sizeof(str), datef, &cale->repeatEnd); jp_logf(JP_LOG_DEBUG, "repeat_end time = %s\n", str); } else { cale->repeatForever=1; } break; } gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(dbook_desc_buffer),&start_iter,&end_iter); cale->description = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(dbook_desc_buffer),&start_iter,&end_iter,TRUE); /* Empty appointment descriptions crash PalmOS 2.0, but are fine in * later versions */ if (cale->description[0]=='\0') { free(cale->description); cale->description=strdup(" "); } if (strlen(cale->description)+1 > MAX_DESC_LEN) { cale->description[MAX_DESC_LEN+1]='\0'; jp_logf(JP_LOG_WARN, _("Appointment description text > %d, truncating to %d\n"), MAX_DESC_LEN, MAX_DESC_LEN); } if (cale->description) { jp_logf(JP_LOG_DEBUG, "description=[%s]\n", cale->description); } #ifdef ENABLE_DATEBK if (use_db3_tags) { text1 = gtk_entry_get_text(GTK_ENTRY(datebk_entry)); gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter); text2 = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter,TRUE); if (!text1) text1=null_str; if (!text2) text2=null_str; /* 8 extra characters is just being paranoid */ datebk_note_text=malloc(strlen(text1) + strlen(text2) + 8); datebk_note_text[0]='\0'; cale->note=datebk_note_text; if ((text1) && (text1[0])) { strcpy(datebk_note_text, text1); strcat(datebk_note_text, "\n"); } strcat(datebk_note_text, text2); } else { gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter); cale->note = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter,TRUE); } #else /* Datebk #ifdef */ gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter); cale->note = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(dbook_note_buffer),&start_iter,&end_iter,TRUE); #endif /* Datebk #ifdef */ if (cale->note[0]=='\0') { free(cale->note); cale->note=NULL; } if (cale->note) { jp_logf(JP_LOG_DEBUG, "text note=[%s]\n", cale->note); } if (datebook_version) { cale->location = strdup(gtk_entry_get_text(GTK_ENTRY(location_entry))); if (cale->location[0]=='\0') { free(cale->location); cale->location=NULL; } if (cale->location) { jp_logf(JP_LOG_DEBUG, "text location=[%s]\n", cale->location); } } else { cale->location=NULL; } /* We won't allow a repeat frequency of less than 1 */ if ((page != PAGE_NONE) && (cale->repeatFrequency < 1)) { char str[200]; jp_logf(JP_LOG_WARN, _("You cannot have an appointment that repeats every %d %s(s)\n"), cale->repeatFrequency, _(period[page])); g_snprintf(str, sizeof(str), _("You cannot have an appointment that repeats every %d %s(s)\n"), cale->repeatFrequency, _(period[page])); dialog_generic_ok(notebook, _("Error"), DIALOG_ERROR, str); cale->repeatFrequency = 1; return EXIT_FAILURE; } /* We won't allow a weekly repeating that doesn't repeat on any day */ if ((page == PAGE_WEEK) && (total_repeat_days == 0)) { dialog_generic_ok(notebook, _("Error"), DIALOG_ERROR, _("You cannot have a weekly repeating appointment that doesn't repeat on any day of the week.")); return EXIT_FAILURE; } if (GTK_TOGGLE_BUTTON(private_checkbox)->active) { *attrib |= dlpRecAttrSecret; } return EXIT_SUCCESS; } static void update_endon_button(GtkWidget *button, struct tm *t) { const char *short_date; char str[255]; get_pref(PREF_SHORTDATE, NULL, &short_date); strftime(str, sizeof(str), short_date, t); gtk_label_set_text(GTK_LABEL(GTK_BIN(button)->child), str); } /* Do masking like Palm OS 3.5 */ static void clear_myCalendarEvent(MyCalendarEvent *mcale) { mcale->unique_id=0; mcale->attrib=mcale->attrib & 0xF8; mcale->cale.event = 1; mcale->cale.alarm = 0; mcale->cale.repeatType = calendarRepeatNone; memset(&mcale->cale.begin, 0, sizeof(struct tm)); memset(&mcale->cale.end, 0, sizeof(struct tm)); if (mcale->cale.location) { free(mcale->cale.location); mcale->cale.location=strdup(""); } if (mcale->cale.description) { free(mcale->cale.description); mcale->cale.description=strdup(""); } if (mcale->cale.note) { free(mcale->cale.note); mcale->cale.note=strdup(""); } /* TODO do we need to clear blob and tz? */ return; } /* End Masking */ static int datebook_update_clist(void) { int num_entries, entries_shown, num; CalendarEventList *temp_cel; gchar *empty_line[] = { "","","","",""}; char begin_time[32]; char end_time[32]; char a_time[sizeof(begin_time)+sizeof(end_time)+1]; char datef[20]; GdkPixmap *pixmap_note; GdkPixmap *pixmap_alarm; GdkBitmap *mask_note; GdkBitmap *mask_alarm; int has_note; #ifdef ENABLE_DATEBK int cat_bit; int db3_type; long use_db3_tags; struct db4_struct db4; GdkPixmap *pixmap_float_check; GdkPixmap *pixmap_float_checked; GdkBitmap *mask_float_check; GdkBitmap *mask_float_checked; #endif struct tm new_time; int show_priv; char str[DATEBOOK_MAX_COLUMN_LEN+2]; char str2[DATEBOOK_MAX_COLUMN_LEN]; long show_tooltips; jp_logf(JP_LOG_DEBUG, "datebook_update_clist()\n"); free_CalendarEventList(&glob_cel); memset(&new_time, 0, sizeof(new_time)); new_time.tm_hour=11; new_time.tm_mday=current_day; new_time.tm_mon=current_month; new_time.tm_year=current_year; new_time.tm_isdst=-1; mktime(&new_time); num = get_days_calendar_events2(&glob_cel, &new_time, 2, 2, 1, CATEGORY_ALL, &num_entries); jp_logf(JP_LOG_DEBUG, "get_days_appointments==>%d\n", num); #ifdef ENABLE_DATEBK jp_logf(JP_LOG_DEBUG, "datebk_category = 0x%x\n", datebk_category); #endif /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif /* Collect preferences and constant pixmaps for loop */ show_priv = show_privates(GET_PRIVATES); get_pixmaps(scrolled_window, PIXMAP_NOTE, &pixmap_note, &mask_note); get_pixmaps(scrolled_window, PIXMAP_ALARM, &pixmap_alarm, &mask_alarm); #ifdef __APPLE__ mask_note = NULL; mask_alarm = NULL; #endif #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); get_pixmaps(scrolled_window, PIXMAP_FLOAT_CHECK, &pixmap_float_check, &mask_float_check); get_pixmaps(scrolled_window, PIXMAP_FLOAT_CHECKED, &pixmap_float_checked, &mask_float_checked); # ifdef __APPLE__ mask_float_check = NULL; mask_float_checked = NULL; # endif #endif entries_shown=0; for (temp_cel = glob_cel; temp_cel; temp_cel=temp_cel->next) { if (datebook_version) { /* Filter by category for Calendar application */ if ( ((temp_cel->mcale.attrib & 0x0F) != dbook_category) && dbook_category != CATEGORY_ALL) { continue; } } #ifdef ENABLE_DATEBK if (use_db3_tags) { db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); jp_logf(JP_LOG_DEBUG, "category = 0x%x\n", db4.category); cat_bit=1<mcale.attrib & dlpRecAttrSecret)) { gtk_clist_append(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, DB_TIME_COLUMN, "----------"); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, DB_APPT_COLUMN, "---------------"); clear_myCalendarEvent(&temp_cel->mcale); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_cel->mcale)); gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); entries_shown++; continue; } /* End Masking */ /* Hide the private records if need be */ if ((show_priv != SHOW_PRIVATES) && (temp_cel->mcale.attrib & dlpRecAttrSecret)) { continue; } /* Add entry to clist */ gtk_clist_append(GTK_CLIST(clist), empty_line); /* Print the event time */ if (temp_cel->mcale.cale.event) { /* This is a timeless event */ strcpy(a_time, _("No Time")); } else { get_pref_time_no_secs_no_ampm(datef); strftime(begin_time, sizeof(begin_time), datef, &(temp_cel->mcale.cale.begin)); get_pref_time_no_secs(datef); strftime(end_time, sizeof(end_time), datef, &(temp_cel->mcale.cale.end)); g_snprintf(a_time, sizeof(a_time), "%s-%s", begin_time, end_time); } gtk_clist_set_text(GTK_CLIST(clist), entries_shown, DB_TIME_COLUMN, a_time); #ifdef ENABLE_DATEBK if (use_db3_tags) { if (db4.floating_event==DB3_FLOAT) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, DB_FLOAT_COLUMN, pixmap_float_check, mask_float_check); } if (db4.floating_event==DB3_FLOAT_COMPLETE) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, DB_FLOAT_COLUMN, pixmap_float_checked, mask_float_checked); } } #endif has_note=0; #ifdef ENABLE_DATEBK if (use_db3_tags) { if (db3_type!=DB3_TAG_TYPE_NONE) { if (db4.note && db4.note[0]!='\0') { has_note = 1; } } else { if (temp_cel->mcale.cale.note && (temp_cel->mcale.cale.note[0]!='\0')) { has_note=1; } } } else { if (temp_cel->mcale.cale.note && (temp_cel->mcale.cale.note[0]!='\0')) { has_note=1; } } #else /* Ordinary, non DateBk code */ if (temp_cel->mcale.cale.note && (temp_cel->mcale.cale.note[0]!='\0')) { has_note=1; } #endif /* Put a note pixmap up */ if (has_note) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, DB_NOTE_COLUMN, pixmap_note, mask_note); } /* Put an alarm pixmap up */ if (temp_cel->mcale.cale.alarm) { gtk_clist_set_pixmap(GTK_CLIST(clist), entries_shown, DB_ALARM_COLUMN, pixmap_alarm, mask_alarm); } /* Print the appointment description */ lstrncpy_remove_cr_lfs(str2, temp_cel->mcale.cale.description, DATEBOOK_MAX_COLUMN_LEN); /* Append number of anniversary years if enabled & appropriate */ append_anni_years(str2, sizeof(str2), &new_time, NULL, &temp_cel->mcale.cale); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, DB_APPT_COLUMN, str2); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_cel->mcale)); /* Highlight row background depending on status */ switch (temp_cel->mcale.rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_NEW_RED, CLIST_NEW_GREEN, CLIST_NEW_BLUE); break; case DELETED_PALM_REC: case DELETED_PC_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_DEL_RED, CLIST_DEL_GREEN, CLIST_DEL_BLUE); break; case MODIFIED_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_MOD_RED, CLIST_MOD_GREEN, CLIST_MOD_BLUE); break; default: if (temp_cel->mcale.attrib & dlpRecAttrSecret) { set_bg_rgb_clist_row(clist, entries_shown, CLIST_PRIVATE_RED, CLIST_PRIVATE_GREEN, CLIST_PRIVATE_BLUE); } else { gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); } } entries_shown++; } gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); /* If there are items in the list, highlight the selected row */ if (entries_shown>0) { /* First, select any record being searched for */ if (glob_find_id) { datebook_find(); } /* Second, try the currently selected row */ else if (clist_row_selected < entries_shown) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 1); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } /* Third, select row 0 if nothing else is possible */ else { clist_select_row(GTK_CLIST(clist), 0, 1); } } else { set_new_button_to(CLEAR_FLAG); appt_clear_details(); } gtk_clist_thaw(GTK_CLIST(clist)); get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); g_snprintf(str, sizeof(str), _("%d of %d records"), entries_shown, num_entries); set_tooltip(show_tooltips, glob_tooltips, GTK_CLIST(clist)->column[DB_APPT_COLUMN].button, str, NULL); /* return focus to clist after any big operation which requires a redraw */ gtk_widget_grab_focus(GTK_WIDGET(clist)); return EXIT_SUCCESS; } static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case NEW_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(undelete_record_button); break; case UNDELETE_FLAG: gtk_widget_show(undelete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(delete_record_button); break; default: return; } record_changed=new_state; } static gboolean cb_key_pressed_left_side(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { GtkTextBuffer *text_buffer; GtkTextIter iter; if (event->keyval == GDK_Return) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); /* Position cursor at start of text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(next_widget)); gtk_text_buffer_get_start_iter(text_buffer, &iter); gtk_text_buffer_place_cursor(text_buffer, &iter); return TRUE; } return FALSE; } static gboolean cb_key_pressed_right_side(GtkWidget *widget, GdkEventKey *event, gpointer data) { if ((event->keyval == GDK_Return) && (event->state & GDK_SHIFT_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Call clist_selection to handle any cleanup such as a modified record */ cb_clist_selection(clist, clist_row_selected, 1, GINT_TO_POINTER(1), NULL); gtk_widget_grab_focus(GTK_WIDGET(clist)); return TRUE; } /* Call external editor for note text */ if (data != NULL && (event->keyval == GDK_e) && (event->state & GDK_CONTROL_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Get current text and place in temporary file */ GtkTextIter start_iter; GtkTextIter end_iter; char *text_out; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(dbook_note_buffer), &start_iter, &end_iter); text_out = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(dbook_note_buffer), &start_iter, &end_iter, TRUE); char tmp_fname[] = "jpilot.XXXXXX"; int tmpfd = mkstemp(tmp_fname); if (tmpfd < 0) { jp_logf(JP_LOG_WARN, _("Could not get temporary file name\n")); if (text_out) free(text_out); return TRUE; } FILE *fptr = fdopen(tmpfd, "w"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file for external editor\n")); if (text_out) free(text_out); return TRUE; } fwrite(text_out, strlen(text_out), 1, fptr); fwrite("\n", 1, 1, fptr); fclose(fptr); /* Call external editor */ char command[1024]; const char *ext_editor; get_pref(PREF_EXTERNAL_EDITOR, NULL, &ext_editor); if (!ext_editor) { jp_logf(JP_LOG_INFO, "External Editor command empty\n"); if (text_out) free(text_out); return TRUE; } if ((strlen(ext_editor) + strlen(tmp_fname) + 1) > sizeof(command)) { jp_logf(JP_LOG_WARN, _("External editor command too long to execute\n")); if (text_out) free(text_out); return TRUE; } g_snprintf(command, sizeof(command), "%s %s", ext_editor, tmp_fname); /* jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("executing command = [%s]\n"), command); */ if (system(command) == -1) { /* Read data back from temporary file into memo */ char text_in[0xFFFF]; size_t bytes_read; fptr = fopen(tmp_fname, "rb"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file from external editor\n")); return TRUE; } bytes_read = fread(text_in, 1, 0xFFFF, fptr); fclose(fptr); unlink(tmp_fname); text_in[--bytes_read] = '\0'; /* Strip final newline */ /* Only update text if it has changed */ if (strcmp(text_out, text_in)) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), text_in, -1); } } if (text_out) free(text_out); return TRUE; } /* End of external editor if */ return FALSE; } static void cb_record_changed(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if (GTK_CLIST(clist)->rows > 0) { set_new_button_to(MODIFY_FLAG); } else { set_new_button_to(NEW_FLAG); } } else if (record_changed==UNDELETE_FLAG) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is deleted.\n" "Undelete it or copy it to make changes.\n")); } } static void cb_add_new_record(GtkWidget *widget, gpointer data) { MyCalendarEvent *mcale; struct CalendarEvent *cale; struct CalendarEvent new_cale; int flag; int dialog = 0; int r; unsigned char attrib; int show_priv; unsigned int unique_id; time_t t_begin, t_end; struct tm next_tm; int next_found; time_t ltime; struct tm *now; jp_logf(JP_LOG_DEBUG, "cb_add_new_record\n"); flag=GPOINTER_TO_INT(data); mcale=NULL; unique_id=0; /* Do masking like Palm OS 3.5 */ if ((flag==COPY_FLAG) || (flag==MODIFY_FLAG)) { show_priv = show_privates(GET_PRIVATES); mcale = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcale < (MyCalendarEvent *)CLIST_MIN_DATA) { return; } if ((show_priv != SHOW_PRIVATES) && (mcale->attrib & dlpRecAttrSecret)) { return; } } /* End Masking */ if (flag==CLEAR_FLAG) { /* Clear button was hit */ appt_clear_details(); connect_changed_signals(DISCONNECT_SIGNALS); set_new_button_to(NEW_FLAG); gtk_widget_grab_focus(GTK_WIDGET(dbook_desc)); return; } if ((flag!=NEW_FLAG) && (flag!=MODIFY_FLAG) && (flag!=COPY_FLAG)) { return; } if (flag==MODIFY_FLAG) { mcale = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); unique_id = mcale->unique_id; if (mcale < (MyCalendarEvent *)CLIST_MIN_DATA) { return; } if ((mcale->rt==DELETED_PALM_REC) || (mcale->rt==DELETED_PC_REC) || (mcale->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("You can't modify a record that is deleted\n")); return; } } r = appt_get_details(&new_cale, &attrib); if (r != EXIT_SUCCESS) { free_CalendarEvent(&new_cale); return; } /* Validate dates for repeating events */ if (new_cale.repeatType != calendarRepeatNone) { next_found = find_next_rpt_event(&new_cale, &(new_cale.begin), &next_tm); if (next_found) { jp_logf(JP_LOG_DEBUG, "Repeat event begin day shifted from %d to %d\n", new_cale.begin.tm_mday, next_tm.tm_mday); new_cale.begin.tm_year = next_tm.tm_year; new_cale.begin.tm_mon = next_tm.tm_mon; new_cale.begin.tm_mday = next_tm.tm_mday; new_cale.begin.tm_isdst = -1; mktime(&(new_cale.begin)); new_cale.end.tm_year = next_tm.tm_year; new_cale.end.tm_mon = next_tm.tm_mon; new_cale.end.tm_mday = next_tm.tm_mday; new_cale.end.tm_isdst = -1; mktime(&(new_cale.end)); } } if ((new_cale.repeatType != calendarRepeatNone) && (!(new_cale.repeatForever))) { t_begin = mktime_dst_adj(&(new_cale.begin)); t_end = mktime_dst_adj(&(new_cale.repeatEnd)); if (t_begin > t_end) { dialog_generic_ok(notebook, _("Invalid Appointment"), DIALOG_ERROR, _("The End Date of this appointment\nis before the start date.")); free_CalendarEvent(&new_cale); return; } } if ((flag==MODIFY_FLAG) && (new_cale.repeatType != calendarRepeatNone)) { /* We need more user input. Pop up a dialog */ dialog = dialog_current_future_all_cancel(); if (dialog==DIALOG_SAID_RPT_CANCEL) { return; } else if (dialog==DIALOG_SAID_RPT_CURRENT) { /* Create an exception in the appointment */ new_cale.repeatType = calendarRepeatNone; new_cale.begin.tm_year = current_year; new_cale.begin.tm_mon = current_month; new_cale.begin.tm_mday = current_day; new_cale.begin.tm_isdst = -1; mktime(&new_cale.begin); new_cale.repeatType = calendarRepeatNone; new_cale.end.tm_year = current_year; new_cale.end.tm_mon = current_month; new_cale.end.tm_mday = current_day; new_cale.end.tm_isdst = -1; mktime(&new_cale.end); } else if (dialog==DIALOG_SAID_RPT_FUTURE) { /* Change rpt. end date on old appt. to end 1 day before new event*/ mcale->cale.repeatForever = 0; memset(&(mcale->cale.repeatEnd), 0, sizeof(struct tm)); mcale->cale.repeatEnd.tm_mon = current_month; mcale->cale.repeatEnd.tm_mday = current_day - 1; mcale->cale.repeatEnd.tm_year = current_year; mcale->cale.repeatEnd.tm_isdst = -1; mktime(&(mcale->cale.repeatEnd)); /* Create new appt. for future including exceptions from previous event */ new_cale.begin.tm_year = current_year; new_cale.begin.tm_mon = current_month; new_cale.begin.tm_mday = current_day; new_cale.begin.tm_isdst = -1; mktime(&new_cale.begin); new_cale.exception = malloc(mcale->cale.exceptions * sizeof(struct tm)); memcpy(new_cale.exception, mcale->cale.exception, mcale->cale.exceptions * sizeof(struct tm)); new_cale.exceptions = mcale->cale.exceptions; } else if (dialog==DIALOG_SAID_RPT_ALL) { /* Keep the list of exceptions from the original record */ new_cale.exception = malloc(mcale->cale.exceptions * sizeof(struct tm)); memcpy(new_cale.exception, mcale->cale.exception, mcale->cale.exceptions * sizeof(struct tm)); new_cale.exceptions = mcale->cale.exceptions; } } /* TODO - take care of blob and tz? */ set_new_button_to(CLEAR_FLAG); /* New record */ if (flag != MODIFY_FLAG) { unique_id=0; /* Palm will supply unique_id for new record */ pc_calendar_write(&new_cale, NEW_PC_REC, attrib, &unique_id); } if (flag==MODIFY_FLAG) { long char_set; /* Convert to Palm character set */ get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { if (mcale->cale.description) charset_j2p(mcale->cale.description, strlen(mcale->cale.description)+1, char_set); if (mcale->cale.note) charset_j2p(mcale->cale.note, strlen(mcale->cale.note)+1, char_set); if (mcale->cale.location) charset_j2p(mcale->cale.location, strlen(mcale->cale.location)+1, char_set); /* TODO blob and tz? */ } if (datebook_version==0) { MyAppointment mappt; mappt.rt=mcale->rt; mappt.unique_id=mcale->unique_id; mappt.attrib=mcale->attrib; copy_calendarEvent_to_appointment(&(mcale->cale), &(mappt.appt)); delete_pc_record(DATEBOOK, &mappt, flag); free_Appointment(&(mappt.appt)); } else { delete_pc_record(CALENDAR, mcale, flag); } /* We need to take care of the 3 options allowed when modifying * repeating appointments */ if (dialog==DIALOG_SAID_RPT_CURRENT) { copy_calendar_event(&(mcale->cale), &cale); /* TODO rename? */ datebook_add_exception(cale, current_year, current_month, current_day); if ((mcale->rt==PALM_REC) || (mcale->rt==REPLACEMENT_PALM_REC)) { /* The original record gets the same ID, this exception gets a new one. */ pc_calendar_write(cale, REPLACEMENT_PALM_REC, attrib, &unique_id); } else { pc_calendar_write(cale, NEW_PC_REC, attrib, NULL); } unique_id = 0; pc_calendar_write(&new_cale, NEW_PC_REC, attrib, &unique_id); free_CalendarEvent(cale); free(cale); } else if (dialog==DIALOG_SAID_RPT_FUTURE) { /* Write old record with rpt. end date */ if ((mcale->rt==PALM_REC) || (mcale->rt==REPLACEMENT_PALM_REC)) { pc_calendar_write(&(mcale->cale), REPLACEMENT_PALM_REC, attrib, &unique_id); } else { unique_id=0; pc_calendar_write(&(mcale->cale), NEW_PC_REC, attrib, &unique_id); } /* Write new record with future rpt. events */ unique_id=0; /* Palm will supply unique_id for new record */ pc_calendar_write(&new_cale, NEW_PC_REC, attrib, &unique_id); } else { if ((mcale->rt==PALM_REC) || (mcale->rt==REPLACEMENT_PALM_REC)) { pc_calendar_write(&new_cale, REPLACEMENT_PALM_REC, attrib, &unique_id); } else { unique_id=0; pc_calendar_write(&new_cale, NEW_PC_REC, attrib, &unique_id); } } } /* Position calendar on the actual event or next future occurrence depending * on what is closest to the current date */ if ((flag!=COPY_FLAG)) { if (new_cale.repeatType == calendarRepeatNone) { memcpy(&next_tm, &(new_cale.begin), sizeof(next_tm)); } else { time(<ime); now = localtime(<ime); next_found = find_next_rpt_event(&new_cale, now, &next_tm); if (!next_found) { memcpy(&next_tm, &(new_cale.begin), sizeof(next_tm)); } } gtk_calendar_freeze(GTK_CALENDAR(main_calendar)); /* Unselect current day before changing to a new month. * This prevents a GTK error when the new month does not have the * same number of days. Example: attempting to switch from * Jan. 31 to Feb. 31 */ gtk_calendar_select_day(GTK_CALENDAR(main_calendar), 0); gtk_calendar_select_month(GTK_CALENDAR(main_calendar), next_tm.tm_mon, next_tm.tm_year+1900); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), next_tm.tm_mday); gtk_calendar_thaw(GTK_CALENDAR(main_calendar)); } free_CalendarEvent(&new_cale); highlight_days(); /* Don't return to modified record if search gui active */ if (!glob_find_id) { glob_find_id = unique_id; } datebook_update_clist(); /* Make sure that the next alarm will go off */ alarms_find_next(NULL, NULL, TRUE); return; } static void cb_delete_appt(GtkWidget *widget, gpointer data) { MyCalendarEvent *mcale; struct CalendarEvent *cale; int flag; int dialog = 0; int show_priv; long char_set; unsigned int *write_unique_id; mcale = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcale < (MyCalendarEvent *)CLIST_MIN_DATA) { return; } /* Convert to Palm character set */ get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { if (mcale->cale.description) charset_j2p(mcale->cale.description, strlen(mcale->cale.description)+1, char_set); if (mcale->cale.note) charset_j2p(mcale->cale.note, strlen(mcale->cale.note)+1, char_set); if (mcale->cale.location) charset_j2p(mcale->cale.location, strlen(mcale->cale.location)+1, char_set); } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mcale->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ flag = GPOINTER_TO_INT(data); if ((flag!=MODIFY_FLAG) && (flag!=DELETE_FLAG)) { return; } /* We need to take care of the 3 options allowed when modifying */ /* repeating appointments */ write_unique_id = NULL; if (mcale->cale.repeatType != calendarRepeatNone) { /* We need more user input. Pop up a dialog */ dialog = dialog_current_future_all_cancel(); if (dialog==DIALOG_SAID_RPT_CANCEL) { return; } else if (dialog==DIALOG_SAID_RPT_CURRENT) { /* Create an exception in the appointment */ copy_calendar_event(&(mcale->cale), &cale); datebook_add_exception(cale, current_year, current_month, current_day); if ((mcale->rt==PALM_REC) || (mcale->rt==REPLACEMENT_PALM_REC)) { write_unique_id = &(mcale->unique_id); } else { write_unique_id = NULL; } /* Since this was really a modify, and not a delete */ flag=MODIFY_FLAG; } else if (dialog==DIALOG_SAID_RPT_FUTURE) { /* Set an end date on the repeating event to delete future events */ copy_calendar_event(&(mcale->cale), &cale); cale->repeatForever = 0; memset(&(cale->repeatEnd), 0, sizeof(struct tm)); cale->repeatEnd.tm_mon = current_month; cale->repeatEnd.tm_mday = current_day - 1; cale->repeatEnd.tm_year = current_year; cale->repeatEnd.tm_isdst = -1; mktime(&(cale->repeatEnd)); if ((mcale->rt==PALM_REC) || (mcale->rt==REPLACEMENT_PALM_REC)) { write_unique_id = &(mcale->unique_id); } else { write_unique_id = NULL; } } } /* Its important to write a delete record first and then a new/modified * record in that order. This is so that the sync code can check to see * if the remote record is the same as the removed, or changed local * or not before it goes and modifies it. */ if (datebook_version==0) { MyAppointment mappt; mappt.rt=mcale->rt; mappt.unique_id=mcale->unique_id; mappt.attrib=mcale->attrib; copy_calendarEvent_to_appointment(&(mcale->cale), &(mappt.appt)); delete_pc_record(DATEBOOK, &mappt, flag); free_Appointment(&(mappt.appt)); } else { delete_pc_record(CALENDAR, mcale, flag); } if (dialog==DIALOG_SAID_RPT_CURRENT || dialog==DIALOG_SAID_RPT_FUTURE) { pc_calendar_write(cale, REPLACEMENT_PALM_REC, mcale->attrib, write_unique_id); free_CalendarEvent(cale); free(cale); } if (flag==DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected>0) { clist_row_selected--; } } if ((flag == DELETE_FLAG) || (dialog==DIALOG_SAID_RPT_CURRENT)) { datebook_update_clist(); highlight_days(); } } static void cb_undelete_appt(GtkWidget *widget, gpointer data) { MyCalendarEvent *mcale; int flag; int show_priv; mcale = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mcale < (MyCalendarEvent *)CLIST_MIN_DATA) { return; } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mcale->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ jp_logf(JP_LOG_DEBUG, "mcale->unique_id = %d\n",mcale->unique_id); jp_logf(JP_LOG_DEBUG, "mcale->rt = %d\n",mcale->rt); flag = GPOINTER_TO_INT(data); if (flag==UNDELETE_FLAG) { if (mcale->rt == DELETED_PALM_REC || mcale->rt == DELETED_PC_REC) { if (datebook_version==0) { MyAppointment mappt; mappt.unique_id=mcale->unique_id; undelete_pc_record(DATEBOOK, &mappt, flag); } else { undelete_pc_record(CALENDAR, mcale, flag); } } /* Possible later addition of undelete for modified records else if (mcale->rt == MODIFIED_PALM_REC) { cb_add_new_record(widget, GINT_TO_POINTER(COPY_FLAG)); } */ } datebook_update_clist(); highlight_days(); } static void cb_check_button_alarm(GtkWidget *widget, gpointer data) { if (GTK_TOGGLE_BUTTON(widget)->active) { gtk_widget_show(hbox_alarm2); } else { gtk_widget_hide(hbox_alarm2); } } static void cb_radio_button_no_time(GtkWidget *widget, gpointer data) { /* GTK does not handle nested callbacks well! * When a time is selected from the drop-down menus cb_menu_time * is called. cb_menu_time, in turn, de-selects the notime checkbutton * which causes a signal to be generated which invokes * cb_radio_button_no_time. Finally, both callback routines call * set_begin_end_labels and in that routine is a call which sets the * currently selected item in the gtk_option_menu. This sequence of * events screws up the option menu for the first click. One solution * would be to disable signals in cb_menu_time, de-select the checkbutton, * and then re-enable signals. Given the frequency with which the menus * are used this solution involves too much of a performance hit. * Instead, this routine only updates the entry widgets and the menus * are left alone. Currently(20060111) this produces no difference in * jpilot behavior because the menus have been set to correct values in * other routines. */ /* set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES | UPDATE_DATE_MENUS); */ set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES); } static void cb_check_button_endon(GtkWidget *widget, gpointer data) { GtkWidget *Pbutton; struct tm *Pt; switch (GPOINTER_TO_INT(data)) { case PAGE_DAY: Pbutton = glob_endon_day_button; Pt = &glob_endon_day_tm; break; case PAGE_WEEK: Pbutton = glob_endon_week_button; Pt = &glob_endon_week_tm; break; case PAGE_MONTH: Pbutton = glob_endon_mon_button; Pt = &glob_endon_mon_tm; break; case PAGE_YEAR: Pbutton = glob_endon_year_button; Pt = &glob_endon_year_tm; break; default: return; } if (GTK_TOGGLE_BUTTON(widget)->active) { update_endon_button(Pbutton, Pt); } else { gtk_label_set_text(GTK_LABEL(GTK_BIN(Pbutton)->child), _("No Date")); } } static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct CalendarEvent *cale; MyCalendarEvent *mcale; char tempstr[20]; int i, b; int index, sorted_position; unsigned int unique_id = 0; #ifdef ENABLE_DATEBK int type; char *note; int len; long use_db3_tags; #endif #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (clist_row_selected == row) { return; } mcale = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mcale!=NULL) { unique_id = mcale->unique_id; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ if (clist_row_selected >=0) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); } else { clist_row_selected = 0; clist_select_row(GTK_CLIST(clist), 0, 0); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { glob_find_id = unique_id; datebook_find(); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } clist_row_selected=row; mcale = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mcale==NULL) { return; } if (mcale->rt == DELETED_PALM_REC || (mcale->rt == DELETED_PC_REC)) /* Possible later addition of undelete code for modified deleted records || mcale->rt == MODIFIED_PALM_REC */ { set_new_button_to(UNDELETE_FLAG); } else { set_new_button_to(CLEAR_FLAG); } connect_changed_signals(DISCONNECT_SIGNALS); cale=&(mcale->cale); if (datebook_version) { /* Calendar supports categories */ index = mcale->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (dbook_cat_menu_item2[sorted_position]==NULL) { /* Illegal category */ jp_logf(JP_LOG_DEBUG, "Category is not legal\n"); index = 0; sorted_position = find_sort_cat_pos(index); } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { if (dbook_cat_menu_item2[sorted_position]) { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(dbook_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } } /* End check for datebook version */ if (cale->event) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_no_time), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_appt_time), TRUE); } gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_desc_buffer), "", -1); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), "", -1); if (datebook_version) { gtk_entry_set_text(GTK_ENTRY(location_entry), ""); } #ifdef ENABLE_DATEBK if (use_db3_tags) { gtk_entry_set_text(GTK_ENTRY(datebk_entry), ""); } #endif if (cale->alarm) { /* This is to insure that the callback gets called */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_alarm), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_alarm), TRUE); switch (cale->advanceUnits) { case calendar_advMinutes: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_min), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_hour), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_day), FALSE); break; case calendar_advHours: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_min), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_hour), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_day), FALSE); break; case calendar_advDays: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_min), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_hour), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radio_button_alarm_day), TRUE); break; default: jp_logf(JP_LOG_WARN, _("Error in DateBookDB or Calendar advanceUnits = %d\n"),cale->advanceUnits); } sprintf(tempstr, "%d", cale->advance); gtk_entry_set_text(GTK_ENTRY(units_entry), tempstr); } else { /* This is to insure that the callback gets called */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_alarm), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_alarm), FALSE); gtk_entry_set_text(GTK_ENTRY(units_entry), "0"); } if (cale->description) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_desc_buffer), cale->description, -1); } #ifdef ENABLE_DATEBK if (use_db3_tags) { if (db3_parse_tag(cale->note, &type, NULL) > 0) { /* There is a datebk tag. Need to separate it from the note */ note = strdup(cale->note); len=strlen(note); for (i=0; inote) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), cale->note, -1); } } else if (cale->note) { /* Not using db3 tags */ gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), cale->note, -1); } #else /* Ordinary, non-DateBk code */ if (cale->note) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(dbook_note_buffer), cale->note, -1); } #endif begin_date.tm_mon = cale->begin.tm_mon; begin_date.tm_mday = cale->begin.tm_mday; begin_date.tm_year = cale->begin.tm_year; begin_date.tm_hour = cale->begin.tm_hour; begin_date.tm_min = cale->begin.tm_min; end_date.tm_mon = cale->end.tm_mon; end_date.tm_mday = cale->end.tm_mday; end_date.tm_year = cale->end.tm_year; end_date.tm_hour = cale->end.tm_hour; end_date.tm_min = cale->end.tm_min; set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES | UPDATE_DATE_MENUS); if (datebook_version) { /* Calendar has a location field */ if (cale->location) { gtk_entry_set_text(GTK_ENTRY(location_entry), cale->location); } } /* Do the Repeat information */ switch (cale->repeatType) { case calendarRepeatNone: gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_NONE); break; case calendarRepeatDaily: if ((cale->repeatForever)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_day_endon), FALSE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_day_endon), TRUE); glob_endon_day_tm.tm_mon = cale->repeatEnd.tm_mon; glob_endon_day_tm.tm_mday = cale->repeatEnd.tm_mday; glob_endon_day_tm.tm_year = cale->repeatEnd.tm_year; update_endon_button(glob_endon_day_button, &glob_endon_day_tm); } sprintf(tempstr, "%d", cale->repeatFrequency); gtk_entry_set_text(GTK_ENTRY(repeat_day_entry), tempstr); gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_DAY); break; case calendarRepeatWeekly: if ((cale->repeatForever)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_week_endon), FALSE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_week_endon), TRUE); glob_endon_week_tm.tm_mon = cale->repeatEnd.tm_mon; glob_endon_week_tm.tm_mday = cale->repeatEnd.tm_mday; glob_endon_week_tm.tm_year = cale->repeatEnd.tm_year; update_endon_button(glob_endon_week_button, &glob_endon_week_tm); } sprintf(tempstr, "%d", cale->repeatFrequency); gtk_entry_set_text(GTK_ENTRY(repeat_week_entry), tempstr); for (i=0; i<7; i++) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(toggle_button_repeat_days[i]), cale->repeatDays[i]); } gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_WEEK); break; case calendarRepeatMonthlyByDate: case calendarRepeatMonthlyByDay: jp_logf(JP_LOG_DEBUG, "repeat day=%d\n",cale->repeatDay); if ((cale->repeatForever)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_mon_endon), FALSE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_mon_endon), TRUE); glob_endon_mon_tm.tm_mon = cale->repeatEnd.tm_mon; glob_endon_mon_tm.tm_mday = cale->repeatEnd.tm_mday; glob_endon_mon_tm.tm_year = cale->repeatEnd.tm_year; update_endon_button(glob_endon_mon_button, &glob_endon_mon_tm); } sprintf(tempstr, "%d", cale->repeatFrequency); gtk_entry_set_text(GTK_ENTRY(repeat_mon_entry), tempstr); if (cale->repeatType == calendarRepeatMonthlyByDay) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (toggle_button_repeat_mon_byday), TRUE); } if (cale->repeatType == calendarRepeatMonthlyByDate) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (toggle_button_repeat_mon_bydate), TRUE); } gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_MONTH); break; case calendarRepeatYearly: if ((cale->repeatForever)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_year_endon), FALSE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (check_button_year_endon), TRUE); glob_endon_year_tm.tm_mon = cale->repeatEnd.tm_mon; glob_endon_year_tm.tm_mday = cale->repeatEnd.tm_mday; glob_endon_year_tm.tm_year = cale->repeatEnd.tm_year; update_endon_button(glob_endon_year_button, &glob_endon_year_tm); } sprintf(tempstr, "%d", cale->repeatFrequency); gtk_entry_set_text(GTK_ENTRY(repeat_year_entry), tempstr); gtk_notebook_set_page(GTK_NOTEBOOK(notebook), PAGE_YEAR); break; default: jp_logf(JP_LOG_WARN, _("Unknown repeatType (%d) found in DatebookDB\n"), cale->repeatFrequency); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), mcale->attrib & dlpRecAttrSecret); connect_changed_signals(CONNECT_SIGNALS); return; } static void set_date_label(void) { struct tm now; char str[50]; char datef[50]; const char *svalue; now.tm_sec=0; now.tm_min=0; now.tm_hour=11; now.tm_isdst=-1; now.tm_wday=0; now.tm_yday=0; now.tm_mday = current_day; now.tm_mon = current_month; now.tm_year = current_year; mktime(&now); get_pref(PREF_LONGDATE, NULL, &svalue); if (svalue==NULL) { strcpy(datef, "%x"); } else { sprintf(datef, _("%%a., %s"), svalue); } /* Determine today for highlighting */ if (now.tm_mday == get_highlighted_today(&now)) strcat(datef, _(" (TODAY)")); jp_strftime(str, sizeof(str), datef, &now); gtk_label_set_text(GTK_LABEL(dow_label), str); } static void cb_cancel(GtkWidget *widget, gpointer data) { set_new_button_to(CLEAR_FLAG); datebook_refresh(FALSE, FALSE); } static void cb_edit_cats(GtkWidget *widget, gpointer data) { struct CalendarAppInfo cai; char db_name[FILENAME_MAX]; char pdb_name[FILENAME_MAX]; char full_name[FILENAME_MAX]; int num; size_t size; void *buf; struct pi_file *pf; long datebook_version; pi_buffer_t pi_buf; jp_logf(JP_LOG_DEBUG, "cb_edit_cats\n"); get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); if (datebook_version) { strcpy(pdb_name, "CalendarDB-PDat.pdb"); strcpy(db_name, "CalendarDB-PDat"); } else { /* Datebook doesn't use categories */ return; } get_home_file_name(pdb_name, full_name, sizeof(full_name)); buf=NULL; memset(&cai, 0, sizeof(cai)); pf = pi_file_open(full_name); pi_file_get_app_info(pf, &buf, &size); pi_buf.data = buf; pi_buf.used = size; pi_buf.allocated = size; num = unpack_CalendarAppInfo(&cai, &pi_buf); if (num <= 0) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), pdb_name); return; } pi_file_close(pf); edit_cats(widget, db_name, &(cai.category)); pi_buf.data = NULL; pi_buf.used = 0; pi_buf.allocated = 0; size = pack_CalendarAppInfo(&cai, &pi_buf); pdb_file_write_app_block(db_name, pi_buf.data, pi_buf.used); free(pi_buf.data); cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } static void cb_category(GtkWidget *item, int selection) { int b; if ((GTK_CHECK_MENU_ITEM(item))->active) { if (dbook_category == selection) { return; } #ifdef JPILOT_DEBUG printf("dbook_category: %d, selection: %d\n", dbook_category, selection); #endif b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (dbook_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(dbook_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(dbook_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (selection==NUM_DATEBOOK_CAT_ITEMS+1) { cb_edit_cats(item, NULL); } else { dbook_category = selection; } clist_row_selected = 0; jp_logf(JP_LOG_DEBUG, "cb_category() cat=%d\n", dbook_category); datebook_update_clist(); highlight_days(); jp_logf(JP_LOG_DEBUG, "Leaving cb_category()\n"); } } /* When a calendar day is pressed */ static void cb_cal_changed(GtkWidget *widget, gpointer data) { int num; unsigned int cal_year, cal_month, cal_day; int day_changed, mon_changed, year_changed; int b; #ifdef EASTER static int Easter=0; #endif num = GPOINTER_TO_INT(data); if (num!=CAL_DAY_SELECTED) { return; } /* Get selected date from calendar */ gtk_calendar_get_date(GTK_CALENDAR(main_calendar), &cal_year, &cal_month, &cal_day); /* Handle modified record before switching to new date */ if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (current_day==cal_day) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ gtk_signal_disconnect_by_func(GTK_OBJECT(main_calendar), GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); gtk_calendar_select_month(GTK_CALENDAR(main_calendar), current_month, 1900+current_year); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), current_day); gtk_signal_connect(GTK_OBJECT(main_calendar), "day_selected", GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); return; } if (b==DIALOG_SAID_3) { /* Save */ /* cb_add_new_record is troublesome because it attempts to * change the calendar. Not only must signals be disconnected * to avoid re-triggering cb_cal_changed but the original date * must be re-selected after the add_new_record has changed it */ gtk_signal_disconnect_by_func(GTK_OBJECT(main_calendar), GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); gtk_calendar_freeze(GTK_CALENDAR(main_calendar)); gtk_calendar_select_month(GTK_CALENDAR(main_calendar), cal_month, cal_year); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), cal_day); gtk_calendar_thaw(GTK_CALENDAR(main_calendar)); gtk_signal_connect(GTK_OBJECT(main_calendar), "day_selected", GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); } } set_new_button_to(CLEAR_FLAG); /* Day 0 is used in GTK to unselect the current highlighted day -- * NOT to change to the zeroeth day */ if (cal_day==0) { return; } mon_changed = year_changed = 0; if (cal_year < 1903) { cal_year=1903; gtk_calendar_select_month(GTK_CALENDAR(main_calendar), cal_month, 1903); } if (cal_year > 2037) { cal_year=2037; gtk_calendar_select_month(GTK_CALENDAR(main_calendar), cal_month, 2037); } if (current_year!=cal_year-1900) { current_year=cal_year-1900; year_changed = 1; mon_changed = 1; } if (current_month!=cal_month) { current_month=cal_month; mon_changed = 1; } day_changed = (current_day!=cal_day); current_day=cal_day; jp_logf(JP_LOG_DEBUG, "cb_cal_changed, %02d/%02d/%02d\n", cal_month,cal_day,cal_year); /* Easter Egg Code */ #ifdef EASTER if (((current_day==29) && (current_month==7)) || ((current_day==20) && (current_month==11))) { Easter++; if (Easter>4) { Easter=0; dialog_easter(current_day); } } else { Easter=0; } #endif if (mon_changed) { highlight_days(); } if (day_changed || mon_changed || year_changed) { set_date_label(); clist_row_selected = 0; } datebook_update_clist(); /* Keep focus on calendar so that GTK accelerator keys for calendar * can continue to be used */ gtk_widget_grab_focus(GTK_WIDGET(main_calendar)); } /* Called by week and month views when a user clicks on a date so that we * can set the day view to that date */ void datebook_gui_setdate(int year, int month, int day) { /* Reset current day pointers to the day the user click on */ current_year = year; current_month = month; current_day = day; /* Redraw the day view */ datebook_refresh(FALSE, FALSE); /* Force exposure of main window */ if (window) { gtk_window_present(GTK_WINDOW(window)); } } static void highlight_days(void) { int bit, mask; int dow_int, ndim, i; long ivalue; get_pref(PREF_DATEBOOK_HIGHLIGHT_DAYS, &ivalue, NULL); if (!ivalue) { return; } get_month_info(current_month, 1, current_year, &dow_int, &ndim); appointment_on_day_list(current_month, current_year, &mask, dbook_category, datebook_version); gtk_calendar_freeze(GTK_CALENDAR(main_calendar)); for (i=1, bit=1; i<=ndim; i++, bit = bit<<1) { if (bit & mask) { gtk_calendar_mark_day(GTK_CALENDAR(main_calendar), i); } else { gtk_calendar_unmark_day(GTK_CALENDAR(main_calendar), i); } } gtk_calendar_thaw(GTK_CALENDAR(main_calendar)); } static int datebook_find(void) { int r, found_at; jp_logf(JP_LOG_DEBUG, "datebook_find(), glob_find_id = %d\n", glob_find_id); if (glob_find_id) { r = clist_find_id(clist, glob_find_id, &found_at); if (r) { if (!gtk_clist_row_is_visible(GTK_CLIST(clist), found_at)) { gtk_clist_moveto(GTK_CLIST(clist), found_at, 0, 0.5, 0.0); } jp_logf(JP_LOG_DEBUG, "datebook_find(), selecting row %d\n", found_at); clist_select_row(GTK_CLIST(clist), found_at, 1); } glob_find_id = 0; } return EXIT_SUCCESS; } int datebook_refresh(int first, int do_init) { int b; int index = 0; int index2 = 0; int copy_current_day; int copy_current_month; int copy_current_year; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (do_init) init(); if (datebook_version) { /* Contacts supports categories */ if (glob_find_id) { dbook_category = CATEGORY_ALL; } if (dbook_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(dbook_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } } #ifdef ENABLE_DATEBK if (glob_find_id) { if (GTK_IS_WINDOW(window_datebk_cats)) { cb_datebk_category(NULL, GINT_TO_POINTER(1)); } else { datebk_category = 0xFFFF; } } #endif /* Need to disconnect signal before using gtk_calendar_select_day or callback will be activated inadvertently. */ gtk_signal_disconnect_by_func(GTK_OBJECT(main_calendar), GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); if (first) { gtk_calendar_select_month(GTK_CALENDAR(main_calendar), current_month, current_year+1900); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), current_day); } else { copy_current_day = current_day; copy_current_month = current_month; copy_current_year = current_year; gtk_calendar_freeze(GTK_CALENDAR(main_calendar)); /* Unselect current day before changing to a new month */ gtk_calendar_select_day(GTK_CALENDAR(main_calendar), 0); gtk_calendar_select_month(GTK_CALENDAR(main_calendar), copy_current_month, copy_current_year+1900); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), copy_current_day); gtk_calendar_thaw(GTK_CALENDAR(main_calendar)); } gtk_signal_connect(GTK_OBJECT(main_calendar), "day_selected", GTK_SIGNAL_FUNC(cb_cal_changed), GINT_TO_POINTER(CAL_DAY_SELECTED)); datebook_update_clist(); if (datebook_version ) { if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(dbook_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } } highlight_days(); set_date_label(); return EXIT_SUCCESS; } static void cb_menu_time(GtkWidget *item, gint data) { int span; if (END_TIME_FLAG & data) { if (HOURS_FLAG & data) { end_date.tm_hour = data&0x3F; } else { end_date.tm_min = data&0x3F; } } else { /* If start time changed then update end time to keep same appt. length */ if (HOURS_FLAG & data) { span = end_date.tm_hour - begin_date.tm_hour; begin_date.tm_hour = data&0x3F; span = (begin_date.tm_hour + span) % 24; span < 0 ? span += 24 : span; end_date.tm_hour = span; } else { span = end_date.tm_min - begin_date.tm_min; begin_date.tm_min = data&0x3F; span = begin_date.tm_min + span; if (span >= 60) { span -= 60; end_date.tm_hour = (end_date.tm_hour + 1) % 24; } else if (span < 0) { span += 60; end_date.tm_hour = (end_date.tm_hour - 1) % 24; } end_date.tm_min = span; } } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_appt_time), TRUE); set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES); } static gboolean cb_hide_menu_time(GtkWidget *widget, gpointer data) { /* Datebook does not support events spanning midnight where the beginning time is greater than the ending time */ if (datebook_version == 0) { if (begin_date.tm_hour > end_date.tm_hour) { end_date.tm_hour = begin_date.tm_hour; } } set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_MENUS | UPDATE_DATE_ENTRIES); return FALSE; } #define PRESSED_P 100 #define PRESSED_A 101 #define PRESSED_TAB 102 #define PRESSED_MINUS 103 #define PRESSED_SHIFT_TAB 104 static void entry_key_pressed(int next_digit, int end_entry) { struct tm *Ptm; int span_hour, span_min; if (end_entry) { Ptm = &end_date; } else { Ptm = &begin_date; } span_hour = end_date.tm_hour - begin_date.tm_hour; span_min = end_date.tm_min - begin_date.tm_min; if ((next_digit>=0) && (next_digit<=9)) { Ptm->tm_hour = ((Ptm->tm_hour)*10 + (Ptm->tm_min)/10)%100; Ptm->tm_min = ((Ptm->tm_min)*10)%100 + next_digit; } if ((next_digit==PRESSED_P) && ((Ptm->tm_hour)<12)) { (Ptm->tm_hour) += 12; } if ((next_digit==PRESSED_A) && ((Ptm->tm_hour)>11)) { (Ptm->tm_hour) -= 12; } /* Don't let the first digit exceed 2 */ if ((int)(Ptm->tm_hour/10) > 2) { Ptm->tm_hour -= ((int)(Ptm->tm_hour/10)-2)*10; } /* Don't let the hour be > 23 */ if (Ptm->tm_hour > 23) { Ptm->tm_hour = 23; } /* If start time changed then update end time to keep same appt. length */ if (!end_entry) { span_hour = (begin_date.tm_hour + span_hour) % 24; span_hour < 0 ? span_hour += 24 : span_hour; end_date.tm_hour = span_hour; span_min = begin_date.tm_min + span_min; while (span_min >= 60) { span_min -= 60; span_hour = (span_hour + 1) % 24; } while (span_min < 0) { span_min += 60; span_hour = (span_hour - 1) % 24; } end_date.tm_min = span_min; span_hour < 0 ? span_hour += 24 : span_hour; end_date.tm_hour = span_hour; } set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES | UPDATE_DATE_MENUS); } static gboolean cb_entry_pressed(GtkWidget *w, gpointer data) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_appt_time), TRUE); set_begin_end_labels(&begin_date, &end_date, UPDATE_DATE_ENTRIES | UPDATE_DATE_MENUS); /* return FALSE to let GTK know we did not handle the event * this allows GTK to finish handling it.*/ return FALSE; } static gboolean cb_entry_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) { int digit=-1; jp_logf(JP_LOG_DEBUG, "cb_entry_key_pressed key = %d\n", event->keyval); gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); if ((event->keyval >= GDK_0) && (event->keyval <= GDK_9)) { digit = (event->keyval)-GDK_0; } else if ((event->keyval >= GDK_KP_0) && (event->keyval <= GDK_KP_9)) { digit = (event->keyval)-GDK_KP_0; } else if ((event->keyval == GDK_P) || (event->keyval == GDK_p)) { digit = PRESSED_P; } else if ((event->keyval == GDK_A) || (event->keyval == GDK_a)) { digit = PRESSED_A; } else if (event->keyval == GDK_Tab) { digit = PRESSED_TAB; } else if (event->keyval == GDK_ISO_Left_Tab) { digit = PRESSED_SHIFT_TAB; } else if ((event->keyval == GDK_KP_Subtract) || (event->keyval == GDK_minus)) { digit = PRESSED_MINUS; } /* time entry widgets are cycled focus by pressing "-" * Tab will go to the next widget * Shift-Tab will go to the previous widget */ if ((digit==PRESSED_TAB) || (digit==PRESSED_MINUS)) { if (widget==begin_time_entry) { gtk_widget_grab_focus(GTK_WIDGET(end_time_entry)); } if (widget==end_time_entry) { if (digit==PRESSED_MINUS) { gtk_widget_grab_focus(GTK_WIDGET(begin_time_entry)); } if (digit==PRESSED_TAB) { gtk_widget_grab_focus(GTK_WIDGET(dbook_desc)); } } } else if (digit==PRESSED_SHIFT_TAB) { if (widget==begin_time_entry) { gtk_widget_grab_focus(GTK_WIDGET(radio_button_no_time)); } else if (widget==end_time_entry) { gtk_widget_grab_focus(GTK_WIDGET(begin_time_entry)); } } if (digit>=0) { if ((digit>=0) && (digit<=9)){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_appt_time), TRUE); } if (widget==begin_time_entry) { entry_key_pressed(digit, 0); } if (widget==end_time_entry) { entry_key_pressed(digit, 1); } return TRUE; } return FALSE; } static gboolean cb_key_pressed_tab(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { if (event->keyval == GDK_Tab) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } return FALSE; } static gboolean cb_key_pressed_tab_entry(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { GtkTextIter cursor_pos_iter; GtkTextBuffer *text_buffer; if (event->keyval == GDK_Tab) { text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); gtk_text_buffer_get_iter_at_mark(text_buffer,&cursor_pos_iter,gtk_text_buffer_get_insert(text_buffer)); if (gtk_text_iter_is_end(&cursor_pos_iter)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } } return FALSE; } static gboolean cb_key_pressed_shift_tab(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { if (event->keyval == GDK_ISO_Left_Tab) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } return FALSE; } static gboolean cb_keyboard(GtkWidget *widget, GdkEventKey *event, gpointer *p) { struct tm day; int up, down; int b; up = down = 0; switch (event->keyval) { case GDK_Page_Up: case GDK_KP_Page_Up: up=1; break; case GDK_Page_Down: case GDK_KP_Page_Down: down=1; break; } if (up || down) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ return TRUE; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); memset(&day, 0, sizeof(day)); day.tm_year = current_year; day.tm_mon = current_month; day.tm_mday = current_day; day.tm_hour = 12; day.tm_min = 0; if (up) { sub_days_from_date(&day, 1); } if (down) { add_days_to_date(&day, 1); } current_year = day.tm_year; current_month = day.tm_mon; current_day = day.tm_mday; /* This next line prevents a GTK error message from being printed. * e.g. If the day were 31 and the next month has <31 days then the * select month call will cause an error message since the 31st isn't * valid in that month. 0 is code for unselect the day */ gtk_calendar_freeze(GTK_CALENDAR(main_calendar)); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), 0); gtk_calendar_select_month(GTK_CALENDAR(main_calendar), day.tm_mon, day.tm_year+1900); gtk_calendar_select_day(GTK_CALENDAR(main_calendar), day.tm_mday); gtk_calendar_thaw(GTK_CALENDAR(main_calendar)); return TRUE; } return FALSE; } int datebook_gui_cleanup(void) { int b; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } free_CalendarEventList(&glob_cel); free_ToDoList(&datebook_todo_list); connect_changed_signals(DISCONNECT_SIGNALS); if (datebook_version) { set_pref(PREF_LAST_DATE_CATEGORY, dbook_category, NULL, TRUE); } set_pref(PREF_DATEBOOK_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); set_pref(PREF_DATEBOOK_NOTE_PANE, gtk_paned_get_position(GTK_PANED(note_pane)), NULL, TRUE); if (GTK_TOGGLE_BUTTON(show_todos_button)->active) { set_pref(PREF_DATEBOOK_TODO_PANE, gtk_paned_get_position(GTK_PANED(todo_pane)), NULL, TRUE); } todo_clist_clear(GTK_CLIST(todo_clist)); #ifdef ENABLE_DATEBK if (GTK_IS_WIDGET(window_datebk_cats)) { gtk_widget_destroy(window_datebk_cats); } #endif clist_clear(GTK_CLIST(clist)); /* Remove the accelerators */ gtk_window_remove_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(main_calendar)), accel_group); gtk_signal_disconnect_by_func(GTK_OBJECT(main_calendar), GTK_SIGNAL_FUNC(cb_keyboard), NULL); gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_keyboard), NULL); return EXIT_SUCCESS; } static void connect_changed_signals(int con_or_dis) { int i; static int connected=0; #ifdef ENABLE_DATEBK long use_db3_tags; #endif #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif /* CONNECT */ if ((con_or_dis==CONNECT_SIGNALS) && (!connected)) { connected=1; if (datebook_version) { for (i=0; iunique_id; cb_app_button(NULL, GINT_TO_POINTER(TODO)); } static void cb_todos_show(GtkWidget *widget, gpointer data) { long ivalue; set_pref(PREF_DATEBOOK_TODO_SHOW, GTK_TOGGLE_BUTTON(show_todos_button)->active, NULL, TRUE); if (!(GTK_TOGGLE_BUTTON(show_todos_button)->active)) { set_pref(PREF_DATEBOOK_TODO_PANE, gtk_paned_get_position(GTK_PANED(todo_pane)), NULL, TRUE); } if (GTK_TOGGLE_BUTTON(widget)->active) { get_pref(PREF_DATEBOOK_TODO_PANE, &ivalue, NULL); gtk_paned_set_position(GTK_PANED(todo_pane), ivalue); gtk_widget_show_all(GTK_WIDGET(todo_vbox)); } else { gtk_widget_hide_all(GTK_WIDGET(todo_vbox)); } } /*** End ToDo code ***/ #ifdef DAY_VIEW static void cb_resize(GtkWidget *widget, gpointer data) { printf("resize\n"); } static gint cb_datebook_idle(gpointer data) { update_daily_view_undo(NULL); gtk_signal_connect(GTK_OBJECT(scrolled_window), "configure_event", GTK_SIGNAL_FUNC(cb_resize), NULL); return FALSE; /* Cause this function not to be called again */ } #endif int datebook_gui(GtkWidget *vbox, GtkWidget *hbox) { GtkWidget *pixmapwid; GdkPixmap *pixmap; GdkBitmap *mask; GtkWidget *button; GtkWidget *separator; GtkWidget *label; GtkWidget *table; GtkWidget *vbox1, *vbox2; GtkWidget *hbox_temp; GtkWidget *vbox_temp; #ifdef DAY_VIEW GtkWidget *vbox_no_time_appts; GtkWidget *scrolled_window2; #endif GtkWidget *vbox_repeat_day; GtkWidget *hbox_repeat_day1; GtkWidget *hbox_repeat_day2; GtkWidget *vbox_repeat_week; GtkWidget *hbox_repeat_week1; GtkWidget *hbox_repeat_week2; GtkWidget *hbox_repeat_week3; GtkWidget *vbox_repeat_mon; GtkWidget *hbox_repeat_mon1; GtkWidget *hbox_repeat_mon2; GtkWidget *hbox_repeat_mon3; GtkWidget *vbox_repeat_year; GtkWidget *hbox_repeat_year1; GtkWidget *hbox_repeat_year2; GtkWidget *notebook_tab1; GtkWidget *notebook_tab2; GtkWidget *notebook_tab3; GtkWidget *notebook_tab4; GtkWidget *notebook_tab5; GSList *group; char *titles[]={"","","","",""}; long fdow; long ivalue; long char_set; long show_tooltips; char *cat_name; #ifdef ENABLE_DATEBK long use_db3_tags; #endif int i, j; char days2[12]; char *days[] = { N_("Su"), N_("Mo"), N_("Tu"), N_("We"), N_("Th"), N_("Fr"), N_("Sa"), N_("Su") }; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); init(); #ifdef ENABLE_DATEBK datebk_entry = NULL; get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif get_calendar_or_datebook_app_info(&dbook_app_info, datebook_version); if (datebook_version) { /* Initialize categories */ get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=1; ichild)), "label_high"); #endif /* "Apply Changes" button */ CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); if (datebook_version) { /* Calendar supports categories */ /* Right-side Category menu */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Clear GTK option menus before use */ for (i=0; i6) { j=0; } g_strlcpy(days2, _(days[j]), sizeof(days2)); /* If no translation occurred then use the first letter only */ if (!strcmp(days2, days[j])) { days2[0]=days[j][0]; days2[1]='\0'; } toggle_button_repeat_days[j] = gtk_toggle_button_new_with_label(days2); gtk_box_pack_start(GTK_BOX(hbox_repeat_week3), toggle_button_repeat_days[j], FALSE, FALSE, 0); } /* "Month Repeat" page */ vbox_repeat_mon = gtk_vbox_new(FALSE, 0); hbox_repeat_mon1 = gtk_hbox_new(FALSE, 0); hbox_repeat_mon2 = gtk_hbox_new(FALSE, 0); hbox_repeat_mon3 = gtk_hbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_repeat_mon, notebook_tab4); gtk_box_pack_start(GTK_BOX(vbox_repeat_mon), hbox_repeat_mon1, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(vbox_repeat_mon), hbox_repeat_mon2, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(vbox_repeat_mon), hbox_repeat_mon3, FALSE, FALSE, 2); label = gtk_label_new(_("Frequency is Every")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon1), label, FALSE, FALSE, 2); repeat_mon_entry = gtk_entry_new_with_max_length(2); entry_set_multiline_truncate(GTK_ENTRY(repeat_mon_entry), TRUE); gtk_widget_set_usize(repeat_mon_entry, 30, 0); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon1), repeat_mon_entry, FALSE, FALSE, 0); label = gtk_label_new(_("Month(s)")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon1), label, FALSE, FALSE, 2); check_button_mon_endon = gtk_check_button_new_with_label(_("End on")); gtk_signal_connect(GTK_OBJECT(check_button_mon_endon), "clicked", GTK_SIGNAL_FUNC(cb_check_button_endon), GINT_TO_POINTER(PAGE_MONTH)); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon2), check_button_mon_endon, FALSE, FALSE, 0); glob_endon_mon_button = gtk_button_new_with_label(_("No Date")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon2), glob_endon_mon_button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(glob_endon_mon_button), "clicked", GTK_SIGNAL_FUNC(cb_cal_dialog), GINT_TO_POINTER(PAGE_MONTH)); label = gtk_label_new(_("Repeat by:")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon3), label, FALSE, FALSE, 0); toggle_button_repeat_mon_byday = gtk_radio_button_new_with_label (NULL, _("Day of week")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon3), toggle_button_repeat_mon_byday, FALSE, FALSE, 0); group = NULL; group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle_button_repeat_mon_byday)); toggle_button_repeat_mon_bydate = gtk_radio_button_new_with_label (group, _("Date")); gtk_box_pack_start(GTK_BOX(hbox_repeat_mon3), toggle_button_repeat_mon_bydate, FALSE, FALSE, 0); /* "Year Repeat" page */ vbox_repeat_year = gtk_vbox_new(FALSE, 0); hbox_repeat_year1 = gtk_hbox_new(FALSE, 0); hbox_repeat_year2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_repeat_year), hbox_repeat_year1, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(vbox_repeat_year), hbox_repeat_year2, FALSE, FALSE, 2); label = gtk_label_new(_("Frequency is Every")); gtk_box_pack_start(GTK_BOX(hbox_repeat_year1), label, FALSE, FALSE, 2); repeat_year_entry = gtk_entry_new_with_max_length(2); entry_set_multiline_truncate(GTK_ENTRY(repeat_year_entry), TRUE); gtk_widget_set_usize(repeat_year_entry, 30, 0); gtk_box_pack_start(GTK_BOX(hbox_repeat_year1), repeat_year_entry, FALSE, FALSE, 0); label = gtk_label_new(_("Year(s)")); gtk_box_pack_start(GTK_BOX(hbox_repeat_year1), label, FALSE, FALSE, 2); check_button_year_endon = gtk_check_button_new_with_label(_("End on")); gtk_signal_connect(GTK_OBJECT(check_button_year_endon), "clicked", GTK_SIGNAL_FUNC(cb_check_button_endon), GINT_TO_POINTER(PAGE_YEAR)); gtk_box_pack_start(GTK_BOX(hbox_repeat_year2), check_button_year_endon, FALSE, FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_repeat_year, notebook_tab5); glob_endon_year_button = gtk_button_new_with_label(_("No Date")); gtk_box_pack_start(GTK_BOX(hbox_repeat_year2), glob_endon_year_button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(glob_endon_year_button), "clicked", GTK_SIGNAL_FUNC(cb_cal_dialog), GINT_TO_POINTER(PAGE_YEAR)); /* Set default values for repeats */ gtk_entry_set_text(GTK_ENTRY(units_entry), "5"); gtk_entry_set_text(GTK_ENTRY(repeat_day_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_week_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_mon_entry), "1"); gtk_entry_set_text(GTK_ENTRY(repeat_year_entry), "1"); gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0); gtk_notebook_popup_enable(GTK_NOTEBOOK(notebook)); /* end notebook details */ /* Capture the TAB key in text fields */ gtk_signal_connect(GTK_OBJECT(dbook_desc), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_tab_entry), dbook_note); gtk_signal_connect(GTK_OBJECT(dbook_desc), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_shift_tab), end_time_entry); gtk_signal_connect(GTK_OBJECT(dbook_note), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_shift_tab), dbook_desc); /* Capture the Enter & Shift-Enter key combinations to move back and * forth between the left- and right-hand sides of the display. */ gtk_signal_connect(GTK_OBJECT(clist), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_left_side), dbook_desc); gtk_signal_connect(GTK_OBJECT(dbook_desc), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_right_side), NULL); gtk_signal_connect(GTK_OBJECT(dbook_note), "key_press_event", GTK_SIGNAL_FUNC(cb_key_pressed_right_side), GINT_TO_POINTER(1)); /* Allow PgUp and PgDown to move selected day in calendar */ gtk_signal_connect(GTK_OBJECT(main_calendar), "key_press_event", GTK_SIGNAL_FUNC(cb_keyboard), NULL); gtk_signal_connect(GTK_OBJECT(clist), "key_press_event", GTK_SIGNAL_FUNC(cb_keyboard), NULL); /**********************************************************************/ gtk_widget_show_all(vbox); gtk_widget_show_all(hbox); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(undelete_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(hbox_alarm2); get_pref(PREF_DATEBOOK_TODO_SHOW, &ivalue, NULL); if (!ivalue) { gtk_widget_hide_all(todo_vbox); gtk_paned_set_position(GTK_PANED(todo_pane), 100000); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(show_todos_button), TRUE); } datebook_refresh(TRUE, TRUE); /* The focus doesn't do any good on the application button */ gtk_widget_grab_focus(GTK_WIDGET(main_calendar)); return EXIT_SUCCESS; } jpilot-1.8.2/cp1250.c0000664000175000017500000000701712320101153011015 00000000000000/******************************************************************************* * cp1250.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2002 by Jiri Rubes * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * Czech, Polish (and other CP 1250 languages) library * Convert charsets: Palm <-> Unix: * Palm : CP 1250 * Unix : ISO-8859-2 */ /********************************* Includes ***********************************/ #include "config.h" #include #include "cp1250.h" /********************************* Constants **********************************/ #define isCZ(c) ((c) & 0x80) /***** Unix: ISO *****/ static const unsigned char w2l[128] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0xa9, 0x8b, 0xa6, 0xab, 0xae, 0xac, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xb9, 0x9b, 0xb6, 0xbb, 0xbe, 0xbc, 0xa0, 0xb7, 0xa2, 0xa3, 0xa4, 0xa1, 0x8c, 0xa7, 0xa8, 0x8a, 0xaa, 0x8d, 0x8f, 0xad, 0x8e, 0xaf, 0xb0, 0x9a, 0xb2, 0xb3, 0xb4, 0x9e, 0x9c, 0x9f, 0xb8, 0xb1, 0xba, 0x9d, 0xa5, 0xbd, 0xb5, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; static const unsigned char l2w[128] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0xa9, 0x8b, 0xa6, 0xab, 0xae, 0xac, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xb1, 0x9b, 0xb6, 0xbb, 0xb5, 0xb7, 0xa0, 0xa5, 0xa2, 0xa3, 0xa4, 0xbc, 0x8c, 0xa7, 0xa8, 0x8a, 0xaa, 0x8d, 0x8f, 0xad, 0x8e, 0xaf, 0xb0, 0xb9, 0xb2, 0xb3, 0xb4, 0xbe, 0x9c, 0xa1, 0xb8, 0x9a, 0xba, 0x9d, 0x9f, 0xbd, 0x9e, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; /****************************** Main Code *************************************/ void Win2Lat(char *const buf, int buf_len) { unsigned char *p; int i; if (buf == NULL) return; for (i=0, p = (unsigned char *)buf; *p && i < buf_len; p++, i++) { if (isCZ(*p)) { *p = w2l[(*p) & 0x7f]; } } } void Lat2Win(char *const buf, int buf_len) { unsigned char *p; int i; if (buf == NULL) return; for (i=0, p = (unsigned char *)buf; *p && i < buf_len; p++, i++) { if (isCZ(*p)) { *p = l2w[(*p) & 0x7f]; } } } jpilot-1.8.2/compile0000755000175000017500000001624512261335263011335 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: jpilot-1.8.2/SlackBuild.in0000775000175000017500000000763112320101153012311 00000000000000#!/bin/bash # # First build with # ./configure --prefix=/usr; make; make install # PACKAGE=@PACKAGE@ VERSION=@VERSION@ ARCH=i386 RELEASE=1 # STARTDIR=`pwd` TMPDIR=`mktemp -d -t slackware.XXXXXX` || exit 1 # echo Created $TMPDIR mkdir $TMPDIR/install cp description-pak $TMPDIR/install/slack-desc # cd / tar cf - \ usr/bin/jpilot \ usr/bin/jpilot-dump \ usr/bin/jpilot-dial \ usr/bin/jpilot-sync \ usr/lib/jpilot/plugins/libexpense.la \ usr/lib/jpilot/plugins/libexpense.so \ usr/lib/jpilot/plugins/libexpense.so.0 \ usr/lib/jpilot/plugins/libexpense.so.0.0.0 \ usr/lib/jpilot/plugins/libsynctime.la \ usr/lib/jpilot/plugins/libsynctime.so \ usr/lib/jpilot/plugins/libsynctime.so.0 \ usr/lib/jpilot/plugins/libsynctime.so.0.0.0 \ usr/lib/jpilot/plugins/libkeyring.la \ usr/lib/jpilot/plugins/libkeyring.so \ usr/lib/jpilot/plugins/libkeyring.so.0 \ usr/lib/jpilot/plugins/libkeyring.so.0.0.0 \ usr/man/man1/jpilot.1 \ usr/man/man1/jpilot-dial.1 \ usr/man/man1/jpilot-sync.1 \ usr/doc/$PACKAGE-$VERSION/AUTHORS \ usr/doc/$PACKAGE-$VERSION/BUGS \ usr/doc/$PACKAGE-$VERSION/COPYING \ usr/doc/$PACKAGE-$VERSION/ChangeLog \ usr/doc/$PACKAGE-$VERSION/INSTALL \ usr/doc/$PACKAGE-$VERSION/README \ usr/doc/$PACKAGE-$VERSION/TODO \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-address.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-datebook.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-expense.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-install.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-memo.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-1.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-2.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-3.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-4.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-5.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-6.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-7.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-8.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-print.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-search.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-todo.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-toplogo.jpg \ usr/doc/$PACKAGE-$VERSION/manual/manual.html \ usr/doc/$PACKAGE-$VERSION/manual/plugin.html \ usr/doc/$PACKAGE-$VERSION/icons/README \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon1.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon2.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon3.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon4.xpm \ usr/share/$PACKAGE/AddressDB.pdb \ usr/share/$PACKAGE/DatebookDB.pdb \ usr/share/$PACKAGE/ExpenseDB.pdb \ usr/share/$PACKAGE/Memo32DB.pdb \ usr/share/$PACKAGE/MemoDB.pdb \ usr/share/$PACKAGE/ToDoDB.pdb \ usr/share/$PACKAGE/TasksDB-PTod.pdb \ usr/share/$PACKAGE/CalendarDB-PDat.pdb \ usr/share/$PACKAGE/ContactsDB-PAdd.pdb \ usr/share/$PACKAGE/MemosDB-PMem.pdb \ usr/share/$PACKAGE/jpilotrc.blue \ usr/share/$PACKAGE/jpilotrc.default \ usr/share/$PACKAGE/jpilotrc.green \ usr/share/$PACKAGE/jpilotrc.purple \ usr/share/$PACKAGE/jpilotrc.steel \ usr/share/locale/ca/LC_MESSAGES/jpilot.mo \ usr/share/locale/cs/LC_MESSAGES/jpilot.mo \ usr/share/locale/da/LC_MESSAGES/jpilot.mo \ usr/share/locale/de/LC_MESSAGES/jpilot.mo \ usr/share/locale/es/LC_MESSAGES/jpilot.mo \ usr/share/locale/fr/LC_MESSAGES/jpilot.mo \ usr/share/locale/it/LC_MESSAGES/jpilot.mo \ usr/share/locale/ja/LC_MESSAGES/jpilot.mo \ usr/share/locale/ko/LC_MESSAGES/jpilot.mo \ usr/share/locale/nl/LC_MESSAGES/jpilot.mo \ usr/share/locale/no/LC_MESSAGES/jpilot.mo \ usr/share/locale/ru/LC_MESSAGES/jpilot.mo \ usr/share/locale/rw/LC_MESSAGES/jpilot.mo \ usr/share/locale/sv/LC_MESSAGES/jpilot.mo \ usr/share/locale/tr/LC_MESSAGES/jpilot.mo \ usr/share/locale/uk/LC_MESSAGES/jpilot.mo \ usr/share/locale/vi/LC_MESSAGES/jpilot.mo \ usr/share/locale/zh_CN/LC_MESSAGES/jpilot.mo \ usr/share/locale/zh_TW/LC_MESSAGES/jpilot.mo \ | (cd $TMPDIR; tar xf -) # cd $TMPDIR makepkg -l n -c n $PACKAGE-$VERSION-$ARCH-$RELEASE.tgz cp $TMPDIR/*.tgz $STARTDIR/ rm -rf $TMPDIR jpilot-1.8.2/COPYING0000664000175000017500000004311012320101153010764 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. jpilot-1.8.2/russian.h0000664000175000017500000000221612320101153011570 00000000000000/******************************************************************************* * russian.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000 by Gennady Kudelya * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* Header for Russian library Convert Palm <-> Unix: Palm : koi8 Unix : Win1251 */ void koi8_to_win1251(char *const buf, int buf_len); void win1251_to_koi8(char *const buf, int buf_len); jpilot-1.8.2/dat.c0000664000175000017500000010551612340261240010664 00000000000000/******************************************************************************* * dat.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * Thanks to nseessle@mail.hh.provi.de * http://ourworld.compuserve.com/homepages/nseessle/frames/pilot/dat_e.htm * http://www.geocities.com/Heartland/Acres/3216/todo_dat.htm * Scott Leighton helphand@pacbell.net * * for their descriptions of the dat formats. */ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include "i18n.h" #include "utils.h" #include "log.h" /********************************* Constants **********************************/ #define DAT_STATUS_ADD 0x01 #define DAT_STATUS_UPDATE 0x02 #define DAT_STATUS_DELETE 0x04 #define DAT_STATUS_PENDING 0x08 #define DAT_STATUS_ARCHIVE 0x80 /* I made this one up for a bit to store the private flag */ #define DAT_STATUS_PRIVATE 0x10 /* Repeat types */ #define DAILY 1 #define WEEKLY 2 #define MONTHLY_BY_DAY 3 #define MONTHLY_BY_DATE 4 #define YEARLY_BY_DATE 5 #define YEARLY_BY_DAY 6 /* DAT field types */ #define DAT_TYPE_INTEGER 1 #define DAT_TYPE_CSTRING 5 #define DAT_TYPE_DATE 3 #define DAT_TYPE_BOOLEAN 6 #define DAT_TYPE_BITFLAG 7 #define DAT_TYPE_REPEAT 8 /* #define JPILOT_DEBUG */ /****************************** Prototypes ************************************/ #ifdef JPILOT_DEBUG static int print_date(int palm_date); #endif struct field { int type; int i; long date; char *str; }; /****************************** Main Code *************************************/ static int x86_short(unsigned char *str) { return str[1] * 0x100 + str[0]; } static long x86_long(unsigned char *str) { return str[3]*0x1000000 + str[2]*0x0010000 + str[1]*0x0000100 + str[0]; } /* Returns the length of the CString read */ static int get_CString(FILE *in, char **PStr) { unsigned char size1; unsigned char size2[2]; int size; if (fread(&size1, 1, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if (size1==0) { *PStr = NULL; return 0; } if (size1==0xFF) { if (fread(size2, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } size = x86_short(size2); #ifdef JPILOT_DEBUG printf("BIG STRING size=%d\n", size); #endif } else { size=size1; } /* malloc an extra byte just to be safe */ *PStr=malloc(size+2); if (fread(*PStr, size, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } (*PStr)[size]='\0'; return size; } static int get_categories(FILE *in, struct CategoryAppInfo *ai) { unsigned char str_long[4]; char *PStr; long count; int i; /* Get the category count */ if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } count = x86_long(str_long); for (i=0; i<16; i++) { ai->renamed[i]=0; ai->name[i][0]=0; ai->ID[i]=0; } ai->lastUniqueID=0; for (i=0; iID[i] = x86_long(str_long); /* category dirty flag */ if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* long category name */ get_CString(in, &PStr); strncpy(ai->name[i], PStr, 16); ai->name[i][15]='\0'; free(PStr); /* short category name */ get_CString(in, &PStr); free(PStr); } return count; } static int get_repeat(FILE *in, struct Appointment *appt) { time_t t = 0; struct tm *now; unsigned char str_long[4]; unsigned char str_short[2]; int l, s, i, bit; char *PStr; int repeat_type; if (fread(str_short, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } s = x86_short(str_short); #ifdef JPILOT_DEBUG printf(" repeat entry follows:\n"); printf("%d exceptions\n", s); #endif if (!appt) return EXIT_FAILURE; appt->exception=NULL; memset(&(appt->repeatEnd), 0, sizeof(appt->repeatEnd)); appt->exceptions=s; if (s>0) { appt->exception=malloc(sizeof(struct tm) * s); if (!(appt->exceptions)) { jp_logf(JP_LOG_WARN, "get_repeat(): %s\n", _("Out of memory")); } } for (i=0; iexception[i]), now, sizeof(struct tm)); } #ifdef JPILOT_DEBUG printf("date_exception_entry: "); print_date(l); #endif } if (fread(str_short, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } s = x86_short(str_short); #ifdef JPILOT_DEBUG printf("0x%x repeat event flag\n", s); #endif if (s==0x0000) { appt->repeatType=calendarRepeatNone; return EXIT_SUCCESS; } if (s==0xFFFF) { /* Class entry here */ if (fread(str_short, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } s = x86_short(str_short); #ifdef JPILOT_DEBUG printf("constant of 1 = %d\n", s); #endif if (fread(str_short, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } s = x86_short(str_short); #ifdef JPILOT_DEBUG printf("class name length = %d\n", s); #endif PStr = malloc(s+1); if (fread(PStr, s, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } PStr[s]='\0'; #ifdef JPILOT_DEBUG printf("class = [%s]\n", PStr); #endif free(PStr); } if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } repeat_type = x86_long(str_long); appt->repeatType=repeat_type; #ifdef JPILOT_DEBUG printf("repeatType=%d ", repeat_type); switch (repeat_type) { case DAILY: printf("Daily\n"); break; case WEEKLY: printf("Weekly\n"); break; case MONTHLY_BY_DAY: printf("MonthlyByDay\n"); break; case MONTHLY_BY_DATE: printf("Monthly By Date\n"); break; case YEARLY_BY_DATE: printf("Yearly By Date\n"); break; case YEARLY_BY_DAY: printf("Yearly By Day\n"); break; default: printf("unknown repeat type %d\n", l); } #endif if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Interval = %d\n", l); #endif appt->repeatFrequency=l; if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); { t = l; now = localtime(&t); memcpy(&(appt->repeatEnd), now, sizeof(struct tm)); } if (t==0x749e77bf) { appt->repeatForever=TRUE; } else { appt->repeatForever=FALSE; } #ifdef JPILOT_DEBUG printf("repeatEnd: 0x%x -> ", l); print_date(l); #endif if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); appt->repeatWeekstart=l; #ifdef JPILOT_DEBUG printf("First Day of Week = %d\n", l); #endif switch (repeat_type) { case DAILY: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Day Index = %d\n", l); #endif break; case WEEKLY: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Day Index = %d\n", l); #endif if (fread(str_long, 1, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } for (i=0, bit=1; i<7; i++, bit=bit<<1) { appt->repeatDays[i]=( str_long[0] & bit ); } #ifdef JPILOT_DEBUG printf("Days Mask = %x\n", str_long[0]); #endif break; case MONTHLY_BY_DAY: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } s = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Day Index = %d\n", l); #endif if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Week Index = %d\n", l); #endif appt->repeatDay = 7*l + s; break; case MONTHLY_BY_DATE: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Day Number = %d\n", l); #endif break; case YEARLY_BY_DATE: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Day Number = %d\n", l); #endif if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } l = x86_long(str_long); #ifdef JPILOT_DEBUG printf("Month Index = %d\n", l); #endif break; case YEARLY_BY_DAY: break; default: #ifdef JPILOT_DEBUG printf("unknown repeat type2 %d\n", l); #endif break; } return EXIT_SUCCESS; } #ifdef JPILOT_DEBUG static int print_date(int palm_date) { time_t t; struct tm *now; char text[256]; t = palm_date; /* - 20828448800; */ now = localtime(&t); strftime(text, sizeof(text), "%02m/%02d/%Y %02H:%02M:%02S", now); printf("%s\n", text); return EXIT_SUCCESS; } #endif #ifdef JPILOT_DEBUG static int print_field(struct field *f) { switch (f->type) { case DAT_TYPE_INTEGER: printf("%d\n", f->i); break; case DAT_TYPE_CSTRING: if (f->str) printf("%s\n", f->str); else printf("\n"); break; case DAT_TYPE_BOOLEAN: if (f->i) { printf("True\n"); } else { printf("False\n"); } break; case DAT_TYPE_DATE: print_date(f->date); break; case DAT_TYPE_REPEAT: printf("Repeat Type\n"); break; default: printf("print_field: unknown type = %d\n", f->type); break; } return EXIT_SUCCESS; } #endif static int get_field(FILE *in, struct field *f) { unsigned char str_long[4]; long type; char *PStr; if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } type = x86_long(str_long); f->type=type; f->str=NULL; switch (type) { case DAT_TYPE_INTEGER: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } f->i = x86_long(str_long); break; case DAT_TYPE_CSTRING: fseek(in, 4, SEEK_CUR); /* padding */ get_CString(in, &PStr); f->str = PStr; break; case DAT_TYPE_BOOLEAN: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } f->i = x86_long(str_long); break; case DAT_TYPE_DATE: if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } f->date = x86_long(str_long); break; case DAT_TYPE_BITFLAG: /* I currently do not know how to read this datatype */ break; case DAT_TYPE_REPEAT: /* The calling function needs to call this */ /* get_repeat(in, NULL); */ break; default: jp_logf(JP_LOG_WARN, "get_field(): %s %ld\n", _("unknown type ="), type); break; } return EXIT_SUCCESS; } int dat_check_if_dat_file(FILE *in) { char version[6]; memset(version, 0, sizeof(version)); fseek(in, 0, SEEK_SET); /* Version */ if (fread(version, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } fseek(in, 0, SEEK_SET); jp_logf(JP_LOG_DEBUG, "dat_check_if_dat_file(): version = [%c%c%d%d]\n", version[3],version[2],version[1],version[0]); if ((version[3]=='D') && (version[2]=='B') && (version[1]==1) && (version[0]==0)) { return DAT_DATEBOOK_FILE; } if ((version[3]=='A') && (version[2]=='B') && (version[1]==1) && (version[0]==0)) { return DAT_ADDRESS_FILE; } if ((version[3]=='T') && (version[2]=='D') && (version[1]==1) && (version[0]==0)) { return DAT_TODO_FILE; } if ((version[3]=='M') && (version[2]=='P') && (version[1]==1) && (version[0]==0)) { return DAT_MEMO_FILE; } return EXIT_SUCCESS; } static int dat_read_header(FILE *in, int expected_field_count, char *schema, struct CategoryAppInfo *ai, int *schema_count, int *field_count, long *rec_count) { int i; unsigned char filler[100]; char version[4]; char *PStr; unsigned char str_long[4]; fseek(in, 0, SEEK_SET); /* Version */ if (fread(version, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } jp_logf(JP_LOG_DEBUG, "version = [%c%c%d%d]\n", version[3],version[2],version[1],version[0]); /* Full file path name */ get_CString(in, &PStr); jp_logf(JP_LOG_DEBUG, "path:[%s]\n",PStr); free(PStr); /* Show Header */ get_CString(in, &PStr); jp_logf(JP_LOG_DEBUG, "show header:[%s]\n",PStr); free(PStr); /* Next free category ID */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* Categories */ get_categories(in, ai); #ifdef JPILOT_DEBUG for (i=0; i<16; i++) { printf("%d [%s]\n", ai->ID[i], ai->name[i]); } #endif /* Schema resource ID */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* Schema fields per row */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } *field_count=x86_long(filler); if (*field_count != expected_field_count) { jp_logf(JP_LOG_WARN, _("fields per row count != %d, unknown format\n"), expected_field_count); return EXIT_FAILURE; } /* Schema record ID position */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* Schema record status position */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* Schema placement position */ if (fread(filler, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } /* Schema fields count */ if (fread(filler, 2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } *field_count = x86_short(filler); if (*field_count != expected_field_count) { jp_logf(JP_LOG_WARN, _("field count != %d, unknown format\n"), expected_field_count); return EXIT_FAILURE; } /* Schema fields */ if (fread(filler, (*field_count)*2, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if (memcmp(filler, schema, (*field_count)*2)) { jp_logf(JP_LOG_WARN, _("Unknown format, file has wrong schema\n")); jp_logf(JP_LOG_WARN, _("File schema is:")); for (i=0; i<(*field_count)*2; i++) { jp_logf(JP_LOG_WARN, " %02d\n", (char)filler[i]); } jp_logf(JP_LOG_WARN, _("It should be:")); for (i=0; i<(*field_count)*2; i++) { jp_logf(JP_LOG_WARN, " %02d\n", (char)schema[i]); } return EXIT_FAILURE; } /* Get record count */ if (fread(str_long, 4, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if ((*field_count)) { *rec_count = x86_long(str_long) / (*field_count); } #ifdef JPILOT_DEBUG printf("Record Count = %ld\n", *rec_count); #endif return EXIT_SUCCESS; } int dat_get_appointments(FILE *in, AppointmentList **alist, struct CategoryAppInfo *ai) { #ifdef JPILOT_DEBUG struct field hack_f; #endif int ret, i, j; struct field fa[28]; int schema_count, field_count; long rec_count; AppointmentList *temp_alist; AppointmentList *last_alist; time_t t; struct tm *now; /* Should be 1, 1, 1, 3, 1, 5, 1, 5, 6, 6, 1, 6, 1, 1, 8 */ char schema[30]={ DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_DATE,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_REPEAT,0 }; #ifdef JPILOT_DEBUG char *rec_fields[]={ "Record ID", "Status field", "Position" }; char *field_names[]={ "Start Time", "End Time", "Description", "Duration", "Note", "Untimed", "Private", "Category", "Alarm Set", "Alarm Advance Units", "Alarm Advance Type", "Repeat Event" }; #endif jp_logf(JP_LOG_DEBUG, "dat_get_appointments\n"); if (!alist) return EXIT_SUCCESS; *alist=NULL; ret = dat_read_header(in, 15, schema, ai, &schema_count, &field_count, &rec_count); if (ret<0) return ret; /* Get records */ last_alist=*alist; #ifdef JPILOT_DEBUG printf("---------- Records ----------\n"); #endif for (i=0; imappt.appt), 0, sizeof(temp_alist->mappt.appt)); temp_alist->next=NULL; temp_alist->app_type=DATEBOOK; /* Record ID */ /* Status Field */ /* Position */ for (j=0; j<3; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("rec field %d %s: ", j, rec_fields[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_alist); return EXIT_FAILURE; } } /* Get Fields */ for (j=0; j<12; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("field %d %s: ", j, field_names[j]); print_field(&(fa[j])); if (j==1) { hack_f.type=DAT_TYPE_DATE; hack_f.date=fa[j].i; printf(" "); print_field(&hack_f); } #endif if (fa[j].type!=schema[j*2+6]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2+6], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_alist); return EXIT_FAILURE; } if (fa[j].type==DAT_TYPE_REPEAT) { get_repeat(in, &(temp_alist->mappt.appt)); } } /* Start Time */ t = fa[0].date; now = localtime(&t); memcpy(&(temp_alist->mappt.appt.begin), now, sizeof(struct tm)); /* End Time */ t = fa[1].i; now = localtime(&t); memcpy(&(temp_alist->mappt.appt.end), now, sizeof(struct tm)); /* Description */ if (fa[2].str) { temp_alist->mappt.appt.description=fa[2].str; } else { temp_alist->mappt.appt.description=strdup(""); } /* Duration */ /* what is duration? (repeatForever?) */ /* Note */ if (fa[4].str) { temp_alist->mappt.appt.note=fa[4].str; } else { temp_alist->mappt.appt.note=strdup(""); } /* Untimed */ temp_alist->mappt.appt.event=fa[5].i; /* Private */ temp_alist->mappt.attrib = 0; if (fa[6].i) { temp_alist->mappt.attrib |= DAT_STATUS_PRIVATE; } /* Category */ temp_alist->mappt.unique_id = fa[7].i; if (temp_alist->mappt.unique_id > 15) { temp_alist->mappt.unique_id = 15; } if (temp_alist->mappt.unique_id < 0) { temp_alist->mappt.unique_id = 0; } /* Alarm Set */ temp_alist->mappt.appt.alarm=fa[8].i; /* Alarm Advance Units */ temp_alist->mappt.appt.advance=fa[9].i; /* Alarm Advance Type */ temp_alist->mappt.appt.advanceUnits=fa[10].i; /* Append onto the end of the list */ if (last_alist) { last_alist->next=temp_alist; last_alist=temp_alist; } else { last_alist=temp_alist; *alist=last_alist; } } return EXIT_SUCCESS; } int dat_get_addresses(FILE *in, AddressList **addrlist, struct CategoryAppInfo *ai) { int ret, i, j, k; struct field fa[28]; int schema_count, field_count; long rec_count; AddressList *temp_addrlist; AddressList *last_addrlist; int dat_order[19]={ 0,1,3,5,7,9,11,13,14,15,16,17,18,2,22,23,24,25,19 }; /* Should be 1, 1, 1, 5, 5, 5, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 5, 5, 5, 5, 6, 1, 5, 5, 5, 5, 1 */ char schema[60]={ DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_CSTRING,0, DAT_TYPE_INTEGER,0 }; #ifdef JPILOT_DEBUG char *rec_fields[]={ "Record ID", "Status field", "Position" }; char *field_names[]={ "Last Name", "First Name", "Title", "Company", "Phone1 Label", "Phone1", "Phone2 Label", "Phone2", "Phone3 Label", "Phone3", "Phone4 Label", "Phone4", "Phone5 Label", "Phone5", "Address", "City", "State", "Zip", "Country", "Note", "Private", "Category", "Custom1", "Custom2", "Custom3", "Custom4", "Display Phone" }; #endif jp_logf(JP_LOG_DEBUG, "dat_get_addresses\n"); if (!addrlist) return EXIT_SUCCESS; *addrlist=NULL; ret = dat_read_header(in, 30, schema, ai, &schema_count, &field_count, &rec_count); if (ret<0) return ret; /* Get records */ last_addrlist=*addrlist; #ifdef JPILOT_DEBUG printf("---------- Records ----------\n"); #endif for (i=0; inext=NULL; temp_addrlist->app_type=ADDRESS; #ifdef JPILOT_DEBUG printf("----- record %d -----\n", i+1); #endif /* Record ID */ /* Status Field */ /* Position */ for (j=0; j<3; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("rec field %d %s: ", j, rec_fields[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_addrlist); return EXIT_FAILURE; } } /* Get Fields */ for (j=0; j<27; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("field %d %s: ", j, field_names[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2+6]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2+6], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_addrlist); return EXIT_FAILURE; } } for (k=0; k<19; k++) { temp_addrlist->maddr.addr.entry[k]=fa[dat_order[k]].str; } temp_addrlist->maddr.addr.phoneLabel[0] = fa[4].i; temp_addrlist->maddr.addr.phoneLabel[1] = fa[6].i; temp_addrlist->maddr.addr.phoneLabel[2] = fa[8].i; temp_addrlist->maddr.addr.phoneLabel[3] = fa[10].i; temp_addrlist->maddr.addr.phoneLabel[4] = fa[12].i; /* Private */ temp_addrlist->maddr.attrib = 0; if (fa[20].i) { temp_addrlist->maddr.attrib |= DAT_STATUS_PRIVATE; } /* Category */ temp_addrlist->maddr.unique_id = fa[21].i; if (temp_addrlist->maddr.unique_id > 15) { temp_addrlist->maddr.unique_id = 15; } if (temp_addrlist->maddr.unique_id < 0) { temp_addrlist->maddr.unique_id = 0; } /* Show phone in list */ temp_addrlist->maddr.addr.showPhone = fa[26].i - 1; for (k=0; k<19; k++) { if (temp_addrlist->maddr.addr.entry[k]==NULL) { temp_addrlist->maddr.addr.entry[k]=strdup(""); } } /* Append onto the end of the list */ if (last_addrlist) { last_addrlist->next=temp_addrlist; last_addrlist=temp_addrlist; } else { last_addrlist=temp_addrlist; *addrlist=last_addrlist; } } return EXIT_SUCCESS; } int dat_get_todos(FILE *in, ToDoList **todolist, struct CategoryAppInfo *ai) { int ret, i, j; struct field fa[10]; int schema_count, field_count; long rec_count; time_t t; struct tm *now; ToDoList *temp_todolist; ToDoList *last_todolist; /* Should be 1, 1, 1, 5, 3, 6, 1, 6, 1, 5 */ char schema[20]={ DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_DATE,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0 }; #ifdef JPILOT_DEBUG char *rec_fields[]={ "Record ID", "Status field", "Position" }; char *field_names[]={ "Description", "Due Date", "Completed", "Priority", "Private", "Category", "Note" }; #endif jp_logf(JP_LOG_DEBUG, "dat_get_todos\n"); if (!todolist) return EXIT_SUCCESS; *todolist=NULL; ret = dat_read_header(in, 10, schema, ai, &schema_count, &field_count, &rec_count); if (ret<0) return ret; /* Get records */ last_todolist=*todolist; #ifdef JPILOT_DEBUG printf("---------- Records ----------\n"); #endif for (i=0; inext=NULL; temp_todolist->app_type=TODO; #ifdef JPILOT_DEBUG printf("----- record %d -----\n", i+1); #endif /* Record ID */ /* Status Field */ /* Position */ for (j=0; j<3; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("rec field %d %s: ", j, rec_fields[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_todolist); return EXIT_FAILURE; } } /* Get Fields */ for (j=0; j<7; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("field %d %s: ", j, field_names[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2+6]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2+6], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_todolist); return EXIT_FAILURE; } } /* Description */ if (fa[0].str) { temp_todolist->mtodo.todo.description=fa[0].str; } else { temp_todolist->mtodo.todo.description=strdup(""); } /* Due Date */ if (fa[1].date==0x749E77BF) { temp_todolist->mtodo.todo.indefinite=1; memset(&(temp_todolist->mtodo.todo.due), 0, sizeof(temp_todolist->mtodo.todo.due)); } else { t = fa[1].date; now = localtime(&t); memcpy(&(temp_todolist->mtodo.todo.due), now, sizeof(struct tm)); temp_todolist->mtodo.todo.indefinite=0; } /* Completed */ temp_todolist->mtodo.todo.complete = (fa[2].i==0) ? 0 : 1; /* Priority */ if (fa[3].i < 0) fa[3].i=0; if (fa[3].i > 5) fa[3].i=5; temp_todolist->mtodo.todo.priority = fa[3].i; /* Private */ temp_todolist->mtodo.attrib = 0; if (fa[4].i) { temp_todolist->mtodo.attrib |= DAT_STATUS_PRIVATE; } /* Category */ /* Normally the category would go into 4 bits of the attrib. * They jumbled the attrib bits, so to make things easy I'll put it * here. */ if (fa[5].i < 0) fa[5].i=0; if (fa[5].i > 15) fa[5].i=15; temp_todolist->mtodo.unique_id = fa[5].i; /* Note */ if (fa[6].str) { temp_todolist->mtodo.todo.note=fa[6].str; } else { temp_todolist->mtodo.todo.note=strdup(""); } /* Append onto the end of the list */ if (last_todolist) { last_todolist->next=temp_todolist; last_todolist=temp_todolist; } else { last_todolist=temp_todolist; *todolist=last_todolist; } } return EXIT_SUCCESS; } int dat_get_memos(FILE *in, MemoList **memolist, struct CategoryAppInfo *ai) { int ret, i, j; struct field fa[10]; int schema_count, field_count; long rec_count; MemoList *temp_memolist; MemoList *last_memolist; char schema[12]={ DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_INTEGER,0, DAT_TYPE_CSTRING,0, DAT_TYPE_BOOLEAN,0, DAT_TYPE_INTEGER,0 }; #ifdef JPILOT_DEBUG char *rec_fields[]={ "Record ID", "Status field", "Position" }; char *field_names[]={ "Memo", "Private", "Category" }; #endif jp_logf(JP_LOG_DEBUG, "dat_get_memos\n"); if (!memolist) return EXIT_SUCCESS; *memolist=NULL; ret = dat_read_header(in, 6, schema, ai, &schema_count, &field_count, &rec_count); if (ret<0) return ret; /* Get records */ last_memolist=*memolist; #ifdef JPILOT_DEBUG printf("---------- Records ----------\n"); #endif for (i=0; inext=NULL; temp_memolist->app_type=MEMO; #ifdef JPILOT_DEBUG printf("----- record %d -----\n", i+1); #endif /* Record ID */ /* Status Field */ /* Position */ for (j=0; j<3; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("rec field %d %s: ", j, rec_fields[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_memolist); return EXIT_FAILURE; } } /* Get Fields */ for (j=0; j<3; j++) { get_field(in, &(fa[j])); #ifdef JPILOT_DEBUG printf("field %d %s: ", j, field_names[j]); print_field(&(fa[j])); #endif if (fa[j].type!=schema[j*2+6]) { jp_logf(JP_LOG_WARN, _("%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n"), __FILE__, __LINE__, i+1, j+3, schema[j*2+6], fa[j].type); jp_logf(JP_LOG_WARN, _("read of file terminated\n")); free(temp_memolist); return EXIT_FAILURE; } } /* Memo */ temp_memolist->mmemo.memo.text=fa[0].str; /* Private */ temp_memolist->mmemo.attrib = 0; if (fa[1].i) { temp_memolist->mmemo.attrib |= DAT_STATUS_PRIVATE; } /* Category */ /* Normally the category would go into 4 bits of the attrib. * They jumbled the attrib bits, so to make things easy I'll put it * here. */ if (fa[2].i < 0) fa[2].i=0; if (fa[2].i > 15) fa[2].i=15; temp_memolist->mmemo.unique_id = fa[2].i; /* Append onto the end of the list */ if (last_memolist) { last_memolist->next=temp_memolist; last_memolist=temp_memolist; } else { last_memolist=temp_memolist; *memolist=last_memolist; } } return EXIT_SUCCESS; } jpilot-1.8.2/dialer.c0000664000175000017500000003156112340261240011352 00000000000000/******************************************************************************* * dialer.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" /********************************* Constants **********************************/ #define CHOOSE_PHONE 1 #define CHOOSE_EXT 2 /****************************** Prototypes ************************************/ struct dialog_data { GtkWidget *entry_pre1; GtkWidget *entry_pre2; GtkWidget *entry_pre3; GtkWidget *check_pre1; GtkWidget *check_pre2; GtkWidget *check_pre3; GtkWidget *entry_phone; GtkWidget *entry_ext; GtkWidget *entry_command; GtkWidget *label_prefix; }; /****************************** Main Code *************************************/ static void cb_dialog_button(GtkWidget *widget, gpointer data) { GtkWidget *w; w = gtk_widget_get_toplevel(widget); gtk_object_get_data(GTK_OBJECT(w), "dialog_data"); gtk_widget_destroy(GTK_WIDGET(w)); } static gboolean cb_destroy_dialog(GtkWidget *widget) { struct dialog_data *Pdata; const gchar *txt; Pdata = gtk_object_get_data(GTK_OBJECT(widget), "dialog_data"); if (!Pdata) { return TRUE; } txt = gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre1)); set_pref(PREF_PHONE_PREFIX1, 0, txt, FALSE); txt = gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre2)); set_pref(PREF_PHONE_PREFIX2, 0, txt, FALSE); txt = gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre3)); set_pref(PREF_PHONE_PREFIX3, 0, txt, FALSE); txt = gtk_entry_get_text(GTK_ENTRY(Pdata->entry_command)); set_pref(PREF_DIAL_COMMAND, 0, txt, FALSE); set_pref(PREF_CHECK_PREFIX1, GTK_TOGGLE_BUTTON(Pdata->check_pre1)->active, NULL, FALSE); set_pref(PREF_CHECK_PREFIX2, GTK_TOGGLE_BUTTON(Pdata->check_pre2)->active, NULL, FALSE); set_pref(PREF_CHECK_PREFIX3, GTK_TOGGLE_BUTTON(Pdata->check_pre3)->active, NULL, TRUE); gtk_main_quit(); return TRUE; } static void set_prefix_label(struct dialog_data *Pdata) { char str[70]; g_snprintf(str, sizeof(str), "%s%s%s", GTK_TOGGLE_BUTTON(Pdata->check_pre1)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre1)) : "", GTK_TOGGLE_BUTTON(Pdata->check_pre2)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre2)) : "", GTK_TOGGLE_BUTTON(Pdata->check_pre3)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre3)) : ""); gtk_label_set_text(GTK_LABEL(Pdata->label_prefix), str); } static void cb_prefix_change(GtkWidget *widget, gpointer data) { set_prefix_label(data); } static void dialer(gpointer data, int phone_or_ext) { struct dialog_data *Pdata; char str[70]; char null_str[]=""; const char *Pext; char command[1024]; const char *pref_command; char c1, c2; int i, len; Pdata=data; if (phone_or_ext==CHOOSE_PHONE) { g_snprintf(str, sizeof(str), "%s%s%s%s", GTK_TOGGLE_BUTTON(Pdata->check_pre1)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre1)) : "", GTK_TOGGLE_BUTTON(Pdata->check_pre2)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre2)) : "", GTK_TOGGLE_BUTTON(Pdata->check_pre3)->active ? gtk_entry_get_text(GTK_ENTRY(Pdata->entry_pre3)) : "", gtk_entry_get_text(GTK_ENTRY(Pdata->entry_phone))); } if (phone_or_ext==CHOOSE_EXT) { Pext=gtk_entry_get_text(GTK_ENTRY(Pdata->entry_ext)); if (!Pext) Pext=null_str; g_strlcpy(str, Pext, sizeof(str)); } pref_command = gtk_entry_get_text(GTK_ENTRY(Pdata->entry_command)); /* Make a system call command string */ memset(command, 0, sizeof(command)); for (i=0; ientry_pre1=entry; Pdata->check_pre1=checkbox1; /* Prefix 2 */ hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); get_pref(PREF_PHONE_PREFIX2, NULL, &prefix); get_pref(PREF_CHECK_PREFIX2, &use_prefix, NULL); checkbox2 = gtk_check_button_new(); gtk_box_pack_start(GTK_BOX(hbox1), checkbox2, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox2), use_prefix); label = gtk_label_new(_("Prefix 2")); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); entry = gtk_entry_new_with_max_length(32); gtk_entry_set_text(GTK_ENTRY(entry), prefix); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); Pdata->entry_pre2=entry; Pdata->check_pre2=checkbox2; /* Prefix 3 */ hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); get_pref(PREF_PHONE_PREFIX3, NULL, &prefix); get_pref(PREF_CHECK_PREFIX3, &use_prefix, NULL); checkbox3 = gtk_check_button_new(); gtk_box_pack_start(GTK_BOX(hbox1), checkbox3, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox3), use_prefix); label = gtk_label_new(_("Prefix 3")); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); entry = gtk_entry_new_with_max_length(32); gtk_entry_set_text(GTK_ENTRY(entry), prefix); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); Pdata->entry_pre3=entry; Pdata->check_pre3=checkbox3; /* Phone number entry */ hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); label = gtk_label_new(_("Phone number:")); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); /* Prefix label */ label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); Pdata->label_prefix=label; set_prefix_label(Pdata); entry = gtk_entry_new_with_max_length(32); gtk_entry_set_text(GTK_ENTRY(entry), string); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_dial_ext), Pdata); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); Pdata->entry_phone=entry; /* Dial Phone Button */ button = gtk_button_new_with_label(_("Dial")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dial_phone), Pdata); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 1); gtk_widget_grab_focus(GTK_WIDGET(button)); /* Extension */ hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); label = gtk_label_new(_("Extension")); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); entry = gtk_entry_new_with_max_length(32); gtk_entry_set_text(GTK_ENTRY(entry), ext); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_dial_ext), Pdata); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); Pdata->entry_ext=entry; /* Dial Phone Button */ button = gtk_button_new_with_label(_("Dial")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dial_ext), Pdata); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 1); /* Command Entry */ hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); label = gtk_label_new(_("Dial Command")); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); entry = gtk_entry_new_with_max_length(100); gtk_entry_set_text(GTK_ENTRY(entry), ext); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); get_pref(PREF_DIAL_COMMAND, NULL, &dial_command); if (dial_command) { gtk_entry_set_text(GTK_ENTRY(entry), dial_command); } Pdata->entry_command=entry; /* Button Box */ hbox1 = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 7); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox1), GTK_BUTTONBOX_END); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); /* Buttons */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 1); /* We do this down here because the Pdata structure wasn't complete earlier */ gtk_signal_connect(GTK_OBJECT(checkbox1), "clicked", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_signal_connect(GTK_OBJECT(checkbox2), "clicked", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_signal_connect(GTK_OBJECT(checkbox3), "clicked", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_signal_connect(GTK_OBJECT(Pdata->entry_pre1), "changed", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_signal_connect(GTK_OBJECT(Pdata->entry_pre2), "changed", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_signal_connect(GTK_OBJECT(Pdata->entry_pre3), "changed", GTK_SIGNAL_FUNC(cb_prefix_change), Pdata); gtk_widget_show_all(dialog); gtk_main(); free(Pdata); return EXIT_SUCCESS; } jpilot-1.8.2/export.h0000664000175000017500000000371312340261240011436 00000000000000/******************************************************************************* * export.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __EXPORT_H__ #define __EXPORT_H__ #include #include int export_gui(GtkWidget *main_window, int w, int h, int x, int y, int columns, struct sorted_cats *sort_l, int pref_export, char *type_text[], int type_int[], void (*cb_export_menu)(GtkWidget *clist, int category), void (*cb_export_done)(GtkWidget *widget, const char *filename), void (*cb_export_ok)(GtkWidget *export_window, GtkWidget *clist, int type, const char *filename) ); /* * Actually, this should be in import.h, but I didn't want to create a whole * header file just for one function, so its here for now. * The code is in import_gui.c */ int read_csv_field(FILE *in, char *text, int size); int export_browse(GtkWidget *main_window, int pref_export); #endif jpilot-1.8.2/prefs_gui.c0000664000175000017500000011302012340261240012064 00000000000000/******************************************************************************* * prefs_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include "prefs_gui.h" #include "prefs.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "plugins.h" /******************************* Global vars **********************************/ static GtkWidget *window; static GtkWidget *main_window; static GtkWidget *port_entry; static GtkWidget *backups_entry; static GtkWidget *ext_editor_entry; static GtkWidget *alarm_command_entry; static GtkWidget *mail_command_entry; static GtkWidget *todo_days_due_entry; extern int glob_app; extern GtkTooltips *glob_tooltips; #ifdef ENABLE_PLUGINS extern unsigned char skip_plugins; #endif /* Sync Port Menu */ static GtkWidget *port_menu; static GtkWidget *port_menu_item[10]; static const char *port_choices[]={ "other", "usb:", "/dev/ttyUSB0", "/dev/ttyUSB1", "/dev/ttyUSB2", "/dev/ttyUSB3", "/dev/ttyS0", "/dev/ttyS1", "/dev/ttyS2", "/dev/ttyS3", NULL }; /* Serial Rate Menu */ static GtkWidget *rate_menu; /****************************** Main Code *************************************/ #ifdef COLORS /* This doesn't work quite right. There is supposedly no way to do it in GTK. */ static void r(GtkWidget *w, gpointer data) { GtkStyle *style; style = gtk_rc_get_style(GTK_WIDGET(w)); if (style) gtk_rc_style_unref(style); if (GTK_IS_CONTAINER(w)) { gtk_container_foreach(GTK_CONTAINER(w), r, w); } } static void set_colors() { GtkStyle* style; int i; r(main_window, NULL); r(window, NULL); gtk_rc_reparse_all(); read_gtkrc_file(); gtk_rc_reparse_all(); gtk_widget_reset_rc_styles(window); gtk_widget_reset_rc_styles(main_window); gtk_rc_reparse_all(); gtk_widget_queue_draw(window); gtk_widget_queue_draw(main_window); } #endif /* #ifdef COLORS */ /* Sync Port menu code */ static void cb_serial_port_menu(GtkWidget *widget, gpointer data) { if (!widget) return; if (!(GTK_CHECK_MENU_ITEM(widget))->active) { return; } const char *port_str = port_choices[GPOINTER_TO_INT(data)]; gtk_entry_set_text(GTK_ENTRY(port_entry), port_str); if (! strcmp(port_str, "usb:")) { gtk_widget_set_sensitive(rate_menu, FALSE); } else { gtk_widget_set_sensitive(rate_menu, TRUE); } return; } static int make_serial_port_menu(GtkWidget **port_menu) { GtkWidget *menu; GSList *group; int i, selected; const char *entry_text; *port_menu = gtk_option_menu_new(); menu = gtk_menu_new(); group = NULL; selected=0; entry_text = gtk_entry_get_text(GTK_ENTRY(port_entry)); for (i=0; port_choices[i]; i++) { port_menu_item[i] = gtk_radio_menu_item_new_with_label(group, port_choices[i]); group = gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(port_menu_item[i])); gtk_menu_append(GTK_MENU(menu), port_menu_item[i]); if (!strcmp(entry_text, port_choices[i])) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(port_menu_item[i]), TRUE); selected=i; } /* We don't want a callback if "other" is selected */ if (i) { gtk_signal_connect(GTK_OBJECT(port_menu_item[i]), "activate", GTK_SIGNAL_FUNC(cb_serial_port_menu), GINT_TO_POINTER(i)); } gtk_widget_show(port_menu_item[i]); } gtk_option_menu_set_menu(GTK_OPTION_MENU(*port_menu), menu); gtk_option_menu_set_history(GTK_OPTION_MENU(*port_menu), selected); return EXIT_SUCCESS; } /* End Sync Port Menu code */ static void cb_pref_menu(GtkWidget *widget, gpointer data) { int pref; int value; if (!widget) return; if (!(GTK_CHECK_MENU_ITEM(widget))->active) { return; } pref = GPOINTER_TO_INT(data); value = pref & 0xFF; pref = pref >> 8; set_pref_possibility(pref, value, TRUE); jp_logf(JP_LOG_DEBUG, "pref %d, value %d\n", pref, value); #ifdef COLORS if (pref==PREF_RCFILE) { set_colors(); } #endif return; } int make_pref_menu(GtkWidget **pref_menu, int pref_num) { GtkWidget *menu_item; GtkWidget *menu; GSList *group; int i, r; long ivalue; const char *svalue; char format_text[MAX_PREF_LEN]; char human_text[MAX_PREF_LEN]; time_t ltime; struct tm *now; time(<ime); now = localtime(<ime); *pref_menu = gtk_option_menu_new(); menu = gtk_menu_new(); group = NULL; get_pref(pref_num, &ivalue, &svalue); for (i=0; i 99) { num_backups = 99; } set_pref(PREF_NUM_BACKUPS, num_backups, NULL, FALSE); } static void cb_checkbox_todo_days_till_due(GtkWidget *widget, gpointer data) { int num_days; const char *entry_text; entry_text = gtk_entry_get_text(GTK_ENTRY(todo_days_due_entry)); sscanf(entry_text, "%d", &num_days); set_pref(PREF_TODO_DAYS_TILL_DUE, num_days, NULL, TRUE); } static void cb_checkbox_show_tooltips(GtkWidget *widget, gpointer data) { set_pref(PREF_SHOW_TOOLTIPS, GTK_TOGGLE_BUTTON(widget)->active, NULL, TRUE); } static void cb_text_entry(GtkWidget *widget, gpointer data) { const char *entry_text; int i, found; entry_text = gtk_entry_get_text(GTK_ENTRY(widget)); set_pref(GPOINTER_TO_INT(data), 0, entry_text, FALSE); if (GPOINTER_TO_INT(data) == PREF_PORT) { if (GTK_IS_WIDGET(port_menu_item[0])) { found=0; for (i=0; port_choices[i]; i++) { if (!strcmp(entry_text, port_choices[i])) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(port_menu_item[i]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(port_menu), i); found=1; } } if (!found) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(port_menu_item[0]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(port_menu), 0); } } } } static void cb_checkbox_set_pref(GtkWidget *widget, gpointer data) { unsigned long pref, value; pref = GPOINTER_TO_INT(data); value = GTK_TOGGLE_BUTTON(widget)->active; set_pref(pref, value, NULL, TRUE); } /* * upper 16 bits of data is pref to set * lower 16 bits of data is value to set it to */ static void cb_radio_set_pref(GtkWidget *widget, gpointer data) { unsigned long pref, value; pref=GPOINTER_TO_INT(data); value=pref & 0xFFFF; pref >>= 16; set_pref(pref, value, NULL, TRUE); } #ifdef ENABLE_PLUGINS static void cb_sync_plugin(GtkWidget *widget, gpointer data) { GList *plugin_list, *temp_list; struct plugin_s *Pplugin; int number; number = GPOINTER_TO_INT(data); plugin_list=NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { Pplugin = (struct plugin_s *)temp_list->data; if (Pplugin) { if (number == Pplugin->number) { if (GTK_TOGGLE_BUTTON(widget)->active) { Pplugin->sync_on = 1; } else { Pplugin->sync_on = 0; } } } } write_plugin_sync_file(); } #endif static gboolean cb_destroy(GtkWidget *widget) { jp_logf(JP_LOG_DEBUG, "Pref GUI Cleanup\n"); pref_write_rc_file(); window = NULL; /* Preference changes can affect visual elements of applications. * Redraw the screen to incorporate any changes made. */ cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); return FALSE; } static void cb_quit(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_quit\n"); if (GTK_IS_WIDGET(data)) { gtk_widget_destroy(data); } } /* This function adds a simple option checkbutton for the supplied text + * option. */ static void add_checkbutton(const char *text, int which, GtkWidget *vbox, void cb(GtkWidget *widget, gpointer data)) { /* Create button */ GtkWidget *checkbutton = gtk_check_button_new_with_label(text); gtk_box_pack_start(GTK_BOX(vbox), checkbutton, FALSE, FALSE, 0); gtk_widget_show(checkbutton); /* Set the button state based on option value */ if (get_pref_int_default(which, 0)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), TRUE); /* Set button callback */ gtk_signal_connect(GTK_OBJECT(checkbutton), "clicked", GTK_SIGNAL_FUNC(cb), GINT_TO_POINTER(which)); } void cb_prefs_gui(GtkWidget *widget, gpointer data) { GtkWidget *checkbutton; GtkWidget *pref_menu; GtkWidget *label; GtkWidget *button; GtkWidget *table; GtkWidget *vbox; GtkWidget *vbox_locale; GtkWidget *vbox_settings; GtkWidget *vbox_datebook; GtkWidget *vbox_address; GtkWidget *vbox_todo; GtkWidget *vbox_memo; GtkWidget *vbox_alarms; GtkWidget *vbox_conduits; GtkWidget *hbox_temp; GtkWidget *hseparator; GtkWidget *notebook; /* FIXME: Uncomment when support for Task has been added */ #if 0 GtkWidget *radio_button_todo_version[2]; #endif GtkWidget *radio_button_datebook_version[2]; GtkWidget *radio_button_address_version[2]; GtkWidget *radio_button_memo_version[3]; long ivalue; const char *cstr; char temp_str[10]; char temp[256]; GSList *group; #ifdef ENABLE_PLUGINS GList *plugin_list, *temp_list; struct plugin_s *Pplugin; #endif jp_logf(JP_LOG_DEBUG, "cb_prefs_gui\n"); if (window) { jp_logf(JP_LOG_DEBUG, "pref_window is already up\n"); /* Shift focus to existing window if called again and window is still alive. */ gtk_window_present(GTK_WINDOW(window)); return; } main_window = data; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(window), 10); g_snprintf(temp, sizeof(temp), "%s %s", PN, _("Preferences")); gtk_window_set_title(GTK_WINDOW(window), temp); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(cb_destroy), window); vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); /* Boxes for each preference tax */ vbox_locale = gtk_vbox_new(FALSE, 0); vbox_settings = gtk_vbox_new(FALSE, 0); vbox_datebook = gtk_vbox_new(FALSE, 0); vbox_address = gtk_vbox_new(FALSE, 0); vbox_todo = gtk_vbox_new(FALSE, 0); vbox_memo = gtk_vbox_new(FALSE, 0); vbox_alarms = gtk_vbox_new(FALSE, 0); vbox_conduits = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox_locale), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_settings), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_datebook), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_address), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_todo), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_memo), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_alarms), 5); gtk_container_set_border_width(GTK_CONTAINER(vbox_conduits), 5); /* Notebook for preference tabs */ notebook = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP); label = gtk_label_new(_("Locale")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_locale, label); label = gtk_label_new(_("Settings")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_settings, label); label = gtk_label_new(_("Datebook")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_datebook, label); label = gtk_label_new(C_("prefgui","Address")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_address, label); label = gtk_label_new(_("ToDo")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_todo, label); label = gtk_label_new(_("Memo")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_memo, label); label = gtk_label_new(_("Alarms")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_alarms, label); label = gtk_label_new(_("Conduits")); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_conduits, label); gtk_box_pack_start(GTK_BOX(vbox), notebook, FALSE, FALSE, 0); /************************************************************/ /* Locale preference tab */ table = gtk_table_new(5, 2, FALSE); gtk_table_set_row_spacings(GTK_TABLE(table),0); gtk_table_set_col_spacings(GTK_TABLE(table),5); gtk_box_pack_start(GTK_BOX(vbox_locale), table, FALSE, FALSE, 0); /* Character Set */ label = gtk_label_new(_("Character Set")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 0, 1); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&pref_menu, PREF_CHAR_SET); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(pref_menu), 1, 2, 0, 1); get_pref(PREF_CHAR_SET, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /* Shortdate */ label = gtk_label_new(_("Short date format")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 1, 2); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&pref_menu, PREF_SHORTDATE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(pref_menu), 1, 2, 1, 2); get_pref(PREF_SHORTDATE, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /* Longdate */ label = gtk_label_new(_("Long date format")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 2, 3); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&pref_menu, PREF_LONGDATE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(pref_menu), 1, 2, 2, 3); get_pref(PREF_LONGDATE, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /* Time */ label = gtk_label_new(_("Time format")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 3, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&pref_menu, PREF_TIME); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(pref_menu), 1, 2, 3, 4); get_pref(PREF_TIME, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /**********************************************************************/ /* Settings preference tab */ table = gtk_table_new(4, 3, FALSE); gtk_table_set_row_spacings(GTK_TABLE(table),0); gtk_table_set_col_spacings(GTK_TABLE(table),5); gtk_box_pack_start(GTK_BOX(vbox_settings), table, FALSE, FALSE, 0); /* GTK colors file */ label = gtk_label_new(_("GTK color theme file")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 2, 0, 1); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&pref_menu, PREF_RCFILE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(pref_menu), 2, 3, 0, 1); get_pref(PREF_RCFILE, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /* Port */ label = gtk_label_new(_("Sync Port")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 1, 2); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); port_entry = gtk_entry_new_with_max_length(MAX_PREF_LEN - 2); entry_set_multiline_truncate(GTK_ENTRY(port_entry), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(port_entry), 2, 3, 1, 2); get_pref(PREF_PORT, NULL, &cstr); if (cstr) { gtk_entry_set_text(GTK_ENTRY(port_entry), cstr); } gtk_signal_connect(GTK_OBJECT(port_entry), "changed", GTK_SIGNAL_FUNC(cb_text_entry), GINT_TO_POINTER(PREF_PORT)); /* Sync Port Menu */ /* Note that port_entry must exist before we call this function */ make_serial_port_menu(&port_menu); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(port_menu), 1, 2, 1, 2); /* Serial Rate */ label = gtk_label_new(_("Serial Rate")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 2, 2, 3); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); make_pref_menu(&rate_menu, PREF_RATE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(rate_menu), 2, 3, 2, 3); get_pref(PREF_RATE, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(rate_menu), ivalue); /* Disable Serial Rate menu if sync port is USB */ if (! strcmp(cstr, "usb:")) { gtk_widget_set_sensitive(rate_menu, FALSE); } else { gtk_widget_set_sensitive(rate_menu, TRUE); } /* Number of backups */ label = gtk_label_new(_("Number of backups to be archived")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 2, 3, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); backups_entry = gtk_entry_new_with_max_length(2); entry_set_multiline_truncate(GTK_ENTRY(backups_entry), TRUE); gtk_widget_set_usize(backups_entry, 30, 0); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(backups_entry), 2, 3, 3, 4); get_pref(PREF_NUM_BACKUPS, &ivalue, NULL); sprintf(temp_str, "%ld", ivalue); gtk_entry_set_text(GTK_ENTRY(backups_entry), temp_str); gtk_signal_connect(GTK_OBJECT(backups_entry), "changed", GTK_SIGNAL_FUNC(cb_backups_entry), NULL); /* Show deleted files check box */ add_checkbutton(_("Show deleted records (default NO)"), PREF_SHOW_DELETED, vbox_settings, cb_checkbox_set_pref); /* Show modified files check box */ add_checkbutton(_("Show modified deleted records (default NO)"), PREF_SHOW_MODIFIED, vbox_settings, cb_checkbox_set_pref); /* Confirm file installation */ add_checkbutton( _("Ask confirmation for file installation (J-Pilot -> PDA) (default YES)"), PREF_CONFIRM_FILE_INSTALL, vbox_settings, cb_checkbox_set_pref); /* Show tooltips check box */ add_checkbutton(_("Show popup tooltips (default YES) (requires restart)"), PREF_SHOW_TOOLTIPS, vbox_settings, cb_checkbox_show_tooltips); /**********************************************************************/ /* Datebook preference tab */ /* Radio box to choose which database to use: Datebook/Calendar */ group = NULL; radio_button_datebook_version[0] = gtk_radio_button_new_with_label(group, _("Use Datebook database (Palm OS < 5.2.1)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_datebook_version[0])); radio_button_datebook_version[1] = gtk_radio_button_new_with_label(group, _("Use Calendar database (Palm OS > 5.2)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_datebook_version[1])); gtk_box_pack_start(GTK_BOX(vbox_datebook), radio_button_datebook_version[0], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_datebook), radio_button_datebook_version[1], FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radio_button_datebook_version[0]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_DATEBOOK_VERSION<<16)|0)); gtk_signal_connect(GTK_OBJECT(radio_button_datebook_version[1]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_DATEBOOK_VERSION<<16)|1)); get_pref(PREF_DATEBOOK_VERSION, &ivalue, NULL); if (ivalue) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_datebook_version[1]), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_datebook_version[0]), TRUE); } /* Separate database selection from less important options */ hseparator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox_datebook), hseparator, FALSE, FALSE, 3); /* Show highlight days check box */ add_checkbutton(_("Highlight calendar days with appointments"), PREF_DATEBOOK_HIGHLIGHT_DAYS, vbox_datebook, cb_checkbox_set_pref); /* Highlight today on month and week view */ add_checkbutton(_("Annotate today in day, week, and month views"), PREF_DATEBOOK_HI_TODAY, vbox_datebook, cb_checkbox_set_pref); /* Show number of years on anniversaries in month and week view */ add_checkbutton(_("Append years on anniversaries in day, week, and month views"), PREF_DATEBOOK_ANNI_YEARS, vbox_datebook, cb_checkbox_set_pref); #ifdef ENABLE_DATEBK /* Show use DateBk check box */ add_checkbutton(_("Use DateBk note tags"), PREF_USE_DB3, vbox_datebook, cb_checkbox_set_pref); #else checkbutton = gtk_check_button_new_with_label(_("DateBk support disabled in this build")); gtk_widget_set_sensitive(checkbutton, FALSE); gtk_box_pack_start(GTK_BOX(vbox_datebook), checkbutton, FALSE, FALSE, 0); gtk_widget_show(checkbutton); #endif /**********************************************************************/ /* Address preference tab */ /* Radio box to choose which database to use: Address/Contacts */ group = NULL; radio_button_address_version[0] = gtk_radio_button_new_with_label(group, _("Use Address database (Palm OS < 5.2.1)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_address_version[0])); radio_button_address_version[1] = gtk_radio_button_new_with_label(group, _("Use Contacts database (Palm OS > 5.2)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_address_version[1])); gtk_box_pack_start(GTK_BOX(vbox_address), radio_button_address_version[0], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_address), radio_button_address_version[1], FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radio_button_address_version[0]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_ADDRESS_VERSION<<16)|0)); gtk_signal_connect(GTK_OBJECT(radio_button_address_version[1]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_ADDRESS_VERSION<<16)|1)); get_pref(PREF_ADDRESS_VERSION, &ivalue, NULL); if (ivalue) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_address_version[1]), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_address_version[0]), TRUE); } /* Separate database selection from less important options */ hseparator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox_address), hseparator, FALSE, FALSE, 3); /* Command to use for e-mailing from address book */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_address), hbox_temp, FALSE, FALSE, 0); label = gtk_label_new(_("Mail Command")); gtk_box_pack_start(GTK_BOX(hbox_temp), label, FALSE, FALSE, 0); mail_command_entry = gtk_entry_new_with_max_length(MAX_PREF_LEN - 2); get_pref(PREF_MAIL_COMMAND, NULL, &cstr); if (cstr) { gtk_entry_set_text(GTK_ENTRY(mail_command_entry), cstr); } gtk_signal_connect(GTK_OBJECT(mail_command_entry), "changed", GTK_SIGNAL_FUNC(cb_text_entry), GINT_TO_POINTER(PREF_MAIL_COMMAND)); gtk_box_pack_start(GTK_BOX(hbox_temp), mail_command_entry, TRUE, TRUE, 1); label = gtk_label_new(_("%s is replaced by the e-mail address")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_address), label, FALSE, FALSE, 0); /**********************************************************************/ /* ToDo preference tab */ /* FIXME: undef when support for Task has been coded */ #if 0 /* Radio box to choose which database to use: Todo/Task */ group = NULL; radio_button_task_version[0] = gtk_radio_button_new_with_label(group, _("Use ToDo database (Palm OS < 5.2.1)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_todo_version[0])); radio_button_todo_version[1] = gtk_radio_button_new_with_label(group, _("Use Task database (Palm OS > 5.2)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_todo_version[1])); gtk_box_pack_start(GTK_BOX(vbox_todo), radio_button_todo_version[0], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_todo), radio_button_todo_version[1], FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radio_button_todo_version[0]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_TODO_VERSION<<16)|0)); gtk_signal_connect(GTK_OBJECT(radio_button_todo_version[1]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_TODO_VERSION<<16)|1)); get_pref(PREF_TODO_VERSION, &ivalue, NULL); if (ivalue) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_todo_version[1]), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_todo_version[0]), TRUE); } /* Separate database selection from less important options */ hseparator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox_todo), hseparator, FALSE, FALSE, 3); #endif /* hide completed check box */ add_checkbutton(_("Hide Completed ToDos"), PREF_TODO_HIDE_COMPLETED, vbox_todo, cb_checkbox_set_pref); /* hide todos not yet due check box */ add_checkbutton(_("Hide ToDos not yet due"), PREF_TODO_HIDE_NOT_DUE, vbox_todo, cb_checkbox_set_pref); /* record todo completion date check box */ add_checkbutton(_("Record Completion Date"), PREF_TODO_COMPLETION_DATE, vbox_todo, cb_checkbox_set_pref); #ifdef ENABLE_MANANA /* Use Manana check box */ add_checkbutton(_("Use Manana database"), PREF_MANANA_MODE, vbox_todo, cb_checkbox_set_pref); #endif /* Default Number of Days Due for ToDos */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_todo), hbox_temp, FALSE, FALSE, 0); add_checkbutton(_("Use default number of days due"), PREF_TODO_DAYS_DUE, hbox_temp, cb_checkbox_set_pref); todo_days_due_entry = gtk_entry_new_with_max_length(MAX_PREF_LEN - 2); entry_set_multiline_truncate(GTK_ENTRY(todo_days_due_entry), TRUE); get_pref(PREF_TODO_DAYS_TILL_DUE, &ivalue, NULL); temp[0]='\0'; g_snprintf(temp, sizeof(temp), "%ld", ivalue); gtk_entry_set_text(GTK_ENTRY(todo_days_due_entry), temp); gtk_box_pack_start(GTK_BOX(hbox_temp), todo_days_due_entry, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(todo_days_due_entry), "changed", GTK_SIGNAL_FUNC(cb_checkbox_todo_days_till_due), NULL); gtk_widget_show_all(hbox_temp); /**********************************************************************/ /* Memo preference tab */ /* Radio box to choose which database to use: Memo/Memos/Memo32 */ group = NULL; radio_button_memo_version[0] = gtk_radio_button_new_with_label(group, _("Use Memo database (Palm OS < 5.2.1)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_memo_version[0])); radio_button_memo_version[1] = gtk_radio_button_new_with_label(group, _("Use Memos database (Palm OS > 5.2)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_memo_version[1])); radio_button_memo_version[2] = gtk_radio_button_new_with_label(group, _("Use Memo32 database (pedit32)")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_memo_version[2])); gtk_box_pack_start(GTK_BOX(vbox_memo), radio_button_memo_version[0], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_memo), radio_button_memo_version[1], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_memo), radio_button_memo_version[2], FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radio_button_memo_version[0]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_MEMO_VERSION<<16)|0)); gtk_signal_connect(GTK_OBJECT(radio_button_memo_version[1]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_MEMO_VERSION<<16)|1)); gtk_signal_connect(GTK_OBJECT(radio_button_memo_version[2]), "pressed", GTK_SIGNAL_FUNC(cb_radio_set_pref), GINT_TO_POINTER((PREF_MEMO_VERSION<<16)|2)); get_pref(PREF_MEMO_VERSION, &ivalue, NULL); switch (ivalue) { case 0: default: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_memo_version[0]), TRUE); break; case 1: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_memo_version[1]), TRUE); break; case 2: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_memo_version[2]), TRUE); break; } hseparator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox_memo), hseparator, FALSE, FALSE, 3); /* External Editor Command to execute */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_memo), hbox_temp, FALSE, FALSE, 0); label = gtk_label_new(_("External Editor")); gtk_box_pack_start(GTK_BOX(hbox_temp), label, FALSE, FALSE, 0); ext_editor_entry = gtk_entry_new_with_max_length(MAX_PREF_LEN - 2); get_pref(PREF_EXTERNAL_EDITOR, NULL, &cstr); if (cstr) { gtk_entry_set_text(GTK_ENTRY(ext_editor_entry), cstr); } gtk_signal_connect(GTK_OBJECT(ext_editor_entry), "changed", GTK_SIGNAL_FUNC(cb_text_entry), GINT_TO_POINTER(PREF_EXTERNAL_EDITOR)); gtk_box_pack_start(GTK_BOX(hbox_temp), ext_editor_entry, TRUE, TRUE, 1); label = gtk_label_new(_("Use Ctrl-E inside a memo to launch external editor for memo text")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_memo), label, FALSE, FALSE, 0); /**********************************************************************/ /* Alarms preference tab */ /* Open alarm windows check box */ add_checkbutton(_("Open alarm windows for appointment reminders"), PREF_OPEN_ALARM_WINDOWS, vbox_alarms, cb_checkbox_set_pref); /* Execute alarm command check box */ add_checkbutton(_("Execute this command"), PREF_DO_ALARM_COMMAND, vbox_alarms, cb_checkbox_set_pref); /* Shell warning label */ label = gtk_label_new(_("WARNING: executing arbitrary shell commands can be dangerous!!!")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); /* Alarm Command to execute */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_alarms), hbox_temp, FALSE, FALSE, 0); label = gtk_label_new(_("Alarm Command")); gtk_box_pack_start(GTK_BOX(hbox_temp), label, FALSE, FALSE, 10); alarm_command_entry = gtk_entry_new_with_max_length(MAX_PREF_LEN - 2); get_pref(PREF_ALARM_COMMAND, NULL, &cstr); if (cstr) { gtk_entry_set_text(GTK_ENTRY(alarm_command_entry), cstr); } gtk_signal_connect(GTK_OBJECT(alarm_command_entry), "changed", GTK_SIGNAL_FUNC(cb_text_entry), GINT_TO_POINTER(PREF_ALARM_COMMAND)); gtk_box_pack_start(GTK_BOX(hbox_temp), alarm_command_entry, FALSE, FALSE, 0); label = gtk_label_new(_("%t is replaced with the alarm time")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); label = gtk_label_new(_("%d is replaced with the alarm date")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); #ifdef ENABLE_ALARM_SHELL_DANGER label = gtk_label_new(_("%D is replaced with the alarm description")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); label = gtk_label_new(_("%N is replaced with the alarm note")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); #else label = gtk_label_new(_("%D (description substitution) is disabled in this build")); gtk_widget_set_sensitive(label, FALSE); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); label = gtk_label_new(_("%N (note substitution) is disabled in this build")); gtk_widget_set_sensitive(label, FALSE); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox_alarms), label, FALSE, FALSE, 0); #endif /**********************************************************************/ /* Conduits preference tab */ /* Sync datebook check box */ add_checkbutton(_("Sync datebook"), PREF_SYNC_DATEBOOK, vbox_conduits, cb_checkbox_set_pref); /* Sync address check box */ add_checkbutton(_("Sync address"), PREF_SYNC_ADDRESS, vbox_conduits, cb_checkbox_set_pref); /* Sync todo check box */ add_checkbutton(_("Sync todo"), PREF_SYNC_TODO, vbox_conduits, cb_checkbox_set_pref); /* Sync memo check box */ add_checkbutton(_("Sync memo"), PREF_SYNC_MEMO, vbox_conduits, cb_checkbox_set_pref); #ifdef ENABLE_MANANA /* Show sync Manana check box */ add_checkbutton(_("Sync Manana"), PREF_SYNC_MANANA, vbox_conduits, cb_checkbox_set_pref); #endif get_pref(PREF_CHAR_SET, &ivalue, NULL); if (ivalue == CHAR_SET_JAPANESE || ivalue == CHAR_SET_SJIS_UTF) { /* Show use Japanese Kana extention check box */ add_checkbutton(_("Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)"), PREF_USE_JOS, vbox_settings, cb_checkbox_set_pref); } #ifdef ENABLE_PLUGINS if (!skip_plugins) { plugin_list=NULL; plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { Pplugin = (struct plugin_s *)temp_list->data; if (Pplugin) { /* Make a Sync checkbox for each plugin */ g_snprintf(temp, sizeof(temp), _("Sync %s (%s)"), Pplugin->name, Pplugin->full_path); checkbutton = gtk_check_button_new_with_label(temp); gtk_box_pack_start(GTK_BOX(vbox_conduits), checkbutton, FALSE, FALSE, 0); gtk_widget_show(checkbutton); if (Pplugin->sync_on) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), TRUE); } gtk_signal_connect(GTK_OBJECT(checkbutton), "clicked", GTK_SIGNAL_FUNC(cb_sync_plugin), GINT_TO_POINTER(Pplugin->number)); } } } #endif /* Done button */ hbox_temp = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox_temp), GTK_BUTTONBOX_END); gtk_box_pack_start(GTK_BOX(vbox), hbox_temp, FALSE, FALSE, 1); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_quit), window); gtk_box_pack_end(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); gtk_widget_show_all(window); } jpilot-1.8.2/contact.c0000664000175000017500000005373612340261240011555 00000000000000/******************************************************************************* * contact.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include "jp-pi-contact.h" #include #include "address.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "libplugin.h" #include "password.h" /********************************* Constants **********************************/ #define SORT_JAPANESE 8 #define SORT_JOS 16 #define CONT_ADDR_MAP_SIZE (NUM_CONTACT_ENTRIES * 2) /******************************* Global vars **********************************/ static int glob_sort_rule; /* Used for mapping between Contacts and Addresses */ static long cont_addr_map[CONT_ADDR_MAP_SIZE]={ contLastname, entryLastname, contFirstname, entryFirstname, contCompany, entryCompany, contTitle, entryTitle, contPhone1, entryPhone1, contPhone2, entryPhone2, contPhone3, entryPhone3, contPhone4, entryPhone4, contPhone5, entryPhone5, contPhone6, -1, contPhone7, -1, contIM1, -1, contIM2, -1, contWebsite, -1, contCustom1, entryCustom1, contCustom2, entryCustom2, contCustom3, entryCustom3, contCustom4, entryCustom4, contCustom5, -1, contCustom6, -1, contCustom7, -1, contCustom8, -1, contCustom9, -1, contAddress1, entryAddress, contCity1, entryCity, contState1, entryState, contZip1, entryZip, contCountry1, entryCountry, contAddress2, -1, contCity2, -1, contState2, -1, contZip2, -1, contCountry2, -1, contAddress3, -1, contCity3, -1, contState3, -1, contZip3, -1, contCountry3, -1, contNote, entryNote }; /****************************** Main Code *************************************/ static int contact_compare(const void *v1, const void *v2) { ContactList **cl1, **cl2; struct Contact *c1, *c2; char *str1 = NULL, *str2 = NULL; int last_cmp1, last_cmp2; int sort_idx[4]; int i, j, r; cl1=(ContactList **)v1; cl2=(ContactList **)v2; c1=&((*cl1)->mcont.cont); c2=&((*cl2)->mcont.cont); switch (glob_sort_rule & 0x7) { case SORT_BY_FNAME: sort_idx[1] = contFirstname; sort_idx[2] = contLastname; sort_idx[3] = contCompany; break; case SORT_BY_LNAME: default: sort_idx[1] = contLastname; sort_idx[2] = contFirstname; sort_idx[3] = contCompany; break; case SORT_BY_COMPANY: sort_idx[1] = contCompany; sort_idx[2] = contLastname; sort_idx[3] = contFirstname; break; } last_cmp1=last_cmp2=0; if (!(glob_sort_rule & SORT_JAPANESE) || (glob_sort_rule & SORT_JOS)) { /* normal */ while (last_cmp1 < 3 && last_cmp2 < 3) { str1=str2=NULL; /* Find the next non-blank field to use for sorting */ for (i=last_cmp1+1; i<=3; i++) { if (c1->entry[sort_idx[i]]) { if ((str1 = malloc(strlen(c1->entry[sort_idx[i]])+1)) == NULL) { return 0; } strcpy(str1, c1->entry[sort_idx[i]]); /* Convert string to lower case for more accurate comparison */ for (j=strlen(str1)-1; j >= 0; j--) { str1[j] = tolower(str1[j]); } break; } } last_cmp1 = i; if (!str1) return -1; for (i=last_cmp2+1; i<=3; i++) { if (c2->entry[sort_idx[i]]) { if ((str2 = malloc(strlen(c2->entry[sort_idx[i]])+1)) == NULL) { return 0; } strcpy(str2, c2->entry[sort_idx[i]]); for (j=strlen(str2)-1; j >= 0; j--) { str2[j] = tolower(str2[j]); } break; } } last_cmp2 = i; if (!str2) { free(str1); return 1; } r = strcoll(str1, str2); if (str1) free(str1); if (str2) free(str2); if (r != 0) return r; /* Comparisons between unequal fields, such as last name and company * must assume that the other fields are blank. This matches * Palm sort ordering. */ if (last_cmp1 != last_cmp2) { return (last_cmp2 - last_cmp1); } } /* end of while loop to search over 3 fields */ /* Compared all search fields and no difference found */ return 0; } else if ((glob_sort_rule & SORT_JAPANESE) && !(glob_sort_rule & SORT_JOS)){ /* Japanese sorting has not been updated to fix Bug 1814 because no test * platform is available for Western programmers maintaining Jpilot. */ int sort1, sort2, sort3; char *tmp_p1, *tmp_p2, *tmp_p3; sort1 = sort_idx[1]; sort2 = sort_idx[2]; sort3 = sort_idx[3]; if (c1->entry[sort1] || c1->entry[sort2]) { if (c1->entry[sort1] && c1->entry[sort2]) { if (!(tmp_p1 = strchr(c1->entry[sort1],'\1'))) tmp_p1=c1->entry[sort1]+1; if (!(tmp_p2 = strchr(c1->entry[sort2],'\1'))) tmp_p2=c1->entry[sort2]+1; if ((str1 = malloc(strlen(tmp_p1)+strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str1, tmp_p1); strcat(str1, tmp_p2); } if (c1->entry[sort1] && (!c1->entry[sort2])) { if (!(tmp_p1 = strchr(c1->entry[sort1],'\1'))) tmp_p1=c1->entry[sort1]+1; if ((str1 = malloc(strlen(tmp_p1)+1)) == NULL) { return 0; } strcpy(str1, tmp_p1); } if ((!c1->entry[sort1]) && c1->entry[sort2]) { if (!(tmp_p2 = strchr(c1->entry[sort2],'\1'))) tmp_p2=c1->entry[sort2]+1; if ((str1 = malloc(strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str1, tmp_p2); } } else if (c1->entry[sort3]) { if (!(tmp_p3 = strchr(c1->entry[sort3],'\1'))) tmp_p3=c1->entry[sort3]+1; if ((str1 = malloc(strlen(tmp_p3)+1)) == NULL) { return 0; } strcpy(str1, tmp_p3); } else { return 1; } if (c2->entry[sort1] || c2->entry[sort2]) { if (c2->entry[sort1] && c2->entry[sort2]) { if (!(tmp_p1 = strchr(c2->entry[sort1],'\1'))) tmp_p1=c2->entry[sort1]+1; if (!(tmp_p2 = strchr(c2->entry[sort2],'\1'))) tmp_p2=c2->entry[sort2]+1; if ((str2 = malloc(strlen(tmp_p1)+strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str2, tmp_p1); strcat(str2, tmp_p2); } if (c2->entry[sort1] && (!c2->entry[sort2])) { if (!(tmp_p1 = strchr(c2->entry[sort1],'\1'))) tmp_p1=c2->entry[sort1]+1; if ((str2 = malloc(strlen(tmp_p1)+1)) == NULL) { return 0; } strcpy(str2, tmp_p1); } if ((!c2->entry[sort1]) && c2->entry[sort2]) { if (!(tmp_p2 = strchr(c2->entry[sort2],'\1'))) tmp_p2=c2->entry[sort2]+1; if ((str2 = malloc(strlen(tmp_p2)+1)) == NULL) { return 0; } strcpy(str2, tmp_p2); } } else if (c2->entry[sort3]) { if (!(tmp_p3 = strchr(c2->entry[sort3],'\1'))) tmp_p3=c2->entry[sort3]+1; if ((str2 = malloc(strlen(tmp_p3)+1)) == NULL) { return 0; } strcpy(str2, tmp_p3); } else { free(str1); return -1; } /* lower case the strings for a better compare */ for (i=strlen(str1)-1; i >= 0; i--) { str1[i] = tolower(str1[i]); } for (i=strlen(str2)-1; i >= 0; i--) { str2[i] = tolower(str2[i]); } i = strcoll(str1, str2); if (str1) free(str1); if (str2) free(str2); return i; } /* Should never be reached. Assume records are unsortable if reached */ return 0; } /* * sort_order: SORT_ASCENDING | SORT_DESCENDING */ static int contacts_sort(ContactList **cl, int sort_order) { ContactList *temp_cl; ContactList **sort_cl; int count, i; long use_jos, char_set; /* Count the entries in the list */ for (count=0, temp_cl=*cl; temp_cl; temp_cl=temp_cl->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } glob_sort_rule = addr_sort_order; get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set == CHAR_SET_JAPANESE || char_set == CHAR_SET_SJIS_UTF) { glob_sort_rule = glob_sort_rule | SORT_JAPANESE; } else { glob_sort_rule = glob_sort_rule & (SORT_JAPANESE-1); } get_pref(PREF_USE_JOS, &use_jos, NULL); if (use_jos) { glob_sort_rule = glob_sort_rule | SORT_JOS; } else { glob_sort_rule = glob_sort_rule & (SORT_JOS-1); } /* Allocate an array to be qsorted */ sort_cl = calloc(count, sizeof(ContactList *)); if (!sort_cl) { jp_logf(JP_LOG_WARN, "contacts_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_cl=*cl; temp_cl; temp_cl=temp_cl->next, i++) { sort_cl[i] = temp_cl; } /* qsort them */ qsort(sort_cl, count, sizeof(ContactList *), contact_compare); /* Put the linked list in the order of the array */ if (sort_order==SORT_ASCENDING) { sort_cl[count-1]->next = NULL; for (i=count-1; i>0; i--) { sort_cl[i-1]->next=sort_cl[i]; } *cl = sort_cl[0]; } else { /* Descending order */ for (i=count-1; i>0; i--) { sort_cl[i]->next=sort_cl[i-1]; } sort_cl[0]->next = NULL; *cl = sort_cl[count-1]; } free(sort_cl); return EXIT_SUCCESS; } /* Copy AppInfo data structures */ int copy_address_ai_to_contact_ai(const struct AddressAppInfo *aai, struct ContactAppInfo *cai) { int i, a_entry, c_entry; memcpy(&cai->category, &aai->category, sizeof(struct CategoryAppInfo)); memset(&cai->internal, '\0', 26); for (i=0; i=0) && (a_entry>=0)) { strncpy(cai->labels[c_entry], aai->labels[a_entry], 16); cai->labels[c_entry][15]='\0'; } else { if (c_entry>=0) { cai->labels[c_entry][0]='\0'; } } } /* The rest of the labels do not exist in address */ if (cai->type==contacts_v10) { for (i=NUM_CONTACT_ENTRIES; ilabels[i][0]='\0'; } } if (cai->type==contacts_v11) { for (i=NUM_CONTACT_ENTRIES; ilabels[i][0]='\0'; } } cai->country=aai->country; cai->sortByCompany=aai->sortByCompany; for (i=0; i<8; i++) { strncpy(cai->phoneLabels[i], aai->phoneLabels[i], 16); cai->phoneLabels[i][15]='\0'; } for (i=0; i<3; i++) { cai->addrLabels[i][0] = '\0'; } for (i=0; i<5; i++) { cai->IMLabels[i][0] = '\0'; } return EXIT_SUCCESS; } int copy_address_to_contact(const struct Address *a, struct Contact *c) { int i, a_entry, c_entry; for (i=0; ientry[c_entry]=NULL; if ((c_entry>=0) && (a_entry>=0)) { if (a->entry[a_entry]) { c->entry[c_entry]=strdup(a->entry[a_entry]); } } } for (i=0; i<5; i++) { c->phoneLabel[i] = a->phoneLabel[i]; } /* Set these 2 to their default values */ c->phoneLabel[5] = 6; c->phoneLabel[6] = 3; c->showPhone = a->showPhone; /* Set remaining fields to default values */ c->addressLabel[0] = 0; c->addressLabel[1] = 1; c->addressLabel[2] = 2; c->IMLabel[0] = 0; c->IMLabel[1] = 1; c->birthdayFlag = 0; c->reminder = 0; c->advance = 0; c->advanceUnits = 0; memset(&(c->birthday), 0, sizeof(struct tm)); for (i=0; iblob[i] = NULL; } c->picture = NULL; return EXIT_SUCCESS; } int copy_addresses_to_contacts(AddressList *al, ContactList **cl) { ContactList *temp_cl, *last_cl; AddressList *temp_al; *cl = last_cl = NULL; for (temp_al = al; temp_al; temp_al=temp_al->next) { temp_cl = malloc(sizeof(ContactList)); if (!temp_cl) return -1; temp_cl->mcont.rt = temp_al->maddr.rt; temp_cl->mcont.unique_id = temp_al->maddr.unique_id; temp_cl->mcont.attrib = temp_al->maddr.attrib; copy_address_to_contact(&(temp_al->maddr.addr), &(temp_cl->mcont.cont)); temp_cl->app_type = CONTACTS; temp_cl->next=NULL; if (!last_cl) { *cl = last_cl = temp_cl; } else { last_cl->next = temp_cl; last_cl = temp_cl; } } return EXIT_SUCCESS; } /* Unused at this time: 2010/03/31 */ /* static int copy_contact_ai_to_address_ai(const struct ContactAppInfo *cai, struct AddressAppInfo *aai) { int i, a_entry, c_entry; memcpy(&aai->category, &cai->category, sizeof(struct CategoryAppInfo)); for (i=0; i=0) && (a_entry>=0)) { strncpy(aai->labels[a_entry], cai->labels[c_entry], 16); aai->labels[a_entry][15]='\0'; } else { if (a_entry>=0) { aai->labels[a_entry][0]='\0'; } } } aai->country=cai->country; aai->sortByCompany=cai->sortByCompany; for (i=0; i<8; i++) { strncpy(aai->phoneLabels[i], cai->phoneLabels[i], 16); aai->phoneLabels[i][15]='\0'; } for (i=0; i<19+3; i++) { aai->labelRenamed[i]=0; } return EXIT_SUCCESS; } */ int copy_contact_to_address(const struct Contact *c, struct Address *a) { int i, a_entry, c_entry; for (i=0; ientry[a_entry]=NULL; if ((c_entry>=0) && (a_entry>=0)) { if (c->entry[c_entry]) { a->entry[a_entry]=strdup(c->entry[c_entry]); } } } for (i=0; i<5; i++) { a->phoneLabel[i] = c->phoneLabel[i]; } a->showPhone = c->showPhone; if (a->showPhone > 4) { for (i=0; i<5; i++) { if (a->entry[entryPhone1 + i]) { a->showPhone = i; break; } } } return EXIT_SUCCESS; } void free_ContactList(ContactList **cl) { ContactList *temp_cl, *temp_cl_next; for (temp_cl = *cl; temp_cl; temp_cl=temp_cl_next) { jp_free_Contact(&(temp_cl->mcont.cont)); temp_cl_next = temp_cl->next; free(temp_cl); } *cl = NULL; } int get_contact_app_info(struct ContactAppInfo *ai) { int num, r; int rec_size; unsigned char *buf; pi_buffer_t pi_buf; long char_set; memset(ai, 0, sizeof(*ai)); /* Put at least one entry in there */ strcpy(ai->category.name[0], "Unfiled"); r = jp_get_app_info("ContactsDB-PAdd", &buf, &rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, "ContactsDB-PAdd"); if (buf) { free(buf); } return EXIT_FAILURE; } pi_buf.data = buf; pi_buf.used = rec_size; pi_buf.allocated = rec_size; num = jp_unpack_ContactAppInfo(ai, &pi_buf); if (buf) { free(buf); } if ((num<0) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), "ContactsDB-PAdd.pdb"); return EXIT_FAILURE; } get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { /* Convert to host character set */ int i; for (i = 0; i < 49 + 3; i++) if (ai->labels[i][0] != '\0') { charset_p2j(ai->labels[i], 16, char_set); } for (i = 0; i < 8; i++) if (ai->phoneLabels[i][0] != '\0') { charset_p2j(ai->phoneLabels[i], 16, char_set); } for (i = 0; i < 3; i++) if (ai->addrLabels[i][0] != '\0') { charset_p2j(ai->addrLabels[i], 16, char_set); } for (i = 0; i < 5; i++) if (ai->IMLabels[i][0] != '\0') { charset_p2j(ai->IMLabels[i], 16, char_set); } } return EXIT_SUCCESS; } int get_contacts(ContactList **contact_list, int sort_order) { return get_contacts2(contact_list, sort_order, 1, 1, 1, CATEGORY_ALL); } /* * sort_order: SORT_ASCENDING | SORT_DESCENDING * modified, deleted, private: 0 for no, 1 for yes, 2 for use prefs */ int get_contacts2(ContactList **contact_list, int sort_order, int modified, int deleted, int privates, int category) { GList *records; GList *temp_list; int recs_returned, i, num; struct Contact cont; ContactList *temp_c_list; long keep_modified, keep_deleted; int keep_priv; long char_set; buf_rec *br; char *buf; pi_buffer_t pi_buf; jp_logf(JP_LOG_DEBUG, "get_contacts2()\n"); if (modified==2) { get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); } else { keep_modified = modified; } if (deleted==2) { get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); } else { keep_deleted = deleted; } if (privates==2) { keep_priv = show_privates(GET_PRIVATES); } else { keep_priv = privates; } get_pref(PREF_CHAR_SET, &char_set, NULL); *contact_list=NULL; recs_returned = 0; num = jp_read_DB_files("ContactsDB-PAdd", &records); if (-1 == num) return 0; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } if ((keep_priv != SHOW_PRIVATES) && (br->attrib & dlpRecAttrSecret)) { continue; } //#ifndef PILOT_LINK_0_12 /* This is kind of a hack to set the pi_buf directly, but its faster */ pi_buf.data = br->buf; pi_buf.used = br->size; pi_buf.allocated = br->size; //num = jp_unpack_Contact(&cont, br->buf, br->size); num = jp_unpack_Contact(&cont, &pi_buf); //#else /* PILOT_LINK_0_12 */ // RecordBuffer = pi_buffer_new(br->size); // memcpy(RecordBuffer->data, br->buf, br->size); // RecordBuffer->used = br->size; //#endif /* PILOT_LINK_0_12 */ //#ifndef PILOT_LINK_0_12 if (num <= 0) { continue; } //#else /* PILOT_LINK_0_12 */ // if (jp_unpack_Contact(&cont, RecordBuffer, contact_v1) == -1) { // pi_buffer_free(RecordBuffer); // continue; // } // pi_buffer_free(RecordBuffer); //#endif /* PILOT_LINK_0_12 */ if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { jp_free_Contact(&cont); continue; } buf = NULL; if (char_set != CHAR_SET_LATIN1) { for (i = 0; i < 39; i++) { if ((cont.entry[i] != NULL) && (cont.entry[i][0] != '\0')) { buf = charset_p2newj(cont.entry[i], -1, char_set); if (buf) { free(cont.entry[i]); cont.entry[i] = buf; } } } } temp_c_list = malloc(sizeof(ContactList)); if (!temp_c_list) { jp_logf(JP_LOG_WARN, "get_contacts2(): %s\n", _("Out of memory")); break; } memcpy(&(temp_c_list->mcont.cont), &cont, sizeof(struct Contact)); temp_c_list->app_type = CONTACTS; temp_c_list->mcont.rt = br->rt; temp_c_list->mcont.attrib = br->attrib; temp_c_list->mcont.unique_id = br->unique_id; temp_c_list->next = *contact_list; *contact_list = temp_c_list; recs_returned++; } jp_free_DB_records(&records); contacts_sort(contact_list, sort_order); jp_logf(JP_LOG_DEBUG, "Leaving get_contacts2()\n"); return recs_returned; } int pc_contact_write(struct Contact *cont, PCRecType rt, unsigned char attrib, unsigned int *unique_id) { pi_buffer_t *RecordBuffer; int i; buf_rec br; long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { for (i = 0; i < 39; i++) { if (cont->entry[i]) charset_j2p(cont->entry[i], strlen(cont->entry[i])+1, char_set); } } RecordBuffer = pi_buffer_new(0); jp_pack_Contact(cont, RecordBuffer); if (!RecordBuffer->used) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "jp_pack_Contact %s\n", _("error")); pi_buffer_free(RecordBuffer); return EXIT_FAILURE; } br.rt=rt; br.attrib = attrib; br.buf = RecordBuffer->data; br.size = RecordBuffer->used; /* Keep unique ID intact */ if (unique_id) { br.unique_id = *unique_id; } else { br.unique_id = 0; } jp_pc_write("ContactsDB-PAdd", &br); if (unique_id) { *unique_id = br.unique_id; } pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } jpilot-1.8.2/INSTALL0000664000175000017500000001077712320101153010777 00000000000000============================================================================== Last updated: 11 Aug 2009 by rw ============================================================================== === Web ====================================================================== For the latest news, versions, documents, plugins, etc. http://www.jpilot.org ============================================================================== === Documents ================================================================ Be sure to read the docs in the doc directory, or if installed from the RPM in /usr/share/doc/jpilot-1.6.4/. ============================================================================== === Upgrading ================================================================ Before upgrading versions of J-Pilot always sync your palm and back up your data just to be on the safe side. ============================================================================== === Requirements ============================================================= To compile J-Pilot you need to have GTK+ 2.0.3 or higher installed. You can find out which version you have by running "gtk-config --version". GTK+ requires glib. The glib version should probably match the gtk version. You can also do a "glib-config --version". You can get these tools at http://www.gtk.org Pilot-link 0.12.4 or higher must be installed and working. http://www.pilot-link.org RedHat users must also have the pilot-link-dev rpm installed for the header files so that jpilot can compile. You don't need these if you install the jpilot RPM. If you want i18n support you should have gettext 0.16.1 or higher installed (preferably GNU gettext). If you don't have, or want it, use "configure --disable-nls" ============================================================================== === Compiling ================================================================ To compile and install do the following: ./configure (configure --help will list all the options.) make make install jpilot make uninstall is an option also. To make an rpm just do rpm -tb jpilot-{version}.tar.gz On some systems use rpmbuild -tb jpilot-{version}.tar.gz ============================================================================== === Plugins ================================================================= I have added an example plugin Expense to match the palm Expense application. I have included 2 other plugins: SyncTime - This sets the time on the pilot from the desktop clock. KeyRing - KeyRing is a GNU licensed palm application to keep encrypted passwords and other data. configure --disable-plugins can be used if plugins aren't desired. ============================================================================== === Irix ===================================================================== Irix uses different lib directories for shared libraries. Plugins have to be installed in different directories for this reason. Before compiling you can use: for ELF 64-bit: "export ABILIB=lib64" for ELF N32: "export ABILIB=lib32" for ELF 32-bit: "export ABILIB=lib" ============================================================================== === Compile Errors =========================================================== Message: bash$ jpilot jpilot: error in loading shared libraries: libpisock.so.4: cannot open shared object file: No such file or directory bash$ Solution: libpisock.so is the pilot-link shared library. J-Pilot uses this library to talk over the serial port to the palm. You can find it by doing a "locate libpisock". Shared libraries are loaded at runtime, not compile time. This error is caused by ld.so not being able to find libpisock.so You can fix this by either adding the path to libpisock.so to the environment variable LD_LIBRARY_PATH. Do this by LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/libpath in bash, some other shells have different syntax. This can be put in your .bashrc, or profile, etc. The other way to fix it is to add the path to libpisock in /etc/ld.so.conf and then run ldconfig. You need root to do this. ============================================================================== === Disclaimer =============================================================== J-Pilot was written in such a way that it should be very safe to sync. There is always the possibility of something going wrong though. As with anything else, backup your data if you cannot afford to lose it. ============================================================================== jpilot-1.8.2/README0000664000175000017500000001453212336023003010623 00000000000000============================================================================== Last updated: 30 Jan 2002 by jbm ============================================================================== J-Pilot is a palm pilot desktop for Linux/Unix written by: Judd Montgomery, judd@jpilot.org It is very useable, but still has many planned updates to make it better. If you like it feel to send me donations ;) I collect coins from anywhere, anytime also. At least send me an email and let me know you are using it. I'd like to know how many people this is useful to. Judd Montgomery P.O. Box 665 Sunbury, OH 43074 ============================================================================== Information about being a translator can be found at: http://www.iro.umontreal.ca/contrib/po/HTML/ ============================================================================== ============================================================================== Plugins: Manana can be found at http://bill.sexton.tripod.com/download.htm KeyRing can be found at http://gnukeyring.sourceforge.net ============================================================================== USB and Palm OS 4.x devices To use USB devices you must have the appropriate usb modules loaded or compiled into the kernel. These are usually either uhci, or ohci, uhci being the more common. The visor driver is also needed. I would recommend a fairly new kernel >= 2.4.17 if you are using a USB palm other than a visor. To Sync USB devices other than visors you will need to download pilot-link 0.10.0 or greater. As of this release you can only get this from the pilot-link CVS website. http://www.pilot-link.org. If you are using Palm OS > 4.0 and see this message: "The desktop HotSync software does not support the password on this handheld. You must upgrade your desktop software or remove the password from the handheld." You need pilot-link > 0.11.5 ============================================================================== SERIAL PORT SETUP: When syncing, jpilot uses the port and speed settings out of the preferences menu. If the port is blank then jpilot will use the PILOTPORT environment variables, as does pilot-link. If these are blank then jpilot will default to /dev/pilot. It is recommended, but not neccessay to make a link from /dev/pilot to the correct serial port. So, if your cradle is on COM1, this is /dev/ttyS0 under Linux. You could execute the command "ln -s /dev/ttyS0 /dev/pilot". COM2 is /dev/ttyS1, and so on. You must also give non-root users permisions to access the serial port. The command to do this is (as root) "chmod 666 /dev/ttyS0" for the first serial port, ttyS1, for the second, and so on. USB devices usually use /dev/ttyUSB0, or /dev/ttyS1 If you are using the new devfs serial ports will be: first serial port is /dev/tts/0 second serial port is /dev/tts/1 first USB port is /dev/usb/tts/0 second USB port is /dev/usb/tts/1 ============================================================================== ============================================================================== COLOR FILES: Make install will copy a few default color files to /usr/local/share/jpilot/ (unless you told configure to use another prefix). These will be selectable from the preferences menu. Also jpilot will look in $JPILOT_HOME/.jpilot/ for colors files. They must start with "jpilotrc". If you want to add new ones, or modify the current ones, just put the files in one of these directories and they will show up in the preferences menu. If you create your own cool jpilotrc files feel free to send them back to me and if I like it, I'll include it in the release. ============================================================================== ENVIRONMENT VARIABLES J-Pilot uses the JPILOT_HOME environment variable to make it easy to allow multiple pilots to be synced under the same unix user. Just set JPILOT_HOME to the directory you want jpilot to use. For example, I have 2 palm pilots. I can sync the one I use all the time into /home/judd. The other one I can sync into /home/judd/palm2 by using this script: #!/bin/bash JPILOT_HOME=/home/judd/palm2 jpilot This is also handy for syncing xcopilot into its own directory. You don't have to set JPILOT_HOME. If its not set then jpilot will use the HOME env variable. Future version of J-Pilot will probably sync multiple palms into a subdirectory under the JPILOT_HOME/.jpilot directory. ============================================================================== UBUNTU DIALOUT USER In ubuntu you must be a member of the dialout group in order to sync over USB. Users will not be in this group by default. If you are using serial ports see the README file. sudo usermod -a -G dialout $USER ============================================================================== SYNCING Most users find it easiest to sync by pressing the sync button on the PalmOS device and then within a second or a few pressing the sync button on jpilot. ============================================================================== OOPS, REVERTING: You can always make the databases revert back to the last time that the pilot was synced. All you have to do is "rm ~/.jpilot/*.pc3". Deleted records will come back, etc. Nothing is permanent until the sync/backup. You can do this if you make a mistake, or just to play around with jpilot and then delete the changed records without syncing them. Also, from the preferences menu, you can choose to show deleted records and then click on the deleted record and use "Add" to get a copy of it back. ============================================================================== BACKUP and SYNC: The Sync button will sync the 4 applications with the palm pilot and any plugins that are installed. The Backup button will backup every program and database from the palm pilot, except for AvantGo files (these are usually big and change daily). If you get an error saying that you have a NULL user ID, then you need to run install-user from the pilot-link suite. e.g. "install-user /dev/pilot Judd 1234", of course replace "Judd" and "1234" with you favorite name and number. CLOCK UPDATE and flickers: I don't know why, but the scrollbars flicker when the clock updates. On some systems it is bad, others not at all. To get rid of this, just go into preferences and choose a time without seconds. Then the clock will only update every minute. jpilot-1.8.2/restore_gui.c0000664000175000017500000002715212340261240012442 00000000000000/******************************************************************************* * restore_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "prefs.h" #include "sync.h" #include "log.h" #include "restore.h" /******************************* Global vars **********************************/ static GtkWidget *user_entry; static GtkWidget *user_id_entry; static GtkWidget *restore_clist; /****************************** Main Code *************************************/ static gboolean cb_restore_destroy(GtkWidget *widget) { gtk_main_quit(); return FALSE; } static void cb_restore_ok(GtkWidget *widget, gpointer data) { GList *list, *temp_list; char *text; char file[FILENAME_MAX], backup_file[FILENAME_MAX]; char home_dir[FILENAME_MAX]; struct stat buf, backup_buf; int r1, r2; list=GTK_CLIST(restore_clist)->selection; get_home_file_name("", home_dir, sizeof(home_dir)); /* Remove anything that was supposed to be installed */ g_snprintf(file, sizeof(file), "%s/"EPN".install", home_dir); unlink(file); jp_logf(JP_LOG_WARN, "%s%s%s\n", "-----===== ", _("Restore Handheld"), " ======-----"); for (temp_list=list; temp_list; temp_list = temp_list->next) { gtk_clist_get_text(GTK_CLIST(restore_clist), GPOINTER_TO_INT(temp_list->data), 0, &text); jp_logf(JP_LOG_DEBUG, "row %ld [%s]\n", (long) temp_list->data, text); /* Look for the file in the JPILOT_HOME and JPILOT_HOME/backup. * Restore the newest modified date one, or the only one. */ g_snprintf(file, sizeof(file), "%s/%s", home_dir, text); g_snprintf(backup_file, sizeof(backup_file), "%s/backup/%s", home_dir, text); r1 = ! stat(file, &buf); r2 = ! stat(backup_file, &backup_buf); if (r1 && r2) { /* found in JPILOT_HOME and JPILOT_HOME/backup */ if (buf.st_mtime > backup_buf.st_mtime) { jp_logf(JP_LOG_DEBUG, "Restore: found in home and backup, using home file %s\n", text); install_append_line(file); } else { jp_logf(JP_LOG_DEBUG, "Restore: found in home and backup, using home/backup file %s\n", text); install_append_line(backup_file); } } else if (r1) { /* only found in JPILOT_HOME */ install_append_line(file); jp_logf(JP_LOG_DEBUG, "Restore: using home file %s\n", text); } else if (r2) { /* only found in JPILOT_HOME/backup */ jp_logf(JP_LOG_DEBUG, "Restore: using home/backup file %s\n", text); install_append_line(backup_file); } } setup_sync(SYNC_NO_PLUGINS|SYNC_OVERRIDE_USER|SYNC_RESTORE); gtk_widget_destroy(data); } static void cb_restore_quit(GtkWidget *widget, gpointer data) { gtk_widget_destroy(data); } /* * path is the dir to open * check_for_dups will check the clist and not add if its a duplicate * check_exts will not add if its not a pdb, prc, or pqa. */ static int populate_clist_sub(char *path, int check_for_dups, int check_exts) { char *row_text[1]; DIR *dir; struct dirent *dirent; char last4[8]; char *text; int i, num, len, found; jp_logf(JP_LOG_DEBUG, "opening dir %s\n", path); dir = opendir(path); num = 0; if (!dir) { jp_logf(JP_LOG_DEBUG, "opening dir failed\n"); } else { for (i=0; (dirent = readdir(dir)); i++) { if (i>1000) { jp_logf(JP_LOG_WARN, "populate_clist_sub(): %s\n", _("infinite loop")); closedir(dir); return EXIT_FAILURE; } if (dirent->d_name[0]=='.') { continue; } if (!strncmp(dirent->d_name, "Unsaved Preferences", 17)) { jp_logf(JP_LOG_DEBUG, "skipping %s\n", dirent->d_name); continue; } if (check_exts) { len = strlen(dirent->d_name); if (len < 4) { continue; } strncpy(last4, dirent->d_name+len-4, 4); last4[4]='\0'; if (strcmp(last4, ".pdb") && strcmp(last4, ".prc") && strcmp(last4, ".pqa")) { continue; } } if (check_for_dups) { found=0; for (i=0; irows; i++) { gtk_clist_get_text(GTK_CLIST(restore_clist), i, 0, &text); if (!(strcmp(dirent->d_name, text))) { found=1; break; } } if (found) continue; } row_text[0]=dirent->d_name; { gchar *utf8_text; utf8_text = g_locale_to_utf8(row_text[0], -1, NULL, NULL, NULL); if (!utf8_text) { jp_logf(JP_LOG_GUI, _("Unable to convert filename for GTK display\n")); jp_logf(JP_LOG_GUI, _("See console log to find which file will not be restored\n")); jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("Unable to convert filename for GTK display\n")); jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("File %s will not be restored\n"), row_text[0]); continue; } row_text[0] = utf8_text; gtk_clist_append(GTK_CLIST(restore_clist), row_text); g_free(utf8_text); } num++; } closedir(dir); } gtk_clist_sort (GTK_CLIST (restore_clist)); return num; } static int populate_clist(void) { char path[FILENAME_MAX]; get_home_file_name("backup", path, sizeof(path)); cleanup_path(path); populate_clist_sub(path, 0, 0); get_home_file_name("", path, sizeof(path)); cleanup_path(path); populate_clist_sub(path, 1, 1); gtk_clist_select_all(GTK_CLIST(restore_clist)); return EXIT_SUCCESS; } int restore_gui(GtkWidget *main_window, int w, int h, int x, int y) { GtkWidget *restore_window; GtkWidget *button; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *scrolled_window; GtkWidget *label; const char *svalue; long ivalue; long char_set; char str_int[20]; jp_logf(JP_LOG_DEBUG, "restore_gui()\n"); restore_window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", _("Restore Handheld"), NULL); gtk_window_set_default_size(GTK_WINDOW(restore_window), w, h); gtk_widget_set_uposition(restore_window, x, y); gtk_container_set_border_width(GTK_CONTAINER(restore_window), 5); gtk_window_set_default_size(GTK_WINDOW(restore_window), w, h); gtk_window_set_modal(GTK_WINDOW(restore_window), TRUE); gtk_window_set_transient_for(GTK_WINDOW(restore_window), GTK_WINDOW(main_window)); gtk_signal_connect(GTK_OBJECT(restore_window), "destroy", GTK_SIGNAL_FUNC(cb_restore_destroy), restore_window); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(restore_window), vbox); /* Label for instructions */ label = gtk_label_new(_("To restore your handheld:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(_("1. Choose the applications you wish to restore. The default is all.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(_("2. Enter the User Name and User ID.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(_("3. Press the OK button.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(_("This will overwrite data that is currently on the handheld.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); /* List of files to restore */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0); restore_clist = gtk_clist_new(1); gtk_clist_set_shadow_type(GTK_CLIST(restore_clist), SHADOW); gtk_clist_set_selection_mode(GTK_CLIST(restore_clist), GTK_SELECTION_EXTENDED); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(restore_clist)); /* User entry */ hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("User Name")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); user_entry = gtk_entry_new_with_max_length(126); entry_set_multiline_truncate(GTK_ENTRY(user_entry), TRUE); get_pref(PREF_USER, NULL, &svalue); if ((svalue) && (svalue[0])) { /* Convert User Name stored in Palm character set */ char user_name[128]; get_pref(PREF_CHAR_SET, &char_set, NULL); g_strlcpy(user_name, svalue, 128); charset_p2j(user_name, 128, char_set); gtk_entry_set_text(GTK_ENTRY(user_entry), user_name); } gtk_box_pack_start(GTK_BOX(hbox), user_entry, TRUE, TRUE, 0); /* User ID entry */ hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("User ID")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); user_id_entry = gtk_entry_new_with_max_length(10); entry_set_multiline_truncate(GTK_ENTRY(user_id_entry), TRUE); get_pref(PREF_USER_ID, &ivalue, NULL); sprintf(str_int, "%ld", ivalue); gtk_entry_set_text(GTK_ENTRY(user_id_entry), str_int); gtk_box_pack_start(GTK_BOX(hbox), user_id_entry, TRUE, TRUE, 0); /* Cancel/OK buttons */ hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 12); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_restore_quit), restore_window); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_restore_ok), restore_window); populate_clist(); gtk_widget_show_all(restore_window); gtk_main(); return EXIT_SUCCESS; } jpilot-1.8.2/configure.in0000664000175000017500000004546412336014232012270 00000000000000dnl ############################################################################ dnl Process this file with autoconf to produce a configure script. dnl ############################################################################ dnl boilerplate to initialize autoconf(AC) and automake(AM) AC_PREREQ([2.58]) AC_INIT(jpilot, 1.8.2) AM_INIT_AUTOMAKE([1.8]) dnl use a config.h file rather than string of -DXXX args to compiler dnl run autoheader before autoconf to create config.h.in from configure.in AM_CONFIG_HEADER(config.h) dnl enable maintainer mode in Makefiles (make dist, distclean) AM_MAINTAINER_MODE dnl ############################################################################ dnl Check for programs needed during configure or build dnl ############################################################################ AC_CANONICAL_HOST # determine build host AC_PROG_CC dnl AC_ISC_POSIX only needed for Interacive Systems UNIX which Sun dnl is discontinuing support on as of 7/23/2006. dnl This obsolete macro should probably be removed. AC_ISC_POSIX dnl Need intltool for i18n support AC_PROG_INTLTOOL() AC_PROG_INSTALL AC_PATH_PROG([SED], [sed], [ AC_MSG_ERROR([sed is required for configure script]) ]) AC_PATH_PROG([GREP], [grep], [ AC_MSG_ERROR([grep is required for configure script]) ]) AC_PATH_PROG([CUT], [cut], [ AC_MSG_ERROR([cut is required for configure script]) ]) dnl ****************************** dnl Libtool setup dnl ****************************** dnl enable shared library building, turn off static libraries AC_DISABLE_STATIC AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) dnl ****************************** dnl Gettext setup dnl ****************************** dnl Set of available languages ALL_LINGUAS="ca cs da de es fr it ja ko nl nb pt_BR ru rw sv tr uk vi zh_CN zh_TW" dnl Name of language files GETTEXT_PACKAGE=jpilot AC_SUBST(GETTEXT_PACKAGE) dnl 9/29/2006: Work around a bug in current versions of gettext/intltool dnl which leave this macro undefined. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl Setup gettext using version available on host dnl The intl/ directory is not exported with the distribution AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.16.1]) if test "x$MSGFMT" = "xno"; then if test "x$GMSGFMT" = "xno"; then AC_MSG_RESULT(No gettext found) AC_MSG_ERROR(Either install gettext or use 'configure --disable-nls') fi fi dnl gettext macros for context-sensitive messages depend on locale.h AC_CHECK_HEADER(locale.h,, AC_MSG_ERROR(gettext requires locale.h. Install locale.h or disable language support with 'configure --disable-nls')) dnl ############################################################################ dnl Process Enable/Disable configure arguments dnl ############################################################################ AC_ARG_ENABLE(plugins, AC_HELP_STRING([--disable-plugins],[Do not compile plugin support]), enable_plugins=$enableval, enable_plugins=yes) plugin_support=no if test "x$enable_plugins" = "xyes"; then AC_CHECK_FUNCS(dlopen) if test "x$ac_cv_func_dlopen" = "xyes"; then have_dlopen=yes else for lib in dl; do AC_CHECK_LIB($lib, dlopen, [LIBS="$LIBS -ldl"; have_dlopen=yes; break]) done fi if test "x$have_dlopen" = "xyes"; then AC_DEFINE(ENABLE_PLUGINS, 1, [ plugin support ]) plugin_support="yes" ## AC_SUBST(plugin_support) ## %RW: not apparently used anywhere else AC_MSG_RESULT(Could not find dlopen - plugin support disabled) fi else AC_MSG_RESULT(Plugin support disabled by configure options) fi dnl ************************************************************ AC_ARG_ENABLE(private, AC_HELP_STRING([--disable-private],[Do not use private records feature (password not needed to see private records)]), enable_private=$enableval, enable_private=yes) if test "$enable_private" = "yes"; then AC_DEFINE(ENABLE_PRIVATE, 1, [ Private record support ]) else AC_MSG_RESULT(Private record support disabled by configure options) fi dnl ************************************************************ AC_ARG_ENABLE(datebk, AC_HELP_STRING([--disable-datebk],[Disable Datebk support]), enable_datebk=$enableval, enable_datebk=yes) if test "$enable_datebk" = "yes"; then AC_DEFINE(ENABLE_DATEBK, 1, [ DateBk support ]) else AC_MSG_RESULT(Datebk support disabled by configure options) fi dnl ************************************************************ AC_ARG_ENABLE(manana, AC_HELP_STRING([--disable-manana],[Disable Manana support]), enable_manana=$enableval, enable_manana=yes) if test "$enable_manana" = "yes"; then AC_DEFINE(ENABLE_MANANA, 1, [ Manana support ]) else AC_MSG_RESULT(Manana support disabled by configure options) fi dnl ************************************************************ AC_ARG_ENABLE(prometheon, AC_HELP_STRING([--enable-prometheon],[For use with Prometheon: http://www.prometheon.net]), enable_prometheon=$enableval, enable_prometheon=no) if test "$enable_prometheon" = "yes"; then AC_DEFINE(ENABLE_PROMETHEON, 1, [ Prometheon support ]) AC_DEFINE_UNQUOTED(PROGNAME, "copilot", [ program name ]) AC_MSG_RESULT(Prometheon support enabled) else AC_DEFINE_UNQUOTED(PROGNAME, "jpilot", [ program name ]) fi AC_SUBST(PROGNAME) dnl ************************************************************ AC_ARG_ENABLE(alarm-shell-danger, AC_HELP_STRING([--enable-alarm-shell-danger],[Allow alarm descriptions and notes to be used in alarm shell commands]), enable_alarm_shell_danger=$enableval, enable_alarm_shell_danger=no; ) if test "$enable_alarm_shell_danger" = "yes"; then AC_DEFINE(ENABLE_ALARM_SHELL_DANGER, 1, [ Datebook description and note allowed in shell commands ]) fi dnl ************************************************************ AC_ARG_ENABLE(stock_buttons, AC_HELP_STRING([--disable-stock-buttons],[Disable stock buttons (icons on GUI buttons)]), enable_stock_buttons=$enableval, enable_stock_buttons=yes) if test "x$enable_stock_buttons" = "xyes"; then AC_DEFINE(ENABLE_STOCK_BUTTONS, 1, [ Use GTK2 stock buttons ]) AC_MSG_RESULT(stock buttons enabled by configure options) else AC_MSG_RESULT(stock buttons disabled by configure options) fi dnl ############################################################################ dnl Check for libraries needed dnl ############################################################################ dnl ****************************** dnl * GTK2 libraries dnl ****************************** AM_PATH_GTK_2_0(2.0.3, , AC_MSG_ERROR([*** GTK >= 2.0.3 not found ***])) dnl ****************************** dnl * pilot-link libs dnl ****************************** pilot_prefix="" AC_ARG_WITH(pilot_prefix, AC_HELP_STRING([--with-pilot-prefix=PFX],[Prefix to top level of pilot-link files (e.g., = /usr/local if the pilot-link includes are in /usr/local/include and libs are in /usr/local/lib)])) if test "x$with_pilot_prefix" != "x"; then pilot_prefix=$with_pilot_prefix fi dnl Make sure that the pilot-link stuff actually exists AC_MSG_CHECKING(for pilot-link header files) pilotinclude=${FORCE_PILOT_INCLUDES:-no} if test "$pilotinclude" = "no" ; then for pilot_incl in $pilot_prefix/include /usr/include /usr/local/include \ /usr/extra/pilot/include /usr/include/libpisock; do if test -r "$pilot_incl/pi-version.h" ; then pilotinclude=yes PILOT_FLAGS="$PILOT_FLAGS -I$pilot_incl" break fi done fi if test "$pilotinclude" = "no" ; then AC_MSG_RESULT(no) AC_MSG_ERROR(Could not find the pilot-link header files) else AC_MSG_RESULT(found at $pilot_incl) fi dnl pilot-link headers are installed. Now check for libraries AC_MSG_CHECKING(for pilot library files) pilotlibs=${FORCE_PILOT_LIBS:-no} PILOT_LIBS="-lpisock" if test "$pilotlibs" = "no" ; then for pilot_libs in $pilot_prefix/lib /usr/lib /usr/local/lib/ \ /usr/extra/pilot/lib $pilot_prefix/lib64 /usr/lib64 ; do if test -r $pilot_libs/libpisock.so >/dev/null 2>&1 ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi if test -r "$pilot_libs/libpisock.a" ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi if test -r "$pilot_libs/libpisock.sl" ; then pilotlibs=yes PILOT_LIBS="-L$pilot_libs $PILOT_LIBS" break fi done fi if test "$pilotlibs" = "no" ; then AC_MSG_RESULT(no) AC_MSG_ERROR(Could not find the pilot-link libraries) else AC_MSG_RESULT(found at $pilot_libs) fi dnl Solaris needs the socket library AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent)) AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt)) dnl Substitute macros now that LIB & FLAG detection is done AC_SUBST(PILOT_LIBS) AC_SUBST(PILOT_FLAGS) dnl ************************************************************ AC_ARG_ENABLE(pl-test, AC_HELP_STRING([--disable-pl-test],[Do not try to compile a test pilot-link program]), enable_pl_test=$enableval, enable_pl_test=yes) dnl run some simple tests to verify pilot-link environment if test "x$enable_pl_test" = "xyes"; then pilotcompile=no dnl Check to make sure pilot-link library can be linked AC_MSG_CHECKING(to see if I can compile a pilot link program) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PILOT_FLAGS" save_LIBS="$LIBS" LIBS="$LIBS $PILOT_LIBS" AC_TRY_LINK([#include "pi-version.h" #include "pi-socket.h"], [pi_close (0);] , pilotcompile=yes, , ) if test "$pilotcompile" = "no" ; then AC_MSG_RESULT(no) AC_MSG_ERROR(Could not compile a test pilot-link program) else AC_MSG_RESULT(ok) fi dnl Try to run a pilot-link program (tests dynamic linking) AC_MSG_CHECKING(if I can run a pilot-link program) AC_TRY_RUN([ #include int main() { return 0; } ], AC_MSG_RESULT([ok]), AC_MSG_ERROR([ * Can not run a pilot-link test program * Make sure libpisock can be found by ld * Check /etc/ld.so.conf and run ldconfig * This test can be disabled by the --disable-pl-test option]) , [ error ]) dnl restore variables after pilot-link testing CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" fi dnl * Check pilot-link pi-version.h AC_MSG_CHECKING(pilot-link version) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PILOT_FLAGS" save_LIBS="$LIBS" LIBS="$LIBS $PILOT_LIBS" AC_TRY_COMPILE([#include ], [ exit(0); ], , AC_MSG_ERROR([pilot-link header pi-version.h not found]) ) dnl * Pilot-link version variations, USB support, 12.0, etc. pl_version_check_done=no; pl_version=`$GREP "define PILOT_LINK_VERSION" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_major=`$GREP "define PILOT_LINK_MAJOR" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_minor=`$GREP "define PILOT_LINK_MINOR" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3` pl_patch=`$GREP "define PILOT_LINK_PATCH" "$pilot_incl/pi-version.h" | \ $CUT -d " " -f 3 | $SED -e 's/"//g'` AC_MSG_RESULT([pi-version indicates $pl_version.$pl_major.$pl_minor]) dnl *** check for pilot-link 0.12.5 and up if test $pl_version -eq 0 ; then if test $pl_major -ge 12 ; then if test $pl_minor -ge 5 ; then pl_version_check_done=yes; AC_MSG_RESULT([pilot-link has USB]) AC_MSG_RESULT([pilot-link has card support (>12.0)]) AC_MSG_RESULT([pilot-link has Calendar support (>12.5)]) fi fi fi if test $pl_version_check_done != yes; then AC_MSG_ERROR([pilot-link version >= 0.12.5 is required]) fi dnl restore variables after pilot-link testing CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" dnl ****************************** dnl * End pilot-links tests dnl ****************************** dnl Check for gnu crypt lib necessary for Keyring crypto_lib="none" AM_PATH_LIBGCRYPT AC_CHECK_LIB([gcrypt], [gcry_md_hash_buffer], have_libgcrypt=1, have_libgcrypt=0) AC_ARG_WITH(openssl, AC_HELP_STRING([--with-openssl],[Use OpenSSL instead of GNU libgcrypt]), have_libgcrypt="0") if test "$have_libgcrypt" = "0"; then dnl Check for OpenSSL libs necessary for Keyring AC_CHECK_LIB([crypto], [SSLeay_version], have_libcrypto=1, have_libcrypto=0) else AC_DEFINE(HAVE_LIBGCRYPT, 1, [ Use GNU libgcrypt instead of OpenSSL ]) crypto_lib="libgcrypt" fi dnl ############################################################################ dnl Check for headers needed dnl ############################################################################ dnl 10/2/06: only headers used for true code portability right now are locale.h, langinfo.h AC_CHECK_HEADERS([fcntl.h langinfo.h locale.h stdlib.h string.h sys/socket.h sys/time.h sys/wait.h unistd.h utime.h]) # Headers required for plugins AC_CHECK_HEADERS(netinet/in.h, have_netinet=1, have_netinet=0) if test "$plugin_support" = "yes" -a "$have_netinet" = "0"; then plugin_support = "no" fi # jpilot-dial required headers AC_CHECK_HEADERS(termio.h, have_termio=1, have_termio=0) dnl Headers needed to build keyring AC_CHECK_HEADERS(openssl/md5.h, have_openssl_md5=1, have_openssl_md5=0) AC_CHECK_HEADERS(openssl/des.h, have_openssl_des=1, have_openssl_des=0) dnl ############################################################################ dnl Check for typedefs and structures needed dnl ############################################################################ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_INLINE AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T AC_HEADER_TIME dnl 10/2/06: This is obsolescent on most systems now as the tm struct is in time.h AC_STRUCT_TM dnl ****************************** dnl Check whether nl_langinfo can provide start of week to GTK dnl ****************************** # _NL_TIME_FIRST_WEEKDAY is an enum and not a define AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY]) AC_TRY_LINK([#include ], [ char c; c = *((unsigned char *) nl_langinfo(_NL_TIME_FIRST_WEEKDAY)); ], nl_ok=yes, nl_ok=no) AC_MSG_RESULT($nl_ok) if test "$nl_ok" = "yes"; then AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1], [Define if _NL_TIME_FIRST_WEEKDAY is available]) fi dnl ############################################################################ dnl Check for individual functions needed dnl ############################################################################ dnl Checks for library functions. AC_TYPE_SIGNAL AC_FUNC_STRCOLL #AC_FUNC_MALLOC #AC_FUNC_REALLOC AC_CHECK_FUNCS(setenv) AC_ARG_WITH(with_flock, AC_HELP_STRING([--with-flock],[Substitute flock instead of fnctl for file locking (for NFS)]), with_flock=yes) if test "x$with_flock" = "xyes"; then AC_CHECK_HEADERS(sys/file.h, [AC_DEFINE(USE_FLOCK, 1, [ Using flock instead of fnctl ]) AC_MSG_RESULT(Using flock instead of fnctl)], [AC_MSG_FAILURE([--with-flock was given, but sys/file.h was not found])]) fi dnl ############################################################################ dnl Figure which programs can be built on this particular host with the dnl libraries available. dnl ############################################################################ dnl * Work out which plugins to make make_keyring=no if test "$have_libgcrypt" = "1"; then make_keyring=yes fi if test "$have_libcrypto" = "1"; then if test "$have_openssl_md5" = "1" -a "$have_openssl_des" = "1"; then make_keyring=yes OPENSSL_LIBS=-lcrypto crypto_lib="OpenSSL" fi fi AC_SUBST(OPENSSL_LIBS) if test "$make_keyring" != "yes"; then AC_MSG_WARN([OpenSSL library not found, Keyring will not be built]) fi keyring_plugin=no; if test "x$make_keyring" = "xyes" -a "x$plugin_support" = "xyes"; then keyring_plugin=yes; fi AM_CONDITIONAL(MAKE_KEYRING, test "x$keyring_plugin" = "xyes") AM_CONDITIONAL(MAKE_EXPENSE, test "x$plugin_support" = "xyes") AM_CONDITIONAL(MAKE_SYNCTIME, test "x$plugin_support" = "xyes") dnl * Work out whether dialer can be built dnl check operating system for jpilot-dialer dialer=no if test "$have_termio" = "1"; then case "${build_os}" in linux-gnu) dialer=yes ;; *) AC_MSG_WARN( [Operating system ${build_os} not supported by jpilot-dialer]) ; dialer=no ;; esac fi AM_CONDITIONAL(JPILOT_DIALER, test "x$dialer" = "xyes") dnl ############################################################################ dnl Miscellaneous definitions dnl ############################################################################ dnl Define BASE_DIR in which is passed on to users in Jpilot help window if test "x$prefix" = "xNONE"; then AC_DEFINE_UNQUOTED(BASE_DIR, "$ac_default_prefix", [ BASE_DIR ]) else AC_DEFINE_UNQUOTED(BASE_DIR, "$prefix", [ BASE_DIR ]) fi dnl For Irix Systems abilib=$ABILIB if test "x$abilib" = "x"; then AC_DEFINE_UNQUOTED(ABILIB, "lib", [ ABILIB ]) else AC_DEFINE_UNQUOTED(ABILIB, "$abilib", [ ABILIB ]) fi AC_SUBST(ABILIB) dnl ############################################################################ dnl Setup complete. Create the specified files dnl ############################################################################ AC_CONFIG_FILES([Makefile Expense/Makefile SyncTime/Makefile KeyRing/Makefile dialer/Makefile m4/Makefile po/Makefile.in icons/Makefile docs/Makefile empty/Makefile jpilot.spec SlackBuild ]) AC_OUTPUT dnl Make SlackBuild executable chmod +x SlackBuild dnl ****************************** dnl Configuration messages dnl ****************************** AC_MSG_RESULT() AC_MSG_RESULT(This package is configured for the following features:) AC_MSG_RESULT(------------------------------------------------------) AC_MSG_RESULT(Compiling with plugin support.......... $enable_plugins) AC_MSG_RESULT(Compiling with private record support.. $enable_private) AC_MSG_RESULT(Compiling with Datebk support.......... $enable_datebk) AC_MSG_RESULT(Compiling with Manana support.......... $enable_manana) AC_MSG_RESULT(Compiling with Prometheon support...... $enable_prometheon) AC_MSG_RESULT(Compiling Expense plugin............... $plugin_support) AC_MSG_RESULT(Compiling SyncTime plugin.............. $plugin_support) AC_MSG_RESULT(Compiling KeyRing plugin............... $keyring_plugin) AC_MSG_RESULT(Compiling dialer add-on................ $dialer) AC_MSG_RESULT(Cryptographic library.................. $crypto_lib) AC_MSG_RESULT(GTK-2 support.......................... yes) AC_MSG_RESULT(Stock buttons (icons on buttons in GUI) $enable_stock_buttons) AC_MSG_RESULT(NLS support (foreign languages)........ $USE_NLS) AC_MSG_RESULT(Compiler Options....................... $CFLAGS) AC_MSG_RESULT(Prefix directory....................... $prefix) AC_MSG_RESULT(pilot-link headers..................... $pilot_incl) AC_MSG_RESULT(USB support enabled.................... yes) AC_MSG_RESULT(pilot-link version found............... $pl_version.$pl_major.$pl_minor$pl_patch) AC_MSG_RESULT() AC_MSG_RESULT(Now type make to compile) AC_MSG_RESULT() jpilot-1.8.2/weekview_gui.c0000664000175000017500000003333112340261240012601 00000000000000/******************************************************************************* * weekview_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include "pi-calendar.h" #include "i18n.h" #include "utils.h" #include "prefs.h" #include "log.h" #include "datebook.h" #include "calendar.h" #include "print.h" #include "jpilot.h" /******************************* Global vars **********************************/ extern int datebk_category; extern int glob_app; extern GtkTooltips *glob_tooltips; GtkWidget *weekview_window=NULL; static GtkWidget *week_day_label[8]; static GtkWidget *week_day_text[8]; static GObject *week_day_text_buffer[8]; static struct tm glob_week_date; /****************************** Prototypes ************************************/ static int clear_weeks_appts(GtkWidget **day_texts); static int display_weeks_appts(struct tm *date_in, GtkWidget **day_texts); /****************************** Main Code *************************************/ static gboolean cb_destroy(GtkWidget *widget) { weekview_window = NULL; return FALSE; } void cb_weekview_quit(GtkWidget *widget, gpointer data) { int w, h; gdk_window_get_size(weekview_window->window, &w, &h); set_pref(PREF_WEEKVIEW_WIDTH, w, NULL, FALSE); set_pref(PREF_WEEKVIEW_HEIGHT, h, NULL, FALSE); gtk_widget_destroy(weekview_window); } /* This is where week printing is kicked off from */ static void cb_week_print(GtkWidget *widget, gpointer data) { long paper_size; jp_logf(JP_LOG_DEBUG, "cb_week_print called\n"); if (print_gui(weekview_window, DATEBOOK, 2, 0x02) == DIALOG_SAID_PRINT) { get_pref(PREF_PAPER_SIZE, &paper_size, NULL); if (paper_size==1) { print_weeks_appts(&glob_week_date, PAPER_A4); } else { print_weeks_appts(&glob_week_date, PAPER_Letter); } } } static void freeze_weeks_appts(void) { int i; for (i=0; i<8; i++) { gtk_widget_freeze_child_notify(week_day_text[i]); } } static void thaw_weeks_appts(void) { int i; for (i=0; i<8; i++) { gtk_widget_thaw_child_notify(week_day_text[i]); } } static void cb_week_move(GtkWidget *widget, gpointer data) { if (GPOINTER_TO_INT(data)==-1) { sub_days_from_date(&glob_week_date, 7); } if (GPOINTER_TO_INT(data)==1) { add_days_to_date(&glob_week_date, 7); } freeze_weeks_appts(); clear_weeks_appts(week_day_text); display_weeks_appts(&glob_week_date, week_day_text); thaw_weeks_appts(); } static int clear_weeks_appts(GtkWidget **day_texts) { int i; GObject *text_buffer; for (i=0; i<8; i++) { text_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(day_texts[i]))); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(text_buffer), "", -1); } return EXIT_SUCCESS; } /* * This function requires that date_in be the date of the first day of * the week (be it a Sunday, or a Monday). * It will then print the next eight days to the day_texts array of * text boxes. */ static int display_weeks_appts(struct tm *date_in, GtkWidget **day_texts) { CalendarEventList *ce_list; CalendarEventList *temp_cel; struct tm date; GtkWidget **text; char desc[256]; char datef[20]; int n, i; const char *svalue; char str[82]; char str_dow[32]; char short_date[32]; char default_date[]="%x"; int now_today; #ifdef ENABLE_DATEBK int ret; int cat_bit; int db3_type; long use_db3_tags; struct db4_struct db4; #endif GObject *text_buffer; char *markup_str; ce_list = NULL; text = day_texts; memcpy(&date, date_in, sizeof(struct tm)); get_pref(PREF_SHORTDATE, NULL, &svalue); if (svalue==NULL) { svalue = default_date; } /* Label each day including special markup for TODAY */ for (i=0; i<8; i++, add_days_to_date(&date, 1)) { strftime(short_date, sizeof(short_date), svalue, &date); jp_strftime(str_dow, sizeof(str_dow), "%A", &date); /* Determine today for highlighting */ now_today = get_highlighted_today(&date); g_snprintf(str, sizeof(str), "%s %s", str_dow, short_date); if (date.tm_mday == now_today) { markup_str = g_markup_printf_escaped("%s", str); gtk_widget_set_name(GTK_WIDGET(text[i]), "today"); } else { markup_str = g_markup_printf_escaped("%s", str); gtk_widget_set_name(GTK_WIDGET(text[i]), ""); } gtk_label_set_markup(GTK_LABEL(week_day_label[i]), markup_str); g_free(markup_str); } /* Get all of the appointments */ get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); memcpy(&date, date_in, sizeof(struct tm)); /* Iterate through 8 days */ for (n=0; n<8; n++, add_days_to_date(&date, 1)) { text_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text[n]))); for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); if (use_db3_tags) { ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); jp_logf(JP_LOG_DEBUG, "category = 0x%x\n", db4.category); cat_bit=1<mcale.cale), &date)) { if (temp_cel->mcale.cale.event) { strcpy(desc, "*"); } else { get_pref_time_no_secs(datef); strftime(desc, sizeof(desc), datef, &(temp_cel->mcale.cale.begin)); strcat(desc, " "); } if (temp_cel->mcale.cale.description) { strncat(desc, temp_cel->mcale.cale.description, 70); /* FIXME: This kind of truncation is bad for UTF-8 */ desc[62]='\0'; } /* FIXME: Add location in parentheses (loc) as the Palm does. * We would need to check strlen, etc., before adding */ remove_cr_lfs(desc); /* Append number of anniversary years if enabled & appropriate */ append_anni_years(desc, 62, &date, NULL, &temp_cel->mcale.cale); strcat(desc, "\n"); gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(text_buffer),desc,-1); } } } free_CalendarEventList(&ce_list); return EXIT_SUCCESS; } /* Called when a day is clicked on the week view */ static void cb_enter_selected_day(GtkWidget *widget, GdkEvent *event, gpointer data) { struct tm date; if (glob_app != DATEBOOK) return; date = glob_week_date; /* Calculate the date which the user has clicked on */ add_days_to_date(&date, GPOINTER_TO_INT(data)); /* Redisplay the day view based on this date */ datebook_gui_setdate(date.tm_year, date.tm_mon, date.tm_mday); } void weekview_gui(struct tm *date_in) { GtkWidget *button; GtkWidget *align; GtkWidget *vbox, *hbox; GtkWidget *hbox_temp; GtkWidget *vbox_left, *vbox_right; GtkAccelGroup *accel_group; long fdow; int i; char title[200]; long w, h, show_tooltips; if (weekview_window) { /* Delete any existing window to ensure that new window is biased * around currently selected date and so that the new window * contents are updated with any changes on the day view. */ gtk_widget_destroy(weekview_window); } memcpy(&glob_week_date, date_in, sizeof(struct tm)); get_pref(PREF_WEEKVIEW_WIDTH, &w, NULL); get_pref(PREF_WEEKVIEW_HEIGHT, &h, NULL); get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); g_snprintf(title, sizeof(title), "%s %s", PN, _("Weekly View")); weekview_window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", title, NULL); gtk_window_set_default_size(GTK_WINDOW(weekview_window), w, h); gtk_container_set_border_width(GTK_CONTAINER(weekview_window), 10); gtk_signal_connect(GTK_OBJECT(weekview_window), "destroy", GTK_SIGNAL_FUNC(cb_destroy), weekview_window); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(weekview_window), vbox); /* Make accelerators for some buttons window */ accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(vbox)), accel_group); /* This box has the close button and arrows in it */ align = gtk_alignment_new(0.5, 0.5, 0, 0); gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, FALSE, 0); hbox_temp = gtk_hbutton_box_new(); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox_temp), 6); gtk_container_set_border_width(GTK_CONTAINER(hbox_temp), 6); gtk_container_add(GTK_CONTAINER(align), hbox_temp); /* Make a left arrow for going back a week */ button = gtk_button_new_from_stock(GTK_STOCK_GO_BACK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_week_move), GINT_TO_POINTER(-1)); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Accelerator key for left arrow */ gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel_group, GDK_Left, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button, _("Last week Alt+LeftArrow"), NULL); /* Close button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_weekview_quit), NULL); /* Closing the window via a delete event uses the same cleanup routine */ gtk_signal_connect(GTK_OBJECT(weekview_window), "delete_event", GTK_SIGNAL_FUNC(cb_weekview_quit), NULL); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Print button */ button = gtk_button_new_from_stock(GTK_STOCK_PRINT); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_week_print), weekview_window); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Make a right arrow for going forward a week */ button = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_week_move), GINT_TO_POINTER(1)); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Accelerator key for right arrow */ gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel_group, GDK_Right, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button, _("Next week Alt+RightArrow"), NULL); get_pref(PREF_FDOW, &fdow, NULL); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); vbox_left = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox_left, TRUE, TRUE, 0); vbox_right = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox_right, TRUE, TRUE, 0); /* Get the first day of the week */ sub_days_from_date(&glob_week_date, (7 - fdow + glob_week_date.tm_wday)%7); /* Make 8 boxes, 1 for each day, to hold appt. descriptions */ for (i=0; i<8; i++) { week_day_label[i] = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(week_day_label[i]), 0.0, 0.5); week_day_text[i] = gtk_text_view_new(); week_day_text_buffer[i] = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(week_day_text[i]))); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(week_day_text[i]), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(week_day_text[i]), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(week_day_text[i]), GTK_WRAP_WORD); gtk_container_set_border_width(GTK_CONTAINER(week_day_text[i]), 1); gtk_text_buffer_create_tag(GTK_TEXT_BUFFER(week_day_text_buffer[i]), "gray_background", "background", "gray", NULL); gtk_widget_set_usize(GTK_WIDGET(week_day_text[i]), 10, 10); gtk_signal_connect(GTK_OBJECT(week_day_text[i]), "button_release_event", GTK_SIGNAL_FUNC(cb_enter_selected_day), GINT_TO_POINTER(i)); if (i>3) { gtk_box_pack_start(GTK_BOX(vbox_right), week_day_label[i], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_right), week_day_text[i], TRUE, TRUE, 0); } else { gtk_box_pack_start(GTK_BOX(vbox_left), week_day_label[i], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_left), week_day_text[i], TRUE, TRUE, 0); } } display_weeks_appts(&glob_week_date, week_day_text); gtk_widget_show_all(weekview_window); } jpilot-1.8.2/icons/0000775000175000017500000000000012340262141011134 500000000000000jpilot-1.8.2/icons/jpilot-icon2.xpm0000664000175000017500000002064412320101153014112 00000000000000/* XPM */ static char * jpilot2[] = { "48 48 234 2", ".. c #240604", ".# c #547664", ".a c #343e3c", ".b c #7c4234", ".c c #7cae9c", ".d c #4c5a54", ".e c #845e4c", ".f c #5c3e34", ".g c #6c9284", ".h c #a45e4c", ".i c #645e64", ".j c #4c1e14", ".k c #74766c", ".l c #a49ea4", ".m c #b4765c", ".n c #44524c", ".o c #945e4c", ".p c #5c5254", ".q c #2c2624", ".r c #648674", ".s c #646a6c", ".t c #b4b2b4", ".u c #a46a5c", ".v c #4c3e3c", ".w c #94523c", ".x c #546a5e", ".y c #c4866c", ".z c #74a28c", ".A c #343237", ".B c #94867c", ".C c #6c423c", ".D c #748a84", ".E c #8c523d", ".F c #946a59", ".G c #7c6a74", ".H c #4c3634", ".I c #b46a54", ".J c #b47e6c", ".K c #746a69", ".L c #3c4644", ".M c #7c4a3c", ".N c #a47661", ".O c #8c9294", ".P c #544e54", ".Q c #647e74", ".R c #a4b2ac", ".S c #546684", ".T c #6c8e80", ".U c #642e24", ".V c #4c625c", ".W c #749a8c", ".X c #845a49", ".Y c #d4d2d4", ".Z c #443234", ".0 c #6c463c", ".1 c #746668", ".2 c #847a7c", ".3 c #6c867c", ".4 c #a47264", ".5 c #8c4a3c", ".6 c #ac7664", ".7 c #547e64", ".8 c #94aea4", ".9 c #5c5a63", "#. c #8c6654", "## c #445664", "#a c #84523f", "#b c #946654", "#c c #646e7c", "#d c #4c4a51", "#e c #94726c", "#f c #74564c", "#g c #3c160c", "#h c #84b6a0", "#i c #8c5e4c", "#j c #a46652", "#k c #64666c", "#l c #bc765c", "#m c #b4c2dc", "#n c #547264", "#o c #3c3a3e", "#p c #848684", "#q c #8c6a5c", "#r c #c47e64", "#s c #844a36", "#t c #6c4e4c", "#u c #643a34", "#v c #74463c", "#w c #749288", "#x c #4c525f", "#y c #9c5e46", "#z c #ac6a54", "#A c #8c5a44", "#B c #9c6e5f", "#C c #b4725c", "#D c #747274", "#E c #a4766c", "#F c #6c8684", "#G c #1c1a1c", "#H c #5c766c", "#I c #3c3e43", "#J c #545a5a", "#K c #7c767c", "#L c #b47a6c", "#M c #7c564c", "#N c #5c565c", "#O c #6c6a6c", "#P c #b4babc", "#Q c #543e3c", "#R c #945a44", "#S c #546e61", "#T c #cc8e74", "#U c #84a294", "#V c #34363b", "#W c #8c5642", "#X c #5c3a34", "#Y c #bc7e64", "#Z c #746a74", "#0 c #44464b", "#1 c #54565c", "#2 c #5c261c", "#3 c #dcdee0", "#4 c #3c2e2c", "#5 c #acaaac", "#6 c #acbab4", "#7 c #c4c2c4", "#8 c #848284", "#9 c #a48274", "a. c #7caa9c", "a# c #743a2c", "aa c #848e8c", "ab c #2c2e30", "ac c #748e84", "ad c #849a94", "ae c #644e44", "af c #743e2c", "ag c #443a3c", "ah c #947674", "ai c #7c727a", "aj c #4c5654", "ak c #2c0a0c", "al c #4c4e54", "am c #bcb6bc", "an c #cc8674", "ao c #543a34", "ap c #6c7e7c", "aq c #7c9e94", "ar c #5c7e6c", "as c #6c6a74", "at c #441a14", "au c #8c8a8c", "av c #745254", "aw c #844634", "ax c #84b29c", "ay c #643e34", "az c #74767c", "aA c #7c8684", "aB c #946e64", "aC c #acaeac", "aD c #6c2e24", "aE c #54665c", "aF c #44424c", "aG c #644a3c", "aH c #7ca294", "aI c #846a6c", "aJ c #744e3f", "aK c #ac725e", "aL c #9c7264", "aM c #ac664e", "aN c #6c6670", "aO c #5c726c", "aP c #6c3a2c", "aQ c #9c6654", "aR c #bc725c", "aS c #bcbabc", "aT c #9c5a44", "aU c #846254", "aV c #646267", "aW c #b47a64", "aX c #648a74", "aY c #646e64", "aZ c #945644", "a0 c #4c3a3c", "a1 c #b46e57", "a2 c #7c4e3e", "a3 c #a47a64", "a4 c #545258", "a5 c #6c4a40", "a6 c #6c8a78", "a7 c #444244", "a8 c #5c5e64", "a9 c #845644", "b. c #84baa4", "b# c #8c6250", "ba c #bc7a64", "bb c #c4826c", "bc c #844e3c", "bd c #744a3d", "be c #749689", "bf c #9c624c", "bg c #ac6e59", "bh c #3c4244", "bi c #544244", "bj c #bc826c", "bk c #444a4c", "bl c #64524c", "bm c #744234", "bn c #547a64", "bo c #7c4634", "bp c #7cb29c", "bq c #4c5e54", "br c #a4624c", "bs c #94624c", "bt c #a46e5c", "bu c #4c423c", "bv c #b4826c", "bw c #648274", "bx c #749e8c", "by c #443634", "bz c #847e7c", "bA c #8c4e3c", "bB c #a47a6c", "bC c #6c8a84", "bD c #5c7a6c", "bE c #746e74", "bF c #5c2a1c", "bG c #4c5254", "bH c #cc8a74", "bI c #5c826c", "bJ c #747a7c", "bK c #6c3224", "bL c #845e54", "bM c #b47664", "bN c #7c5244", /* pixels */ "#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m#m#m#mal#o#I.A#o#oby#o#o#o.Aby#V#o#o#o#o#I#I#o#V#o#V#V#oal#m#m#m#m#m#m#m#m#m", "#m#m#m#P#m#m#P#m#m#P#m#maj.s.P.P#P#5#6.R#d.P.P.P.P.Pal.P.P.Pa4.PaV#7aC.Ybz#d#V#m#m#m#P#m#m#P#m#m", "#m#m#m#m#m#m#m#m#m#m.1bAbmasa4a4aAau.Oaaa4.P#xa4a4.Pa4a4#xa4a4#x.9aa.O.OaV#x#d#m#m#m#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#mbB#C.h.b#Za4.P#dbk#d#0aF#0#0#0bh#0#0#0#0#0#d#0aF#I#IaFa4a4#d#m#m#m#m#m#m#m#m#m", "#m#m.R#m#m#m#m#m#m.6a1.h.b#Z#1al.Vbn#H.#.#bD.##H.#.##H.#.#.#.#.#.#.#.#.#ap#1#d#m#m#m#m#m#m#m.R#m", "#m#m#m#m#m#m#m#m#m#EaM.h.b#Z#1al.#ar.7arbnarbnbnbDbn.7bnbnbDbnbDbnbDbnaO#F.9aF#m#m#m#m#m#m#m#m#m", "#m#m#m#m#m.R#m#m#m#m#iaT.M#Z.9.P#SarbnbnbD.7bD.7bn.7bDbnbn.7bn.7bnbnbnbD#F#N#d#m.q#t.C#g#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m.i.wa2bEa8a4.xarbnarbnbDbnbnbDbnbnbnbDbnbDbnbD.7bD.7.Da8a4agaPbfaZbm#m#m#m#m", "#m#m#m.R#m#m#m#m.H.h.h.U#Xas.i#1.x.7bDbnbn.7bnarbnbnbn.7bn.7bn.7bnbnbnar.Da8a0#g.w#zaTbf#m#m#m#m", "#m#m#m#m#m#m#m#x.uaMbr.5aGbEa8a4.xbDbn.7bnbDbnbn.7bnbD.abnbDbnbD.#.abnarbCaVagataT#z.h.u#m#m#m#m", "#m#m#m#m#m#m#m#B.IaKaMaTbcbE#k#1#S.7bDbn.#bnbnbDbn.abn.abDbnbnbn.a.a.abD.DaV.vbF#jaMaT#C#m#m#m#m", "#m#m#m.R#m#m#mbM#C#E#l#C.Easas#1#narbn.a.#.a.a.Vbn.Vbn#V.#.V.a.V.##obn.7aca8a0aD#jaMbA.u#m#m#m#m", "#m#m#m#m#m#m#m.2aMbabb#C.5#O#k#N#nbnbnbD.#.abD#Vbn.abn.abn#Vbn#Vbn.abnar.DaV.vbKaMaMaTaM#m#m.R#m", "#m#m#m#m#m#m#m#maLba#rbr.b#Z#O#1#nbDbn.a.#.a.#.abn.abD#Vbn.abn.a.#.abnbDbC#k.vbKaMaMaZaT#m#m#m#m", "#m#m#m#m#m#m.RaI.oaTaT.baobE.s#J.#.#.##Vbn#V.abqbD.abn.abq.V#V.Var.V.aar.Da8a0.U.haMaTav#m#m#m#m", "#m#m.R#m#m#m.1#zaM.w.b.j.Z#K#k#N.#bn.#.abn.abn.7bnbnbnarbnar.7bDbnbnbD.7.D.i.v.U#y.h.o#v#m#m#m#m", "#m#m#m#m#m#Z#LaRaMaMbAbFay.2.s#1#n.abn.abD.abDbnarbDbnbnbD.7bD.7bnbDbnar.Da8.v.U.Ebs.oa2#m#m#m#m", "#m#m#m#m#m#9bb#r#LbM#CaT#abE.s#N#n.V#Ibq.7#V.7bDbn.7bnarbnbD.7bDar.7bnarbCaVag#2#s#R.EaG#m#m#m#m", "#m#m#m#m#mahba#Y#rbHba#Ca9bEaN#1.#bDbnarbnarbnbnarbnbD.7bD.7ar.7arbD.7ar.Da8.v#2aw#b.Ebd#m#m#m#m", "#m#m#m#m#malaBba#Cba.y.IbN#K.s#N.#.7bDbnbnbD.7bDbnarbnbDbnararbnarbnbnar.Da8a0#2aw#b.E.C#m#m#m#m", "#m#m#m#m#m#m###ya1#C#laZbd.2#ka4#Sar.7bD.7bnbDbn.7bnbD.7ar.7arbnarbnbD.7#F.9.vaPbcbs#i#t#m#m#m#m", "#m.R#m#m#m#m#Dba#zaZ.bak.Z.2#k.9.xarbD.7bDar.7bDbnarbnbnbnbDarbnarbnbnar.Da8.va#aw#b#i.0#m.R#m#m", "#m#m#m#m#m#m.6#la1br.b..#o#Kas.9#nbnarbnarbn.7bD.7bDbnarar.7ararbnbnar.7#F.i.va#bcbs#i#t#m#m#m#m", "#m#m#m#m#m#e.y#Ya1aK#A#2bi.2.s.9.r.r.#.raXbIbIbIbIbIbIarbIarbIbIbIbwaraX.D.9.va##aaL.obd#m#m#m#m", "#m#m#m#m.RahaR.y#L.J#zawa5#K#k#1aHaabq#HaHb.b.b.b.b.b.bp#ha.b.b.#w.n.V.g#F.i.va#bcaLbsa2#m#m#m#m", "#m#m#m#m#m.paQ#rbabb.ybg#MbE#k#N.ga6aj.d.zb.b.b.b.b.b.b.b.b.b.b..g.a.n.QbJ.9.va#a9.u#bbc#m#m#m#m", "#m#m#m#m#m#m#q.h#l#lbbbraJ#K#O#1ac.zbw.TaHb.b.b.b.b.b.b.b.b.b.b..WbDar.r#K.9.vaf.X#j.obc#m#m#m#m", "#m#m#m#m#m#m#m#jaMbr.E.U#u#K#k#Nac.8#w.c.zb.b.b.b.b.b.bpb..c.W.c.g#HbDbeap#Nbia2.oaQbs.M#m#m#m#m", "#m#m.R#m#m#m#m#Q.4aT.EbK.MbE#O#1.3#UbDaraqbpb.b.b.b.b.bpa..WaHa.a6.L.a.D#K#Jaebc#A#bb#bd#m#m#m#m", "#m#m#m#m#m#m#m#m.BaM.E.b#ybEaV#1a6adbq.3.g.zb.b.b.b.b.b.#hax#hbx.r#HaObeai.9.Ca2.o#b.Eab#m.R#m#m", "#m#m#m#m#m#m#m#m#m#z.h#la1aia8a4a4.x.xaE.Vbqbqbqbq.n#dalbkalbk#dalbqbG#1aNa8.Ca9#b#..0#m#m#m#m#m", "#m#m#m#m#m#m#m#m#maL.mbb#Lbz.9#1.9.9.9#1#N#1a4#1a4bGa4a4.Pa4alalal#1a4#1.9.9aJ.e#bbsao#m#m#m#m#m", "#m#m#m.R#m#m#m.R#m.sbababM.2a4.9.9ala4#1#1#1a4a4a4a7a7alalalal.Pala7a7ala4#xbL#b#.a9#4#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#mbLbb#Y#fbka4#Iab#0#N.P#0#o#d#0#o#G#Va7#0#0#da7#VaF#dala7.e#bbsaJ#G#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m#mbabb#e.g.nbkaC.la8#V#8.k#k#Nalab.Aab#3am#OalaS.t.9#1#V.e#.#A.M#m#m#m.R#m#m", ".R#m#m#m#m.R#m#m#m#m#maWbb.Nb..raj.laz#N#0#p#5#daVa8#d#0#d#3aS#O#0#DaNa8al#V.X#b#iaP#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m.R#m.GbM.m.L#xa4al#ka8#1#d#da8bkbE#da7a4#0a8#1#0bkal#0#o.A.e#ba9.0#m#m#m#m#m#m", "#m#m#m.R#m#m#m#m#m#m#m#m#Bbjbk#dala4#1#1#N#N#1#N#d.9al#dbG#d#d#d#0#0#o#o.Aby.e#.#Wbi#m#m#m#m#m#m", "#m#m#m#m#m#m.R#m#m#m#m#m.p#Lbu#V#o#o#oaF#0aFaFaF#0#0#da7#o#o#V#V#o.A.A#VagaJ#bbsbc.f#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m#m#m#m#.#Y#L#B.Xa2aJ#vaPaP.CaybdaJbd#a.eb##i.e.e.e.e#b.F#.bsbo.Z#m#m#m.R#m#m", "#m#m#m#m#m#m#m#m#m#m#m#m#m#mbabH#TbH#Y#l#z.haTaTaZ#z#z#C#r#rbbbbbb.Ja3bB#E#B.o#aa5.q#m#m#m#m#m#m", "#m#m#m#m.R#m#m.R#m#m.R#m#m#mblbvbH#TbHbb#CaM#z#zbr#C#l#l#Y#Y#rbababa#L.N.N.F#aa2bd#m#m#m#m#m#m#m", "#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#t#Y#TbH#TanbabaaRa1aR#l.m#rbbbbba#l#zaK.F.F.oaZb##M#x#m#m#m#m#m#m", ".R#m#m#m#m#m#m#m#m#m#m#m#m#m#m#maUbabHbH.ybbbbbabbbb#rbabb.ybb#l.m#l.IaQ#b#b#b#.aN#1#m#m#m#m#m#m", "#m#m#m#m.R#m#m.R#m#m#m#m#m.R#m#m#m#EbabbbHbbbbbabbbb#Y#r#rbaba#l#l#l#Cbt.F#b#..G#O#1#m#m#m#m.R#m", "#m#m#m#m#m#m#m#m#m#m.R#m#m#m#m#m#m#m#B#l#T.ybbbb.ybb#r#Yba#l#l#l.m#l.6.N#q.K.KaY#c.S#m#m#m#m#m#m" }; jpilot-1.8.2/icons/sync.xpm0000664000175000017500000000174512320101153012556 00000000000000/* XPM */ static char * sync_xpm[] = { "27 24 7 1", " c None", ". c #020043", "+ c #6B0000", "@ c #002EC9", "# c #9D0505", "$ c #F71711", "% c #00A0FF", " ", " ++++ ", " ++++ . ", " +#+ .@.. ", " +#+ .%@@@. ", " +#+ .%@%@@@. ", " +#+ . .%@%@@@@@. ", " +#+ ..%%%@..@@@. ", " +##+ .%%%.. .@@@. ", " +#+ .%%%. .@@. ", " +#+ ...... .@@. ", " +#+ .@. ", " +#+ .@. ", " +##+ ++++++ .@. ", " +##+ +$$$+ .@. ", " +###+ ++$$$+ .@@. ", " +###++#$$$++ .@. ", " +#####$#$+ + .@. ", " +###$#$+ .@. ", " +###$+ .@. ", " ++#+ .@. ", " + .... ", " .... ", " " }; jpilot-1.8.2/icons/lock_icons.h0000664000175000017500000000541412340261240013353 00000000000000/******************************************************************************* * lock_icons.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* Private records locked icon */ static char *locked_xpm[] = { "15 18 4 1", " c None", "b c #000000000000", "g c #777777777777", "w c #FFFFFFFFFFFF", " ", " bbbbb ", " bwwwwwb ", " bwbbbbbwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bbbbbbbbbbbbb ", " bwwwwwwwwwwwb ", " bgggggggggggb ", " bwgwwwwwwwgwb ", " bggwwwwwwwggb ", " bwgwwwwwwwgwb ", " bgggggggggggb ", " bwwwwwwwwwwwb ", " bbbbbbbbbbbbb ", " " }; /* Private records masked icon */ static char *masklocked_xpm[] = { "15 18 4 1", " c None", "b c #000000000000", "g c #777777777777", "w c #FFFFFFFFFFFF", " ", " bbbbb ", " bwwwwwb ", " bwbbbbbwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bbbbbbbbbbbbb ", " bwwbbwwbbwwbb ", " bbbwwbbwwbbwb ", " bwwbbwwbbwwbb ", " bbbwwbbwwbbwb ", " bwwbbwwbbwwbb ", " bbbwwbbwwbbwb ", " bwwbbwwbbwwbb ", " bbbbbbbbbbbbb ", " " }; /* Private records unlocked icon */ static char *unlocked_xpm[] = { "21 18 4 1", " c None", "b c #000000000000", "g c #777777777777", "w c #FFFFFFFF0000", " ", " bbbbb ", " bwwwwwb ", " bwbbbbbwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bwb bwb ", " bbbbbbbbbbbbb ", " bwwwwwwwwwwwb ", " bgggggggggggb ", " bwwwwwwwwwwwb ", " bgggggggggggb ", " bwwwwwwwwwwwb ", " bgggggggggggb ", " bwwwwwwwwwwwb ", " bbbbbbbbbbbbb ", " " }; jpilot-1.8.2/icons/appl_menu_icons.h0000664000175000017500000001333212340261240014401 00000000000000/******************************************************************************* * appl_menu_icons.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ static const char *todo_menu_icon[]={ "14 14 38 1", "# c None", ". c #000000", "a c #ffffff", "b c #f7f3f7", "c c #636563", "d c #adaaad", "e c #e7e3e7", "f c #c6c7c6", "g c #737573", "h c #b5b6b5", "i c #d6cfce", "j c #5a5d5a", "k c #5a595a", "l c #525552", "m c #c67d7b", "n c #ad7173", "o c #ad7d7b", "p c #9c9a9c", "q c #bd5d5a", "r c #9c0000", "s c #ad4142", "t c #a51c18", "u c #b54d4a", "v c #efd7d6", "w c #b53c39", "x c #ad3431", "y c #d69294", "z c #a52021", "A c #dea6a5", "B c #9c0808", "C c #b54542", "D c #bd5552", "E c #a51410", "F c #ad2421", "G c #ad2c29", "H c #ad2829", "I c #bdbebd", "J c #b5b2b5", "...........###", ".aaaaaaabcd.##", ".aaaaaaafgah.#", ".aaaaaaaijkl.#", ".aaaaaaamnop.#", ".aaaaaaqrsah.#", ".atuaavrwaah.#", ".axryazraaah.#", ".aABryrwaaah.#", ".aaCrDraaaah.#", ".aaAErFaaaah.#", ".aaaGHaaaaah.#", ".aIhhhhhhhhJ.#", ".............#"}; static const char *addr_menu_icon[] = { "16 16 43 1", " c None", ". c #000000", "+ c #BDBEBD", "@ c #FFFFFF", "# c #A5A2A5", "$ c #FFFBFF", "% c #CEB69C", "& c #8C7152", "* c #846D52", "= c #BDB2A5", "- c #EFEBE7", "; c #F7F3F7", "> c #AD8E6B", ", c #DED3BD", "' c #5A4129", ") c #7B6D5A", "! c #313031", "~ c #525552", "{ c #EFDFCE", "] c #F7EFE7", "^ c #735D42", "/ c #736152", "( c #7392AD", "_ c #C6655A", ": c #425973", "< c #D6D7D6", "[ c #ADAEAD", "} c #9C9A9C", "| c #4A6984", "1 c #9CBAD6", "2 c #4A6584", "3 c #314D6B", "4 c #63798C", "5 c #5A7D94", "6 c #5A7994", "7 c #39556B", "8 c #314963", "9 c #EFEFEF", "0 c #C6C7C6", "a c #5A5D5A", "b c #7B797B", "c c #E7DFD6", "d c #948E84", " .............. ", ".+@@@@@@@@@@@@#.", ".@$%&*=@@@$@@@-.", ".@;>,')@!~@~@@-.", ".@;{]^/@@@@@@@-.", ".@$(_:<@[@}[@@-.", ".@|1234@@@@@@@-.", ".@56|78@}}90@@-.", ".@@@@@@@@@@@@@-.", ".@@a@a@b@}@0@@c.", ".#-----------cd.", " .............. ", " ", " ", " ", " "}; static const char *date_menu_icon[] = { "16 16 68 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #E7E3E7", "# c #C6C3C6", "$ c #F7F3F7", "% c #FFFBFF", "& c #ADAAAD", "* c #525152", "= c #101410", "- c #101010", "; c #393839", "> c #6B6D6B", ", c #ADAEAD", "' c #737173", ") c #5A5D5A", "! c #424142", "~ c #BD8E31", "{ c #EFB239", "] c #423010", "^ c #E7E7E7", "/ c #B5B6B5", "( c #636163", "_ c #DEDBDE", ": c #737573", "< c #4A494A", "[ c #EFB639", "} c #F7D794", "| c #F7BA42", "1 c #946D21", "2 c #A5A2A5", "3 c #949294", "4 c #FFE7BD", "5 c #FFD784", "6 c #FFC342", "7 c #CECFCE", "8 c #080808", "9 c #BDBABD", "0 c #BD8A31", "a c #FFE3B5", "b c #FFD78C", "c c #D6D3D6", "d c #313431", "e c #8C8A8C", "f c #313029", "g c #CECFBD", "h c #E7AE39", "i c #FFDFA5", "j c #FFCB5A", "k c #D69E31", "l c #F7F7F7", "m c #392808", "n c #8C6D21", "o c #292008", "p c #8C8E8C", "q c #C6C3AD", "r c #DEDFDE", "s c #CECBCE", "t c #C6C7C6", "u c #393C31", "v c #ADAE9C", "w c #D6D7D6", "x c #BDBEBD", "y c #B5B2B5", "z c #424542", "A c #A5A6A5", "B c #9C9A9C", "C c #9C9E9C", " ......... ", " .+++++++@#. ", " .+$$$$$$#%&. ", " .*=.-;>$,')!.", " ..~{]^/.(_:<=.", " ..[}|1%$^.(/23.", " .[4566+789.2^3.", ".0ab666cde$&fg3.", ".hij66kde+l_-^3.", ".mn666o>++pd.q3.", ".r$+++cd&+$s-^3.", ".&@l+++c<%t2uv3.", " .7wl%+%l79.2^3.", " ..x9s:s,y.)t^3.", " ..2,zAB. c #111111", ", c #0D0D0D", "' c #C0C0C0", ") c #080808", "! c #808080", "~ c #040404", "{ c #1B1FE8", "] c #870C0C", "^ c #DC261E", "/ c #E52920", "( c #DB251D", "_ c #D1221B", ": c #CB211A", "< c #BA1B16", "[ c #B11915", "} c #F2DE09", "| c #8F0E0D", "1 c #D3231C", "2 c #C21E18", "3 c #A91613", "4 c #A01311", "5 c #98110F", " +++++++++++++++", "++++++++++++++++", "++@@@@#$%&*=@@@@", "++@@-;#$%&*>=@@@", "++@@-;#$%&*>,=@@", "++@@-'..%&*>,)=@", "++@@@-!.'+*>,)~=", "++@@-'{'..!>,)~=", "++@@-'.....>,)~=", "++@@@-'...!>,==@", "++@@@-....=>,=@@", "++@@@-''''!=,=@@", "++@@@@]=!!!!====", "++@@@^]!'.'']]@=", "++@@/(_:'<[]}}|]", "++@@/^1:2<[345|]"}; jpilot-1.8.2/icons/Makefile.am0000664000175000017500000000025412320101153013102 00000000000000icondir = $(datadir)/doc/$(PACKAGE)/icons icon_DATA = \ jpilot-icon1.xpm \ jpilot-icon2.xpm \ jpilot-icon3.xpm \ jpilot-icon4.xpm \ README EXTRA_DIST = $(icon_DATA) jpilot-1.8.2/icons/memo.xpm0000664000175000017500000000534212320101153012534 00000000000000/* XPM */ static char * memo_xpm[] = { "40 40 65 1", " c None", ". c #020202", "+ c #EEEEEE", "@ c #9A9A9A", "# c #4E4E4E", "$ c #363636", "% c #828282", "& c #262626", "* c #B2B2B2", "= c #727272", "- c #1A1A1A", "; c #DADADA", "> c #626262", ", c #121212", "' c #3E3E3E", ") c #C2C2C2", "! c #F2F2F2", "~ c #5A5A5A", "{ c #F6F6F6", "] c #929292", "^ c #424242", "/ c #2A2A2A", "( c #FAFAFA", "_ c #C6C6C6", ": c #0E0E0E", "< c #525252", "[ c #6E6E6E", "} c #464646", "| c #A6A6A6", "1 c #7A7A7A", "2 c #2E2E2E", "3 c #CACACA", "4 c #0A0A0A", "5 c #8A8A8A", "6 c #FEFEFE", "7 c #CECECE", "8 c #BABABA", "9 c #E6E6E6", "0 c #1E1E1E", "a c #666666", "b c #5E5E5E", "c c #D6D6D6", "d c #A2A2A2", "e c #565656", "f c #DEDEDE", "g c #060606", "h c #161616", "i c #AEAEAE", "j c #323232", "k c #767676", "l c #E2E2E2", "m c #4A4A4A", "n c #D2D2D2", "o c #868686", "p c #7E7E7E", "q c #969696", "r c #BEBEBE", "s c #9E9E9E", "t c #222222", "u c #B6B6B6", "v c #8E8E8E", "w c #6A6A6A", "x c #3A3A3A", "y c #EAEAEA", "z c #AAAAAA", " [[mj-0jma ", " 4.............[ ", " e.......h&0:.......m ", " .....2<~~>>b>~#x0.....1 ", " >....'>=wb+66qebeb~#2..g.e ", " j...$bpv5a66r(6n~~~##e^0::.j ", " j...m1](66!67eey)~e~e#}mmjhhg2 ", " >...bp1(6yl66)e5%~a~b~e#}''/0&g' ", " >...*6666([~r;596]>u>~~ee}x2'0t&.e ", " ...o66l(6)e]na]6ie16se~~76((6666l)c66q<66#'/k66.m^$ ", " ..x>ee+66=|6{{{6685k>en6lu6u'$'66[.2ej ", " ..me~>e6(66((6675%opaa!6666#}2y66:g&~^ ", "a..~e76((|ak=sn66{8~n6lm^b66m-0-.#be", "2.&<<#~b~e66c<18(66!sae<(6~#'66s,t0,.e>e", "h.2#}e~eeb@6{96667kb~eb+6n}xz6+-/0hh.#a~", "h./m}#e~~be96667~~~~%l666#m#66j/&0-:.#=~", "/.&m^m#e~~e1668~ee5966(6sm'!6}&t&0-:.b=e", "m.0'^^}", "a..$$'m}#e<~p6{c66(p<[65^^66+&&0-0:..[= ", " ..2$x'^##<#e(666s~#}66^j+6(6200-:g..p1 ", " ..t$$$'^m}#^r66~mm'f6@/o6({6a:-hg..}o% ", " ...jj$$$'^}^=6r2^#y66/x6{((68.,,...v|o ", " a..&//j$$x'x^66@)666kh66({{66:4....*dp ", " ..:&t/j2$x$/n666((6)n6+(({6{^....@3s ", " #.g-0&t&j2$&q((({{{6((({66(b....2n85 ", " .:h-00t&&/0a6{{({({6{66(q...g..ffr ", " =.-0,-0000h}6(({({((6(s.......8ln% ", " m.00.:---,'66({(66!v........z!fs ", " /.t0..,h.j6({66;kg........8yfu ", " /g224...}66(_m.........:7fnu ", " '.jx2..m6_4..........%3fnd ", " -&x}$...........h1*_r*p ", " ^&j#<#}'$j2'w[[=1=[p51 ", " e<<~~>ee "}; jpilot-1.8.2/icons/cancel_sync.xpm0000664000175000017500000000165012320101153014056 00000000000000/* XPM */ static char * cancel_sync_xpm[] = { "27 24 9 1", " c None", ". c #E30000", "+ c #6B0000", "@ c #020043", "# c #9D0505", "$ c #002EC9", "% c #00A0FF", "& c #002DC8", "* c #F71711", " ", " . ++++ . ", " ... ++++ @ ... ", " .....#+ @$@..... ", " ..... @%$..... ", " ..... @%$..... ", " +#.....@ @%$.....$@ ", " +#+.....@%%.....$$@ ", " +##+ .....%.....@&$$@ ", " +#+ ......... @$$@ ", " +#+ ....... @$$@ ", " +#+ ....... @$@ ", " +#+ ....... @$@ ", " +##+ ....... @$@ ", " +##+ ......... @$@ ", " +###+.....*..... @$$@ ", " +##.....**+.....@$@ ", " +#.....#*+ +.....$@ ", " .....#*+ ..... ", " .....#*+ ..... ", " .....+#+ @$..... ", " ... + @@@@ ... ", " . @@@@ . ", " "}; jpilot-1.8.2/icons/backup.xpm0000664000175000017500000000212412320101153013037 00000000000000/* XPM */ static char * backup_xpm[] = { "27 24 13 1", " c None", ". c #454545", "+ c #B2B2B2", "@ c #000000", "# c #FFFFFF", "$ c #315D00", "% c #29B218", "& c #18B210", "* c #52B631", "= c #42B629", "- c #31B221", "; c #08AE08", "> c #848284", " ", " ............. ", " .+++++++++++++@ ", " .+@@@@@@@@@@@+@ ", " .+@....#####@+@ ", " .+@.........@+@ ", " .+@#########@+@ ", " .+@#@#@@@@@#@+@ $$ ", " .+@#########@+@ $%$ ", " .+@#@#@@@@@#@+@ $%$ ", " .+@#########@+@ $%&$ ", " .+@########$$$$$$%&$ ", " .+@@@@@@@@@$**=-%%&&$ ", " .+@++++@+++$**=-%%&&$ ", " .+@++++@+++$**=-%%&&;$ ", " .+@@@@@@@@@$**=-%%&&;$>", " .++++++++++$**=-%%&&$>>", " .+..+..+..+$**=-%%&&$> ", " .+..+..+..+$$$$$$%&$>> ", " .++++++++++>>>>>$%&$> ", " @@@@@@@@@@@@@ $%$>> ", " $%$> ", " $$>> ", " >> " }; jpilot-1.8.2/icons/todo.xpm0000664000175000017500000000534212320101153012544 00000000000000/* XPM */ static char * todo_xpm[] = { "40 40 65 1", " c None", ". c #020202", "+ c #EEEEEE", "@ c #9E9E9E", "# c #525252", "$ c #363636", "% c #2A2A2A", "& c #868686", "* c #B6B6B6", "= c #1E1E1E", "- c #727272", "; c #CACACA", "> c #161616", ", c #666666", "' c #424242", ") c #F6F6F6", "! c #D2D2D2", "~ c #5E5E5E", "{ c #0E0E0E", "] c #FAFAFA", "^ c #DEDEDE", "/ c #464646", "( c #7E7E7E", "_ c #969696", ": c #A2A2A2", "< c #323232", "[ c #3A3A3A", "} c #C2C2C2", "| c #0A0A0A", "1 c #FEFEFE", "2 c #262626", "3 c #6E6E6E", "4 c #7A7A7A", "5 c #565656", "6 c #4E4E4E", "7 c #E6E6E6", "8 c #8A8A8A", "9 c #AEAEAE", "0 c #5A5A5A", "a c #626262", "b c #BEBEBE", "c c #1A1A1A", "d c #D6D6D6", "e c #060606", "f c #A6A6A6", "g c #8E8E8E", "h c #4A4A4A", "i c #2E2E2E", "j c #AAAAAA", "k c #BABABA", "l c #222222", "m c #828282", "n c #3E3E3E", "o c #E2E2E2", "p c #767676", "q c #121212", "r c #C6C6C6", "s c #DADADA", "t c #6A6A6A", "u c #CECECE", "v c #929292", "w c #9A9A9A", "x c #EAEAEA", "y c #F2F2F2", "z c #B2B2B2", " 3.h=={.......h ", " .....i#0~,t,~06[=.....6 ", " <....h,4tt,aa55#5506i..e.6 ", " <...$,43-p~aa(j^11+6/5'={q.< ", " <...#pt(,5,g})1111]11//h/<>=e% ", " <...0pp,53*+11]])])))]7h'n'i==|n ", " <...0-a5(}111b7]])]]1])1f''n[%%%e5 ", " ...6-0,;111]d5z1)11)xo]]15'n$<2$%q ", " 5..n-5k11)))1@p^11}_(05&111[n[i=%[2' ", " ...~j]1])]1]]g_)1_aa5~091)1m[n$%>n[2 ", " -..6t_1)]1!u1dgk1sa-f;+11])11$ni%>%/<5 ", " ...~00j1)18ak@@^]);s111]])]]1mi$%={h'[ ", " ..[,5a5s1]1f3g8]1]11])))]1)117<<%=e<5< ", "m..h050~~]1)1+_u11)))))]11j0y]1#%%=|l0'5", ",..#505~~v1)]]11^jb1]11+b,5[;1]w2%=q.#65", "/.>#55~~~5^1))xgt-571s-5556f1]1y%%=>.6a5", "i.%#6500~~-1]+33(b-31b604j+1]))1[c=q.#,5", ">.i6h555000b11(011^5u111111))]]1m{=>.#,0", ">.%h/650~~0-11z0]1j5_1]11]])1)11}{>>.6-0", "%.2/'h6500~5d115,g00+1)])))]1}1))c{{.~-5", "h.cn''/650~5811g55f111)]1]17hcg11$...,-a", "~..[[nhh6##50)11d11!8u1]1z~$2>71]a...--0", "-..<[[['6665#b111;0#/51dn<%=n)1)1f...44 ", " ..=$$nn'hh6/m11p'/#6'+x['md11)]^2..'m( ", " ..ei!]]11u%.e....i!b8 ", " .{>c>=l=%=$1)x$#f1111b6..e..e..^^} ", " -.>cc>c>=c[11111111*'..e......k7! ", " 6.==.ccc.-1]1]1!&[..e|...e..fy^@ ", " i.2=..{=11xk4[...e........kxsz ", " %e=[/${..........>4z}**& ", " 2 c #4A4A4A", ", c #161616", "' c #EEEEEE", ") c #4E4E4E", "! c #727272", "~ c #F2F2F2", "{ c #A2A2A2", "] c #525252", "^ c #0E0E0E", "/ c #DADADA", "( c #C2C2C2", "_ c #5E5E5E", ": c #6E6E6E", "< c #FEFEFE", "[ c #969696", "} c #868686", "| c #0A0A0A", "1 c #2E2E2E", "2 c #BABABA", "3 c #3A3A3A", "4 c #D2D2D2", "5 c #5A5A5A", "6 c #666666", "7 c #222222", "8 c #7E7E7E", "9 c #B2B2B2", "0 c #E2E2E2", "a c #AAAAAA", "b c #767676", "c c #9A9A9A", "d c #565656", "e c #060606", "f c #323232", "g c #1A1A1A", "h c #121212", "i c #464646", "j c #262626", "k c #FAFAFA", "l c #A6A6A6", "m c #6A6A6A", "n c #B6B6B6", "o c #828282", "p c #DEDEDE", "q c #8A8A8A", "r c #D6D6D6", "s c #9E9E9E", "t c #3E3E3E", "u c #CECECE", "v c #BEBEBE", "w c #929292", "x c #C6C6C6", " 6>fg7f>6 ", " |.............6 ", " .......,j,^.......> ", " .....1]5_6$$$]=je..... ", " $....i$bm$$__6a/<<93j..|.] ", " f...f6;:!$$@%if,,e1 ", " $...5;:ddxk<~kkkk<=t ", " ..3$d__ok[$b9-@9q<@g7ef)f ", "o..>$]$$_$m:/k~{o2<~e,1|.]65", ",.j)>)dd$]c)))-):=3sm,>i'kk~k<+*>k<^:'....@l} ", " 6..7#7(kkk4:=t3&)<~k~kk.e,^! contributed jpilot-icon1.xpm, Judd reduced the amount of colors vik vik@asi.org contributed jpilot-icon2.xpm Robert Anderson made icon2 background clear -> icon3 Judd Montgomery took icon1, lightened it, and reduced it to 16 colors and named it icon4 jpilot-1.8.2/icons/address.xpm0000664000175000017500000000527012320101153013224 00000000000000/* XPM */ static char * address_xpm[] = { "40 40 62 1", " c None", ". c #020202", "+ c #F6F6F6", "@ c #8A8A8A", "# c #424242", "$ c #2A2A2A", "% c #D2D2D2", "& c #6E6E6E", "* c #1E1E1E", "= c #4E4E4E", "- c #BABABA", "; c #161616", "> c #5E5E5E", ", c #A6A6A6", "' c #323232", ") c #7E7E7E", "! c #0E0E0E", "~ c #9A9A9A", "{ c #E6E6E6", "] c #525252", "^ c #3E3E3E", "/ c #FAFAFA", "( c #727272", "_ c #666666", ": c #4A4A4A", "< c #CECECE", "[ c #0A0A0A", "} c #222222", "| c #8E8E8E", "1 c #DEDEDE", "2 c #767676", "3 c #5A5A5A", "4 c #CACACA", "5 c #FEFEFE", "6 c #AEAEAE", "7 c #363636", "8 c #626262", "9 c #EEEEEE", "0 c #1A1A1A", "a c #A2A2A2", "b c #868686", "c c #969696", "d c #BEBEBE", "e c #2E2E2E", "f c #060606", "g c #DADADA", "h c #262626", "i c #7A7A7A", "j c #121212", "k c #6A6A6A", "l c #464646", "m c #828282", "n c #565656", "o c #E2E2E2", "p c #C2C2C2", "q c #D6D6D6", "r c #929292", "s c #9E9E9E", "t c #3A3A3A", "u c #F2F2F2", "v c #B2B2B2", "w c #AAAAAA", " &:'0}':_. ", " i[............._ ", " 3.......;**!.......: ", " .....h]3>_&_83=t*..... ", " 8...q512k___>>>>883=h..f.n ", " '...e4555c8&k_888nn]=n#*[j.' ", " '...~p82555)_&(&>>>3]=l::';0.e ", " 8...k5553@555_2&8&8383n=l##e}}[^ ", " ...3{5+553p55~i))&_>333==#^7eh}. ", " ...=&+5//5<_55d2)ii&_833n=#t7'h7$j ", " n..^(35+++/5kq5-mbm2i__33n=:#tehe7h ", " ..._83u5+++/d,5c|r))2&_83n=l#^7h;^th ", " ..:k33p5/+/5%c~~cr@)i&_33nn=#7e$;hl' ", " ...83>3|5/++5qc,~~|bm2&8>33=l#^7$}!:#^ ", " ..t_n8>>5/5u51ra~crbii&8>>nn=#^7$}f']' ", " ..l838>n%5+/5{r~c|@@)2k_33n=l#t7h*!*3# ", "_..=]]>>>@5++/5a@r@bi2(&>33n=l^t'h}j.]= ", "l.;nnn833>{5/+5gkb@mii&>3>3==l#7eh*0.=8n", "e.h]==38n>~5+//5~&i22(>k>3n]l#t7eh*j.]_n", ";.e==n]>>8n95++552&i&33nn3]=:t^'$*0;.]_3", ";.$=l=nn338)5+//55n>>i55c:=l#t7eh*0j.]&3", "}.hl#:=]333n%5+++593n2555%##^^7$}*0!.3(8", "l.;###:]]33n35////5/,>]u55d7t7eh*0j..k_8", "_..^t#l==nn3n@5++++555it//5#7'$*0j!..&&3", " ..'t^t#====nn65//+++55]#5+6}$h*0jf..i( ", " ..*77^##::===#45++5+/55}v5/0h*0;f..lbb ", " ...ee77t###l::#%5//+//5k755!}0jj...|,b ", " ..h$''77^#####7d5++++51h53j0*j...f6a) ", " ..!}}'ee7^7ttt^$v55//5{[!..[!..f.~pa ", " :.[0*}h$'e777777*i5555v$-5q*....e%dr ", " .f;0**}h}$$$eee$0},/555555m.f..11d ", " .00!00*}*hh}hhh}0f.-5+++/....-o%i ", " ].*0.!0*;0*;0*0;00f;i'{5{k3.a+qa ", " e.h}..jj;;*0jj;!![..}5/+55+o1- ", " e[ee[..fffj[f.f....s+55q/+g6 ", " ^.'te..............,grd1%, ", " =;h##7!..........[>~--6 ", " #}7ln=l^7'e^]k(bsssr ", " ]t7ln8&&&(((k)@ ", " ]n3388 "}; jpilot-1.8.2/icons/jpilot-icon1.xpm0000664000175000017500000000537212320101153014112 00000000000000/* XPM */ static char * jpilot_icon1_xpm[] = { "48 48 17 1", " c None", ". c #050807", "+ c #316B3B", "@ c #1D9A75", "# c #2DAE75", "$ c #1A3A28", "% c #4F6C53", "& c #3C9D53", "* c #265640", "= c #128871", "- c #548256", "; c #142318", "> c #3F554A", ", c #33894D", "' c #4DAC4C", ") c #7B8285", "! c #304043", "====+========================,==,=,=,=,=,@,@,,@,", "===@@=@=@=@@@@@@@@@@@@#@#######################&", "=@@@@@@@@@@@@@@@@@#@#@#@@@@###############'#'##,", "======@=@@=@@@@@@@@@@@@#@#@@@@@#@######'######,+", "==@=@===@=@=@@@@@@@@@@@@@@@@@#@@#@#@#&###'#'&&,+", "=@===@==========@=@@@@@@@@@@@@@@@&@&@#@&&#&#@,=+", "==@=======@==@=======@=@@@@@@@&@@@&@&&@&@&&&,,,+", "=@=@===========@=@=@==@==,@,@,@,@,@&@@&@&@&@&,=+", "===@==========**$*!*>***!**!******+@,&@&&@&@&,,+", "=@@=@=========*!!%))))>!!$!!!!!!!!+@&@&@&&&&@,,+", "==@=========@=*!!>)>%>!>!>!!>!!>!!+@&&@&&@&,&,,+", "=@=@@====@====*!!%%%-%%%%%-%%-%%!!+&@&&@&&&&&@,+", "==@==@=====@=@*!!%-------------->!*&@&&&&@&&,&,+", "=@@@=====+*===*!!%----->%-->>--->!+&&@&@&&&&&,,+", "==@@@=@==$.*=@*!!%---->;;--.;%--!!+@&&&&,=+&&&,+", "=@@=@====$!-,=*!!%----%$%->.;--->!+@&@&&*.$&,&,+", "=@@@=@=@=*+==*!!;!%---+>%-!.$--%!;$*&&&*;.$,&,,+", "=@@@@===*.$=*.....;%-%;.--;.!-%$....$,#....*&&,+", "==@@=@==$.!,$..!*..$-%..-%;.>-$.;>$..*&*..%-&&,+", "=@@@@@==;.*@;.$%>;.;%>.;-+.;%%..+>+;.$,+.;-&&&,+", "=@@@=@==.;+,..%>!$.;%$.$->.;-!.$%!+;.!&$.$&&&&,+", "=@@@@@=*.;,+..>!!..>-..>-$.!-;.!>!$;.+&;.>&&&&&+", "=@@@=@@$.;,*..>!;..%-..%%;.>-;.;>$;.;-&..%&&&&,+", "=@@@@==$.*,$..;...!-%.;%%;.%-!......%&+..$'&&&&+", "=@@@@@=;.+,;.$;.;*-->;!-+;;---$;.;;%,'&;.;-'&&,+", "=@@@@=+..,+..+>>%%-------------%>>-&&&&&--&&&&&+", "=#@@@@..;-+.;-*!!>%%%%%%%%%%%%%%>!+&'&'&&'&'&&&+", "=#@@@@;;+@*;!,>!>!>>>>>>>>>>>>!>!!+&'&''&'''&&&+", "=@#@@@,,,@@,,&*!!>!>%%%%%%%%%%!>>!+&'&'&''&&&&-+", "=@@@@@@,@,@&@@*!>>>%>%%%%%%%%>>>!!+&'#''&'''&&&+", ",#@&@&@@,@,@&,>!!!>>>%%>%%%>%>!>>!+'&'&''''''&&+", "=@#@@@,@@@&@@@>!!!>>>>>%>>>%>>!!!!+&'&'''&'&'&&+", ",#@&@&@,&@,&&@*!!!!!!!!!!!!!!!!!!!+'''&'''''&&&%", "@@#&@@,@@&@@@&>!!!!!!!!!!!!!!!!>!!+&'''''''''&&+", ",#@#@&@&,@&,&@>>!>!>!!!!!!>>>!!>!!+'&''''''&&&&%", "@@#@@&@@&@&@&@,>!)>!>%!!!!!)%!!)>!+'''&'''''''&+", ",##&@&@,@&@&&&+*!%!!!!!!!!!>!!!>!!+'''''''''&&&%", ",#@#&@&&@&@&@,>!!;!!!;!!!!!!!!!!!!+'''''''''&'&+", "=#&#@&@@&&&@&&!!!!!!!>!!>!!!!!!!!!+''''''''''&&%", ",###@&&,@&&@&&+>>>>>>>>>>>>>>>%>>>,''''''''''&'+", ",#&#&@&@&@&&&@&&&&&'&'''''''''''''&'''''''''''--", "=##&#@&&&&@&&&&&&#&&&&&&&'&'&'&'''''''''''''''&+", ",##&#&@&@&&&@&&#&&'&'#&'&'&'''''''''''''''''''&%", ",###&&@&,@&&&&&&&&&&&&&&&&'&&&&&'&'''''''''''''+", ",#&#&@,,&,,@,&,&&&&&&&&&&&&&&'&&'&&&''''''''-'&-", "&##&,,,,,,,,,,,,,,,,,&,&&,&&&&-&&-&&-&-&-&-&''&+", ",#&,=,=,,,,,,,,,,,,,-,,-,--,-,-&-&-&-&-&-'-&--'%", ",=+*****************+***+*+*+*+*+*+>+++>++++++++"}; jpilot-1.8.2/icons/jpilot-icon3.xpm0000664000175000017500000002053412320101153014111 00000000000000/* XPM */ static char * jpilot_icon3_xpm[] = { "48 48 230 2", " c None", ". c #4C4E54", "+ c #3C3A3E", "@ c #3C3E43", "# c #343237", "$ c #443634", "% c #34363B", "& c #4C5654", "* c #646A6C", "= c #544E54", "- c #B4BABC", "; c #ACAAAC", "> c #ACBAB4", ", c #A4B2AC", "' c #4C4A51", ") c #545258", "! c #646267", "~ c #C4C2C4", "{ c #ACAEAC", "] c #D4D2D4", "^ c #847E7C", "/ c #746668", "( c #8C4E3C", "_ c #744234", ": c #6C6A74", "< c #7C8684", "[ c #8C8A8C", "} c #8C9294", "| c #848E8C", "1 c #4C525F", "2 c #5C5A63", "3 c #A47A6C", "4 c #B4725C", "5 c #A45E4C", "6 c #7C4234", "7 c #746A74", "8 c #444A4C", "9 c #44464B", "0 c #44424C", "a c #3C4244", "b c #AC7664", "c c #B46E57", "d c #54565C", "e c #4C625C", "f c #547A64", "g c #5C766C", "h c #547664", "i c #5C7A6C", "j c #6C7E7C", "k c #A4766C", "l c #AC664E", "m c #5C7E6C", "n c #547E64", "o c #5C726C", "p c #6C8684", "q c #8C5E4C", "r c #9C5A44", "s c #7C4A3C", "t c #546E61", "u c #5C565C", "v c #6C4E4C", "w c #6C423C", "x c #645E64", "y c #94523C", "z c #7C4E3E", "A c #746E74", "B c #5C5E64", "C c #546A5E", "D c #748A84", "E c #443A3C", "F c #6C3A2C", "G c #9C624C", "H c #945644", "I c #642E24", "J c #5C3A34", "K c #4C3A3C", "L c #3C160C", "M c #AC6A54", "N c #A46A5C", "O c #A4624C", "P c #8C4A3C", "Q c #644A3C", "R c #343E3C", "S c #6C8A84", "T c #441A14", "U c #9C6E5F", "V c #B46A54", "W c #AC725E", "X c #844E3C", "Y c #64666C", "Z c #4C3E3C", "` c #5C2A1C", " . c #A46652", ".. c #B47664", "+. c #BC765C", "@. c #8C523D", "#. c #547264", "$. c #748E84", "%. c #6C2E24", "&. c #847A7C", "*. c #BC7A64", "=. c #C4826C", "-. c #6C6A6C", ";. c #6C3224", ">. c #9C7264", ",. c #C47E64", "'. c #846A6C", "). c #945E4C", "!. c #543A34", "~. c #545A5A", "{. c #4C5E54", "]. c #745254", "^. c #4C1E14", "/. c #443234", "(. c #7C767C", "_. c #9C5E46", ":. c #74463C", "<. c #B47A6C", "[. c #BC725C", "}. c #643E34", "|. c #94624C", "1. c #A48274", "2. c #84523F", "3. c #5C261C", "4. c #844A36", "5. c #945A44", "6. c #947674", "7. c #BC7E64", "8. c #CC8A74", "9. c #845644", "0. c #6C6670", "a. c #844634", "b. c #946654", "c. c #744A3D", "d. c #946E64", "e. c #C4866C", "f. c #7C5244", "g. c #445664", "h. c #747274", "i. c #2C0A0C", "j. c #743A2C", "k. c #6C463C", "l. c #240604", "m. c #94726C", "n. c #8C5A44", "o. c #544244", "p. c #648674", "q. c #648A74", "r. c #5C826C", "s. c #648274", "t. c #B47E6C", "u. c #6C4A40", "v. c #7CA294", "w. c #84BAA4", "x. c #7CB29C", "y. c #84B6A0", "z. c #7CAA9C", "A. c #749288", "B. c #44524C", "C. c #6C9284", "D. c #9C6654", "E. c #AC6E59", "F. c #7C564C", "G. c #6C8A78", "H. c #4C5A54", "I. c #74A28C", "J. c #647E74", "K. c #747A7C", "L. c #8C6A5C", "M. c #744E3F", "N. c #6C8E80", "O. c #749A8C", "P. c #743E2C", "Q. c #845A49", "R. c #643A34", "S. c #94AEA4", "T. c #7CAE9C", "U. c #749689", "V. c #A47264", "W. c #6C867C", "X. c #84A294", "Y. c #7C9E94", "Z. c #3C4644", "`. c #644E44", " + c #8C6250", ".+ c #94867C", "++ c #849A94", "@+ c #84B29C", "#+ c #749E8C", "$+ c #7C727A", "%+ c #54665C", "&+ c #4C5254", "*+ c #8C6654", "=+ c #B4765C", "-+ c #845E4C", ";+ c #444244", ">+ c #845E54", ",+ c #74564C", "'+ c #2C2E30", ")+ c #1C1A1C", "!+ c #A49EA4", "~+ c #848284", "{+ c #74766C", "]+ c #DCDEE0", "^+ c #BCB6BC", "/+ c #BCBABC", "(+ c #B4B2B4", "_+ c #B47A64", ":+ c #A47661", "<+ c #74767C", "[+ c #848684", "}+ c #7C6A74", "|+ c #BC826C", "1+ c #8C5642", "2+ c #5C5254", "3+ c #4C423C", "4+ c #5C3E34", "5+ c #946A59", "6+ c #7C4634", "7+ c #CC8E74", "8+ c #A47A64", "9+ c #64524C", "0+ c #B4826C", "a+ c #CC8674", "b+ c #846254", "c+ c #A46E5C", "d+ c #746A69", "e+ c #646E64", "f+ c #646E7C", "g+ c #546684", " ", " ", " . + @ # + + $ + + + # $ % + + + + @ @ + % + % % + . ", " & * = = - ; > , ' = = = = = . = = = ) = ! ~ { ] ^ ' % ", " / ( _ : ) ) < [ } | ) = 1 ) ) = ) ) 1 ) ) 1 2 | } } ! 1 ' ", " 3 4 5 6 7 ) = ' 8 ' 9 0 9 9 9 a 9 9 9 9 9 ' 9 0 @ @ 0 ) ) ' ", " b c 5 6 7 d . e f g h h i h g h h g h h h h h h h h h j d ' ", " k l 5 6 7 d . h m n m f m f f i f n f f i f i f i f o p 2 0 ", " q r s 7 2 = t m f f i n i n f n i f f n f n f f f i p u ' v w ", " x y z A B ) C m f m f i f f i f f f i f i f i n i n D B ) E F G H _ ", " 5 5 I J : x d C n i f f n f m f f f n f n f n f f f m D B K L y M r G ", " N l O P Q A B ) C i f n f i f f n f i R f i f i h R f m S ! E T r M 5 N ", " U V W l r X A Y d t n i f h f f i f R f R i f f f R R R i D ! Z ` .l r 4 ", " ..4 k +.4 @.: : d #.m f R h R R e f e f % h e R e h + f n $.B K %. .l ( N ", " &.l *.=.4 P -.Y u #.f f i h R i % f R f R f % f % f R f m D ! Z ;.l l r l ", " >.*.,.O 6 7 -.d #.i f R h R h R f R i % f R f R h R f i S Y Z ;.l l H r ", " '.).r r 6 !.A * ~.h h h % f % R {.i R f R {.e % e m e R m D B K I 5 l r ]. ", " / M l y 6 ^./.(.Y u h f h R f R f n f f f m f m n i f f i n D x Z I _.5 ).:. ", " 7 <.[.l l ( ` }.&.* d #.R f R i R i f m i f f i n i n f i f m D B Z I @.|.).z ", " 1.=.,.<...4 r 2.A * u #.e @ {.n % n i f n f m f i n i m n f m S ! E 3.4.5.@.Q ", " 6.*.7.,.8.*.4 9.A 0.d h i f m f m f f m f i n i n m n m i n m D B Z 3.a.b.@.c. ", " d.*.4 *.e.V f.(.* u h n i f f i n i f m f i f m m f m f f m D B K 3.a.b.@.w ", " g._.c 4 +.H c.&.Y ) t m n i n f i f n f i n m n m f m f i n p 2 Z F X |.q v ", " h.*.M H 6 i./.&.Y 2 C m i n i m n i f m f f f i m f m f f m D B Z j.a.b.q k. ", " b +.c O 6 l.+ (.: 2 #.f m f m f n i n i f m m n m m f f m n p x Z j.X |.q v ", " m.e.7.c W n.3.o.&.* 2 p.p.h p.q.r.r.r.r.r.r.m r.m r.r.r.s.m q.D 2 Z j.2.>.).c. ", " 6.[.e.<.t.M a.u.(.Y d v.| {.g v.w.w.w.w.w.w.x.y.z.w.w.A.B.e C.p x Z j.X >.|.z ", " D.,.*.=.e.E.F.A Y u C.G.& H.I.w.w.w.w.w.w.w.w.w.w.w.C.R B.J.K.2 Z j.9.N b.X ", " L.5 +.+.=.O M.(.-.d $.I.s.N.v.w.w.w.w.w.w.w.w.w.w.w.O.i m p.(.2 Z P.Q. .).X ", " .l O @.I R.(.Y u $.S.A.T.I.w.w.w.w.w.w.x.w.T.O.T.C.g i U.j u o.z ).D.|.s ", " V.r @.;.s A -.d W.X.i m Y.x.w.w.w.w.w.x.z.O.v.z.G.Z.R D (.~.`.X n.b. +c. ", " .+l @.6 _.A ! d G.++{.W.C.I.w.w.w.w.w.w.y.@+y.#+p.g o U.$+2 w z ).b.@. ", " M 5 +.c $+B ) ) C C %+e {.{.{.{.B.' . 8 . 8 ' . {.&+d 0.B w 9.b.*+k. ", " >.=+=.<.^ 2 d 2 2 2 d u d ) d ) &+) ) = ) . . . d ) d 2 2 M.-+b.|.!. ", " * *.*...&.) 2 2 . ) d d d ) ) ) ;+;+. . . . = . ;+;+. ) 1 >+b.*+9. ", " >+=.7.,+8 ) @ '+9 u = 9 + ' 9 + )+% ;+9 9 ' ;+% 0 ' . ;+-+b.|.M. ", " *.=.m.C.B.8 { !+B % ~+{+Y u . '+# '+]+^+-.. /+(+2 d % -+*+n.s ", " _+=.:+w.p.& !+<+u 9 [+; ' ! B ' 9 ' ]+/+-.9 h.0.B . % Q.b.q F ", " }+..=+Z.1 ) . Y B d ' ' B 8 A ' ;+) 9 B d 9 8 . 9 + # -+b.9.k. ", " U |+8 ' . ) d d u u d u ' 2 . ' &+' ' ' 9 9 + + # $ -+*+1+o. ", " 2+<.3+% + + + 0 9 0 0 0 9 9 ' ;++ + % % + # # % E M.b.|.X 4+ ", " *+7.<.U Q.z M.:.F F w }.c.M.c.2.-+ +q -+-+-+-+b.5+*+|.6+/. ", " *.8.7+8.7.+.M 5 r r H M M 4 ,.,.=.=.=.t.8+3 k U ).2.u. ", " 9+0+8.7+8.=.4 l M M O 4 +.+.7.7.,.*.*.*.<.:+:+5+2.z c. ", " v 7.7+8.7+a+*.*.[.c [.+.=+,.=.=.*.+.M W 5+5+).H +F.1 ", " b+*.8.8.e.=.=.*.=.=.,.*.=.e.=.+.=++.V D.b.b.b.*+0.d ", " k *.=.8.=.=.*.=.=.7.,.,.*.*.+.+.+.4 c+5+b.*+}+-.d ", " U +.7+e.=.=.e.=.,.7.*.+.+.+.=++.b :+L.d+d+e+f+g+ "}; jpilot-1.8.2/icons/jpilot-icon4.xpm0000664000175000017500000000537212320101153014115 00000000000000/* XPM */ static char * jpilot_icon4_xpm[] = { "48 48 17 1", " c None", ". c #070B09", "+ c #2E8D56", "@ c #26CE9C", "# c #3AE99E", "$ c #50D26F", "% c #3D5657", "& c #698F6E", "* c #327256", "= c #17B797", "- c #72AF72", "; c #1A2E20", "> c #537163", ", c #43B667", "' c #65E768", ") c #A7AFB5", "! c #448F4D", "===+==+======================,==,=,=,@,=,@,@,@,,", "=@@@@@@@@@@@@@@@@@@#@#@#####################'##$", "==@@@@@@@@@@@@@#@#@@##@#@################'###'#,", "=@===@=@=@@@@@@@@@@@@@#@@@@@@@########'####'##$+", "===@===@=@=@@@@@@@@@@@@@@@#@#@@@#@##$###'###'@,+", "=@=@=@====@=====@@@@@@@@@@@@@#@@$@$@#@$$#$#$$,,+", "===@========@=@=====@=@@@@@@@@@$@@$@$$@$$$$@$,,+", "=@@=============@=@=@==@=,@,@,@@@@$@@@$@@$$@$@,+", "==@=@=======@=+*%***>*>*%******%>*!@$$@$$@$$,$,+", "=@@@==========*%%&))))>%%%%%%%%%%%!@$$@$$$@$$,,+", "===@=@===@====*%%>&&>>>%>%%%>>>%>%+$@$$@$$$@$$,+", "=@@=@=====@==@*%%&&-&-&-&-&-&&&&>%!@$@$#$$$$,$,+", "=@@=@==@====@=>%%&-------------->%+$$$$@$#$$$$,+", "=@@@=@===+*===>%>&----->&-->&--->%+$@$$$$$$$,$,!", "==@@==@==;.+,@*%%&---->.;--.;&--%%!$$#$$@,,$$$,+", "=@@@@==@=*%-=@*%>&----&%&->.;&-->%+$@$$$%.%$$$$!", "=@@=@@===*+==*%%;%&---&>--%.%--&%;%+$@$+;.;,$,,+", "=@@@@=@=*.%=*.....;&-&;.--;.*-&%....%$$....*$$$!", "=@@@@=@=;.%,%..%>..%-!..-&;.>-%.;>%..*$*..&-$,,!", "=@@@@=@=;.*=;.%&>;.;&>.;-!.;&!..!>+;.%$+.;-$$$$!", "=@@@@@==.;!,..!>%;.;-%.%->.;-%.%&%!;.%$%.%$$$$,!", "=@@@@=@*.;,+..&%%..%-..>-%.%-;.%>%*..!$;.>$$$$$!", "=@@@@@=*.;$*..>%;.;!-..&&;.>-;.;>%..;-$..&'$$$,!", "=@@@@@=;.*,;..;...%-&.;&&;.&-%......&,,..%$'$$$!", "=@@@@@=;.!,;.%;.;>-->;%-!;;---%;.;;&$$$;.;$'$$$!", "=#@@@@+..-=..!>>>--------------&!>-$$'$$--$$$$$!", "=@@@@@..;-+.;-*%%>&&&&&&&&&&&&&&>%!'$'$'$$''$$$!", "=@#@@@;;!@*;%,!%%>>>>>>&>>>>>>>>%%!'$'$'''''$$$!", "=#@@@@@-,@@$,$>%%>%>&&&&&&&&&>%>>%!$''#'$'$'$$$!", "=##@$@@@$@,@@@>%>>&>&&&&&&&&&&>>>%+'$'$'''''$$$!", "=@#@@$@,@@$@$@>%%%>>&&&&&&&&&>%>%%!''''''''$'$$!", "@@#$@@@@,@$@$@>%%%>>>>&>&>&>>>%>%%!'$''$'''''$$!", ",#@#@$@$@$@$@$*%%%%%%%%%%%%%%%%%%%!''$''''''$$$!", "=##@$@$@@,@$@$>%%%%%%%%%%%%%%%%%%%+'''''''''''$!", ",#@$@@$,@$@$$@!%%>>%>%%%%%>>>%>>%%!''''''''$$$$&", "=###@$@@$@$@$$!&%)>%%&%%%%%)&%%)>%!'''''''''''$!", ",#@#$@$$@$$@$@!*%&%%%>%%%%%>%%%>%%!''''''''''$$-", ",##$#@$@$@$$$$>%%%%%%;%%%%%%%%%%%%!''''''''''$$!", "=##@$@$@$@$@$@>%%%%%%>%%>%%%%%%%%%!'''''''''''-,", ",####$$@$$#$$$>>>>>>>&>>>>>>&>&>>*-''''''''''''!", ",##$@$@$$@$$@$$$$$$'$''''''''''''''''''''''''$--", ",###$#$@$$$#$#$#$#$$#$$$'$'$'''''''''''''''''''!", ",###$#$$@$$$$$$$$'$'$''$''''$'''''''''''''''''$&", "@'##$@$$@$@$@$$$$$$$$$$$$$$'$'$''''''''''''''''!", ",##'$@,$,$,$$$$$$$$$$$$$$$$$$$$$'$'''''''''''$'&", "$##$@,,,,,,,,,,,,,,$,$$$$$$$$$$-$$$-$$$'-'-'-'$,", "@'$,,,=,,,,,,,,,,,,,,,,-,-,--,$-$-$-$--$-$$-$-$&", ",=+***********+*+*!**+**+*+!*!*!*!*!!!!!!!!!!!!!"}; jpilot-1.8.2/icons/Makefile.in0000664000175000017500000003646112336026321013136 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = icons DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(icondir)" DATA = $(icon_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ icondir = $(datadir)/doc/$(PACKAGE)/icons icon_DATA = \ jpilot-icon1.xpm \ jpilot-icon2.xpm \ jpilot-icon3.xpm \ jpilot-icon4.xpm \ README EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign icons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(icondir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-iconDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/password.c0000664000175000017500000002436212340261240011755 00000000000000/******************************************************************************* * password.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include "password.h" #include "i18n.h" #include "prefs.h" #ifdef ENABLE_PRIVATE /********************************* Constants **********************************/ #define DIALOG_SAID_1 454 #define DIALOG_SAID_2 455 /******************************* Global vars **********************************/ static unsigned char short_salt[]= { 0x09, 0x02, 0x13, 0x45, 0x07, 0x04, 0x13, 0x44, 0x0C, 0x08, 0x13, 0x5A, 0x32, 0x15, 0x13, 0x5D, 0xD2, 0x17, 0xEA, 0xD3, 0xB5, 0xDF, 0x55, 0x63, 0x22, 0xE9, 0xA1, 0x4A, 0x99, 0x4B, 0x0F, 0x88 }; static unsigned char long_salt[]= { 0xB1, 0x56, 0x35, 0x1A, 0x9C, 0x98, 0x80, 0x84, 0x37, 0xA7, 0x3D, 0x61, 0x7F, 0x2E, 0xE8, 0x76, 0x2A, 0xF2, 0xA5, 0x84, 0x07, 0xC7, 0xEC, 0x27, 0x6F, 0x7D, 0x04, 0xCD, 0x52, 0x1E, 0xCD, 0x5B, 0xB3, 0x29, 0x76, 0x66, 0xD9, 0x5E, 0x4B, 0xCA, 0x63, 0x72, 0x6F, 0xD2, 0xFD, 0x25, 0xE6, 0x7B, 0xC5, 0x66, 0xB3, 0xD3, 0x45, 0x9A, 0xAF, 0xDA, 0x29, 0x86, 0x22, 0x6E, 0xB8, 0x03, 0x62, 0xBC }; /****************************** Prototypes ************************************/ struct dialog_data { GtkWidget *entry; int button_hit; char text[PASSWD_LEN+2]; }; /****************************** Main Code *************************************/ /* len is the length of the bin str, hex_str must be at least twice as long */ void bin_to_hex_str(unsigned char *bin, char *hex_str, int len) { int i; hex_str[0]='\0'; for (i=0; i>= shift; encoded[m%32] ^= temp & 0xFF; m++; index++; } } } /* * encoded is a pre-allocated buffer at least 16 bytes long * * This is the hashing algorithm used in palm OS >= 4.0. * Its just a plain ole' MD5. */ static void palm_encode_md5(unsigned char *ascii, unsigned char *encoded) { struct MD5Context m; unsigned char digest[20]; MD5Init(&m); MD5Update(&m, ascii, strlen((char *)ascii)); MD5Final(digest, &m); memcpy(encoded, digest, 16); } #endif int verify_password(char *password) { int i; #ifdef ENABLE_PRIVATE unsigned char encoded[34]; unsigned char password_lower[PASSWD_LEN+2]; const char *pref_password; char hex_str[68]; #endif #ifdef ENABLE_PRIVATE if (!password) { return FALSE; } /* The Palm OS lower cases the password first */ /* Yes, I have found this documented on Palm's website */ for (i=0; i < PASSWD_LEN; i++) { password_lower[i] = tolower(password[i]); } /* Check to see that the password matches */ palm_encode_hash(password_lower, encoded); bin_to_hex_str(encoded, hex_str, PASSWD_LEN); get_pref(PREF_PASSWORD, NULL, &pref_password); if (!strcmp(hex_str, pref_password)) { return TRUE; } /* The Password didn't match. * It could also be an MD5 password. * Try that now. */ palm_encode_md5((unsigned char *)password, encoded); bin_to_hex_str(encoded, hex_str, PASSWD_LEN); hex_str[PASSWD_LEN]='\0'; get_pref(PREF_PASSWORD, NULL, &pref_password); if (!strcmp(hex_str, pref_password)) { return TRUE; } return FALSE; #else /* Return TRUE without checking the password */ return TRUE; #endif } /* * hide passed HIDE_PRIVATES, SHOW_PRIVATES or MASK_PRIVATES will set the flag. * hide passed GET_PRIVATES will return the current hide flag. * hide flag is always returned. */ int show_privates(int hide) { #ifdef ENABLE_PRIVATE static int hidden=HIDE_PRIVATES; #else static int hidden=SHOW_PRIVATES; #endif if (hide != GET_PRIVATES) hidden = hide; return hidden; } #ifdef ENABLE_PRIVATE /* * PASSWORD GUI */ /* Start of Dialog window code */ static void cb_dialog_button(GtkWidget *widget, gpointer data) { struct dialog_data *Pdata; GtkWidget *w; w = gtk_widget_get_toplevel(widget); Pdata = gtk_object_get_data(GTK_OBJECT(w), "dialog_data"); if (Pdata) { Pdata->button_hit = GPOINTER_TO_INT(data); } gtk_widget_destroy(GTK_WIDGET(w)); } static gboolean cb_destroy_dialog(GtkWidget *widget) { struct dialog_data *Pdata; const char *entry; Pdata = gtk_object_get_data(GTK_OBJECT(widget), "dialog_data"); if (!Pdata) { return TRUE; } entry = gtk_entry_get_text(GTK_ENTRY(Pdata->entry)); if (entry) { g_strlcpy(Pdata->text, entry, PASSWD_LEN+1); } gtk_main_quit(); return TRUE; } /* * returns 1 if cancel was pressed, 2 if OK was hit */ int dialog_password(GtkWindow *main_window, char *ascii_password, int retry) { GtkWidget *button, *label; GtkWidget *hbox1, *vbox1; GtkWidget *dialog; GtkWidget *entry; struct dialog_data Pdata; int ret; if (!ascii_password) { return EXIT_FAILURE; } ascii_password[0]='\0'; ret = 2; dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", _("Palm Password"), NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(main_window)); gtk_signal_connect(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), dialog); hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_add(GTK_CONTAINER(dialog), hbox1); gtk_box_pack_start(GTK_BOX(hbox1), gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG), FALSE, FALSE, 2); vbox1 = gtk_vbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(vbox1), 5); gtk_container_add(GTK_CONTAINER(hbox1), vbox1); hbox1 = gtk_hbox_new(TRUE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); /* Instruction label */ if (retry) { label = gtk_label_new(_("Incorrect, Reenter PalmOS Password")); } else { label = gtk_label_new(_("Enter PalmOS Password")); } gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); /* Password entry field */ entry = gtk_entry_new_with_max_length(PASSWD_LEN); gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); /* Button Box */ hbox1 = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox1), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox1), 6); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); /* Cancel Button */ button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox1), button, FALSE, FALSE, 1); /* OK Button */ button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox1), button, FALSE, FALSE, 1); GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); gtk_widget_grab_default(button); /* Set the default button pressed to CANCEL */ Pdata.button_hit = DIALOG_SAID_1; Pdata.entry=entry; Pdata.text[0]='\0'; gtk_object_set_data(GTK_OBJECT(dialog), "dialog_data", &Pdata); gtk_widget_grab_focus(GTK_WIDGET(entry)); gtk_widget_show_all(dialog); gtk_main(); if (Pdata.button_hit==DIALOG_SAID_1) { ret = 1; } if (Pdata.button_hit==DIALOG_SAID_2) { ret = 2; } g_strlcpy(ascii_password, Pdata.text, PASSWD_LEN+1); return ret; } #endif jpilot-1.8.2/AUTHORS0000664000175000017500000000617112320101153011007 00000000000000 * I have to give the first credit to my Wife who puts up with me programming stuff for free when there are more productive analog things to be doing ;-) * I am sure this list is not complete, so email me (judd@jpilot.org) if you should be in here. * configure scripts were initialy done by Victor Brilon * Japanesation patches were provided by Hiroshi Kawashima * Alex Varju sent me a patch for displaying due dates in todos, and also a fix for a small bug where I didn't sort them correctly. I had priority/date and date/priority reversed. * HvR sent me the jpilot-dump code. * Jason Day sent me some log patches for plugins to log correctly. Also sent me some patches for plugins using rc files. * Croation patches were provided by Dobrica Pavlinusic * Options to not sync conduits patch from Eric Yeo * David Frey gave me some postscript patches for using recode and latin1 char sets. * "Benjamin A. Kuperman" send a patch to sync.c for watchdog timeout on long copies, and a Makefile patch. * "Boris O. Gagarinov" helped with russian character set translations. * "Hiroshi MIURA" for i18n help on 0.99 and multibyte character patches. i18n of Expense and Keyring. * If you are not in this list and you should be then let me know. I want everyone to get a piece of the pie when I have the big jpilot IPO :) * Chris Bagwell for help in making plugins compile and work better on Solaris and help in printing postscript. * Colin Brough for making the postscript output for week and month calendar. * Chuck Mead for donating and hosting the jpilot.org domain at moongroup.com * "David A. Desrosiers" for hosting the jpilot.org domain at gnu-designs.com * Peter Valchev for OpenBSD patches * Ludovic Rousseau for printing and misc patches * Bill Fenner vCard and iCalendar export code * Wojciech Ziembla , Poland Palm : CP 1250, Unix : UTF-8 conversion * Rik Wehbring GTK2 patches for textviews and lots of other patches * Greek patches were provided by Panayotis Katsaloulis * Translation last done by (sorry if I left someone out): ca.po:"Last-Translator: Leopold Palomo " cs.po:"Last-Translator: Jiri Rubes " da.po:"Last-Translator: Keld Simonsen " de.po:"Last-Translator: Henrik Becker " es.po:"Last-Translator: Juan Diego " fr.po:"Last-Translator: Regis Rampnoux " it.po:"Last-Translator: Michele Mazzucchi " ja.po:"Last-Translator: Hiroshi Miura " nl.po:"Last-Translator: Arjan van de Ven " no.po:"Last-Translator: Ragnar Wisløff " sv.po:"Last-Translator: Erik Bågfors " Information about being a translator can be found at: http://www.iro.umontreal.ca/contrib/po/HTML/ jpilot-1.8.2/password.h0000664000175000017500000000324612340261240011760 00000000000000/******************************************************************************* * password.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __PASSWORD_H__ #define __PASSWORD_H__ #define SHOW_PRIVATES 1 #define MASK_PRIVATES 2 #define HIDE_PRIVATES 0 #define GET_PRIVATES -1 #define PASSWD_LEN 32 /* * hide passed 1 will set the hide flag * hide passed 0 will unset the hide flag * hide passed -1 will return the current hide flag * hide flag is always returned * The caller will have to ensure a password was entered before calling here */ int show_privates(int hide); #ifdef ENABLE_PRIVATE /* len is the length of the bin str, hex_str must be at least twice as long */ void bin_to_hex_str(unsigned char *bin, char *hex_str, int len); int dialog_password(GtkWindow *main_window, char *ascii_password, int retry); int verify_password(char *password); #endif /* ENABLE_PRIVATE */ #endif jpilot-1.8.2/print.c0000664000175000017500000011651212340261240011246 00000000000000/******************************************************************************* * print.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include "print.h" #include "print_headers.h" #include "print_logo.h" #include "datebook.h" #include "calendar.h" #include "address.h" #include "todo.h" #include "sync.h" #include "prefs.h" #include "log.h" #include "i18n.h" #ifdef HAVE_LOCALE_H # include #endif /********************************* Constants **********************************/ #ifdef JPILOT_PRINTABLE # define FLAG_CHAR 'A' # define Q_FLAG_CHAR "A" #else # define FLAG_CHAR 010 # define Q_FLAG_CHAR "\\010" #endif /******************************* Global vars **********************************/ static FILE *out; static int first_hour, first_min, last_hour, last_min; extern int datebk_category; static const char *PaperSizes[] = { "Letter", "Legal", "Statement", "Tabloid", "Ledger", "Folio", "Quarto", "7x9", "9x11", "9x12", "10x13", "10x14", "Executive", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "ISOB0", "ISOB1", "ISOB2", "ISOB3", "ISOB4", "ISOB5", "ISOB6", "ISOB7", "ISOB8", "ISOB9", "ISOB10", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "DL", "Filo" }; /****************************** Prototypes ************************************/ static int fill_in(struct tm *date, CalendarEventList *a_list); static void ps_strncat(char *dest, const char *src, int n); /****************************** Main Code *************************************/ static FILE *print_open(void) { const char *command; get_pref(PREF_PRINT_COMMAND, NULL, &command); if (command) { return popen(command, "w"); } else { return NULL; } } static void print_close(FILE *f) { pclose(f); } static int courier_12(void) { /* fprintf(out, "/Courier 12 selectfont\n"); */ fprintf(out, "%cC12\n", FLAG_CHAR); return EXIT_SUCCESS; } static int courier_bold_12(void) { /* fprintf(out, "/Courier-Bold 12 selectfont\n"); */ fprintf(out, "%cCB12\n", FLAG_CHAR); return EXIT_SUCCESS; } static int clip_to_box(float x1, float y1, float x2, float y2) { fprintf(out, "%g inch %g inch %g inch %g inch rectclip\n", x1, y1, x2-x1, y2-y1); return EXIT_SUCCESS; } static int puttext(float x, float y, const char *text) { int len; char *buf; len = strlen(text); buf = malloc(2 * len + 1); memset(buf, 0, 2 * len + 1); ps_strncat(buf, text, 2 * len); fprintf(out, "%g inch %g inch moveto (%s) show\n", x, y, buf); free(buf); return EXIT_SUCCESS; } static int header(void) { time_t ltime; time(<ime); fprintf(out, "%%!PS-Adobe-2.0\n" "%%%%Creator: J-Pilot\n" "%%%%CreationDate: %s" "%%%%DocumentData: Clean7Bit\n" "%%%%Orientation: Portrait\n" "%%DocumentFonts: Times-Roman Times-Bold Courier Courier-Bold\n" "%%%%Magnification: 1.0000\n" "%%%%Pages: 1\n" "%%%%EndComments\n" "%%%%BeginProlog\n" ,ctime(<ime)); fprintf(out, "/PageSize (%s) def\n\n", PaperSizes[PAPER_Letter]); print_common_prolog(out); fprintf(out, "%%%%EndProlog\n" "%%%%BeginSetup\n"); print_common_setup(out); fprintf(out, "595 612 div 842 792 div Min dup scale %% HACK!!!! (CMB)\n"); /* This hack pre-scales to compensate for the standard scaling mechanism below, to avoid me having to redo the layout of the dayview for the A4 standard size page. */ fprintf(out, "%%%%EndSetup\n" "%%%%Page: 1 1\n\n"); return EXIT_SUCCESS; } static int print_dayview(struct tm *date, CalendarEventList *ce_list) { char str[80]; char datef[80]; time_t ltime; struct tm *now; const char *svalue; #ifdef HAVE_LOCALE_H char *current_locale; current_locale = setlocale(LC_NUMERIC,"C"); #endif header(); /* Draw the 2 gray columns and header block */ print_day_header(out); /* Put the month name up */ fprintf(out, "/Times-Bold-ISOLatin1 findfont 20 scalefont setfont\n" "newpath 0 setgray\n"); get_pref(PREF_LONGDATE, NULL, &svalue); strftime(str, sizeof(str), _(svalue), date); puttext(0.5, 10.25, str); /* Put the weekday name up */ fprintf(out, "/Times-Roman-ISOLatin1 findfont 15 scalefont setfont\n"); strftime(str, sizeof(str), "%A", date); puttext(0.5, 10, str); /* Put the time of printing up */ fprintf(out, "newpath\n" "/Times-Roman-ISOLatin1 findfont 10 scalefont setfont\n"); time(<ime); now = localtime(<ime); get_pref(PREF_SHORTDATE, NULL, &svalue); g_snprintf(datef, sizeof(datef), "%s %s", "Printed on: ", svalue); strftime(str, sizeof(str), datef, now); puttext(0.5, 0.9, str); puttext(7.5, 0.9, "J-Pilot"); fprintf(out, "stroke\n"); print_logo(out, 40, 90, 0.35); /* Put the appointments on the dayview calendar */ fill_in(date, ce_list); fprintf(out, "showpage\n"); fprintf(out, "%%%%EOF\n"); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, current_locale); #endif return EXIT_SUCCESS; } static int fill_in(struct tm *date, CalendarEventList *ce_list) { CalendarEventList *temp_cel; int i; int hours[24]; int defaults1=0, defaults2=0; int hour24; int am; float top_y=9.40; float default_y=3.40; float indent1=1.25; float indent2=5.00; float step=0.12; /* This is the space between lines */ float x,y; int max_per_line=4; char str[256]; char datef[32]; for (i=0; i<24; i++) { hours[i]=0; } /* We have to go through them twice, once for AM, and once for PM * This is because of the clipping */ for (i=0; i<2; i++) { am=i%2; fprintf(out, "gsave\n"); if (am) { clip_to_box(1.25, 0.5, 4.25, 9.5); } else { clip_to_box(5.0, 0.5, 8.0, 9.5); } for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { if (temp_cel->mcale.cale.description == NULL) { continue; } if (temp_cel->mcale.cale.event) { strcpy(str, " "); if (!am) { continue; } x=indent1; y=default_y - defaults1 * step; defaults1++; } else { hour24 = temp_cel->mcale.cale.begin.tm_hour; if ((hour24 > 11) && (am)) { continue; } if ((hour24 < 12) && (!am)) { continue; } get_pref_time_no_secs(datef); strftime(str, sizeof(str), datef, &temp_cel->mcale.cale.begin); if (hour24 > 11) { x=indent2; y=top_y - (hour24 - 12) * 0.5 - (hours[hour24]) * step; hours[hour24]++; if (hours[hour24] > max_per_line) { y=default_y - defaults2 * step; defaults2++; } } else { x=indent1; y=top_y - (hour24) * 0.5 - (hours[hour24]) * step; hours[hour24]++; if (hours[hour24] > max_per_line) { y=default_y - defaults1 * step; defaults1++; } } } if (temp_cel->mcale.cale.description) { strcat(str, " "); strncat(str, temp_cel->mcale.cale.description, sizeof(str)-strlen(str)-2); str[128]='\0'; /* FIXME: Add location in parentheses (loc) as the Palm does. * We would need to check strlen, etc., before adding */ } if (y > 1.0) { puttext(x, y, str); } else { jp_logf(JP_LOG_WARN, "Too many appointments, dropping one\n"); } } fprintf(out, "grestore\n"); } return EXIT_SUCCESS; } int print_days_appts(struct tm *date) { CalendarEventList *ce_list; out = print_open(); if (!out) { return EXIT_FAILURE; } ce_list = NULL; get_days_calendar_events2(&ce_list, date, 2, 2, 2, CATEGORY_ALL, NULL); print_dayview(date, ce_list); print_close(out); free_CalendarEventList(&ce_list); return EXIT_SUCCESS; } static int f_indent_print(FILE *f, int indent, char *str) { char *P; int i, col; col=indent; for (P=str; *P; P++) { col++; if ((*P==10) || (*P==13)) { fprintf(f, "%c", *P); for (i=indent; i; i--) { fprintf(f, " "); } col=indent; continue; } if (col>75) { fprintf(f, "\n"); for (i=indent; i; i--) { fprintf(f, " "); } col=indent+1; } fprintf(f, "%c", *P); } return EXIT_SUCCESS; } /*---------------------------------------------------------------------- * ps_strncat Escapes brackets for printing in PostScript strings *----------------------------------------------------------------------*/ void ps_strncat(char *dest, const char *src, int n) { int i = 0, j = 0; char *dest2; dest2 = strchr(dest, '\0'); while (j < n) { if (src[i] == '\0') { dest2[j]='\0'; break; } if (strchr("()", src[i]) != NULL) { if(jtm_year%4 == 0) && !(((date->tm_year+1900)%100==0) && ((date->tm_year+1900)%400!=0))) { days_in_month[1]++; } return(days_in_month[date->tm_mon]); } /*---------------------------------------------------------------------- * print_months_appts Function to print the current month's * appointments. *----------------------------------------------------------------------*/ static const char *MonthNames[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int print_months_appts(struct tm *date_in, PaperSize paper_size) { CalendarEventList *ce_list; CalendarEventList *temp_cel; struct tm date; char desc[100]; time_t ltime; int dow; int ndim; int n; long fdow; int mask; #ifdef ENABLE_DATEBK int ret; int cat_bit; int db3_type; long use_db3_tags; struct db4_struct db4; #endif #ifdef HAVE_LOCALE_H char *current_locale; #endif /*------------------------------------------------------------------ * Set up the PostScript output file, and print the header to it. *------------------------------------------------------------------*/ mask=0; time(<ime); #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif #ifdef HAVE_LOCALE_H current_locale = setlocale(LC_NUMERIC,"C"); #endif if (! (out = print_open())) return(EXIT_FAILURE); fprintf(out, "%%!PS-Adobe-2.0\n" "%%%%Creator: J-Pilot\n" "%%%%CreationDate: %s" "%%%%DocumentData: Clean7Bit\n" "%%%%Orientation: Landscape\n\n" "%%DocumentFonts: Times-Roman Times-Bold Courier Courier-Bold\n" "%%%%Magnification: 1.0000\n" "%%%%Pages: 1\n" "%%%%EndComments\n" "%%%%BeginProlog\n" ,ctime(<ime)); fprintf(out, "/PageSize (%s) def\n\n", PaperSizes[paper_size]); print_common_prolog(out); fprintf(out, "%%%%EndProlog\n" "%%%%BeginSetup\n"); print_common_setup(out); print_month_header(out); fprintf(out, "%%%%EndSetup\n" "%%%%Page: 1 1\n\n"); /*------------------------------------------------------------------ * Extract the appointments *------------------------------------------------------------------*/ ce_list = NULL; memcpy(&date, date_in, sizeof(struct tm)); /* Get all of the appointments */ get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); get_month_info(date.tm_mon, 1, date.tm_year, &dow, &ndim); weed_calendar_event_list(&ce_list, date.tm_mon, date.tm_year, 0, &mask); /*------------------------------------------------------------------ * Loop through the days in the month, printing appointments *------------------------------------------------------------------*/ date.tm_mday=1; date.tm_sec=0; date.tm_min=0; date.tm_hour=11; date.tm_isdst=-1; mktime(&date); get_pref(PREF_FDOW, &fdow, NULL); fprintf(out, "(%s %d) %d (%s) (%s version %s) %ld InitialisePage\n\n", MonthNames[date_in->tm_mon], date_in->tm_year + 1900, date.tm_wday, ctime(<ime), PN, VERSION, fdow); for (n=0, date.tm_mday=1; date.tm_mday<=ndim; date.tm_mday++, n++) { date.tm_sec=0; date.tm_min=0; date.tm_hour=11; date.tm_isdst=-1; date.tm_wday=0; date.tm_yday=1; mktime(&date); fprintf(out, "%%--------------------------------------------------\n" "%%Stuff for day %2d being printed\n", date.tm_mday); fprintf(out, "NextDay\n"); for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { #ifdef ENABLE_DATEBK if (use_db3_tags) { ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); /* jp_logf(JP_LOG_DEBUG, "category = 0x%x\n", db4.category); */ cat_bit=1<mcale.cale), &date)) { char tmp[20]; char datef1[20]; char datef2[20]; tmp[0]='\0'; if ( ! temp_cel->mcale.cale.event) { get_pref_time_no_secs(datef1); g_snprintf(datef2, sizeof(datef2), "(%s )", datef1); strftime(tmp, sizeof(tmp), datef2, &(temp_cel->mcale.cale.begin)); tmp[19]='\0'; } desc[0]='\0'; if (temp_cel->mcale.cale.description) { ps_strncat(desc, temp_cel->mcale.cale.description, 100); desc[sizeof(desc)-1]='\0'; /* FIXME: Add location in parentheses (loc) as the Palm does. * We would need to check strlen, etc., before adding */ } remove_cr_lfs(desc); fprintf(out, "%s (%s) %simedItem\n", tmp, desc, (strlen(tmp) == 0) ? "Unt" : "T" ); } } } /*------------------------------------------------------------------*/ memcpy(&date, date_in, sizeof(struct tm)); date.tm_mday = 1; /* Go to the first of the month */ mktime(&date); sub_months_from_date(&date, 1); strftime(desc, sizeof(desc), "(%B %Y) %w ", &date); fprintf(out, "\n\n%%----------------------------------------\n" "%% Now generate the small months\n\n" "%s %d ", desc, days_in_mon(&date)); add_months_to_date(&date, 2); strftime(desc, sizeof(desc), "(%B %Y) %w ", &date); fprintf(out, "%s %d SmallMonths\n", desc, days_in_mon(&date)); /*------------------------------------------------------------------*/ free_CalendarEventList(&ce_list); fprintf(out, "grestore\n"); print_logo(out, 20, 30, 0.35); fprintf(out, "\nshowpage\n"); fprintf(out, "%%%%EOF\n"); print_close(out); #ifdef HAVE_LOCALE_H setlocale(LC_NUMERIC, current_locale); #endif return EXIT_SUCCESS; } /*---------------------------------------------------------------------- * reset_first_last Routine to reset max/min appointment times *----------------------------------------------------------------------*/ static void reset_first_last(void) { first_hour = 25; first_min = 61; last_hour = -1; last_min = -1; } /*---------------------------------------------------------------------- * check_first_last Routine to track max/min appointment times *----------------------------------------------------------------------*/ static void check_first_last(CalendarEventList *cel) { struct tm *ApptTime; ApptTime = &(cel->mcale.cale.begin); if (ApptTime->tm_hour == first_hour) { if (ApptTime->tm_min < first_min) first_min = ApptTime->tm_min; } else if (ApptTime->tm_hour < first_hour) { first_hour = ApptTime->tm_hour; first_min = ApptTime->tm_min; } ApptTime = &(cel->mcale.cale.end); if (ApptTime->tm_hour == last_hour) { if (ApptTime->tm_min > last_min) last_min = ApptTime->tm_min; } else if (ApptTime->tm_hour > last_hour) { last_hour = ApptTime->tm_hour; last_min = ApptTime->tm_min; } } /*---------------------------------------------------------------------- * print_weeks_appts Function to print a weeks appointments onto a * weekly plan. We assume that date_in is the chosen * first day of the week. *----------------------------------------------------------------------*/ int print_weeks_appts(struct tm *date_in, PaperSize paper_size) { CalendarEventList *ce_list, *temp_cel; struct tm date; struct tm *today_date; char desc[256], short_date[32]; int n; time_t ltime; #ifdef ENABLE_DATEBK int ret; int cat_bit; int db3_type; long use_db3_tags; struct db4_struct db4; #endif #ifdef HAVE_LOCALE_H char *current_locale; #endif #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif #ifdef HAVE_LOCALE_H current_locale = setlocale(LC_NUMERIC,"C"); #endif /*------------------------------------------------------------------ * Set up the PostScript output file, and print the header to it. *------------------------------------------------------------------*/ if (! (out = print_open())) return(EXIT_FAILURE); time(<ime); fprintf(out, "%%!PS-Adobe-2.0\n" "%%%%Creator: J-Pilot\n" "%%%%CreationDate: %s" "%%%%DocumentData: Clean7Bit\n" "%%%%Orientation: Landscape\n" "%%DocumentFonts: Times-Roman Times-Bold Courier Courier-Bold\n" "%%%%Magnification: 1.0000\n" "%%%%Pages: 1\n" "%%%%EndComments\n" "%%%%BeginProlog\n" ,ctime(<ime)); /*------------------------------------------------------------------ * These are preferences for page size (passed in), first and last * hours on the plan (default; scales if earlier or later are present), * and whether to print dashes across the page. *------------------------------------------------------------------*/ fprintf(out, "/PageSize (%s) def\n\n", PaperSizes[paper_size]); fprintf(out, "/FirstHour 9 def\n" "/LastHour 22 def\n"); fprintf(out, "/Dashes true def\n"); print_common_prolog(out); fprintf(out, "%%%%EndProlog\n" "%%%%BeginSetup\n"); print_common_setup(out); print_week_header(out); fprintf(out, "%%%%EndSetup\n" "%%%%Page: 1 1\n\n"); /*------------------------------------------------------------------ * Run through the appointments, looking for earliest and latest *------------------------------------------------------------------*/ ce_list = NULL; get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); reset_first_last(); memcpy(&date, date_in, sizeof(struct tm)); for (n = 0; n < 7; n++, add_days_to_date(&date, 1)) { for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { #ifdef ENABLE_DATEBK if (use_db3_tags) { ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); cat_bit=1<mcale.cale), &date)) if (! temp_cel->mcale.cale.event) check_first_last(temp_cel); } } if (last_min > 0) last_hour++; /*------------------------------------------------------------------ * Now put in the finishing touches to the header, and kick-start * the printing process *------------------------------------------------------------------*/ today_date = localtime(<ime); fprintf(out, "%%------------------------------------------------------------\n" "%% This is today's date, the date of printing, plus the hour\n" "%% before & after the first and last appointments, respectively\n" "%d %d %d %d %d startprinting\n\n", today_date->tm_mday, today_date->tm_mon + 1, today_date->tm_year + 1900, first_hour, last_hour); fprintf(out, "( by %s version %s) show\n", PN, VERSION); print_logo(out, 20, 30, 0.35); /*------------------------------------------------------------------ * Run through the appointments, printing them out *------------------------------------------------------------------*/ free_CalendarEventList(&ce_list); ce_list = NULL; /* Get all of the appointments */ get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); /* iterate through seven days */ memcpy(&date, date_in, sizeof(struct tm)); for (n = 0; n < 7; n++, add_days_to_date(&date, 1)) { strftime(short_date, sizeof(short_date), "%a, %d %b, %Y", &date); fprintf(out, "%d startday\n(%s) dateline\n", n, short_date); for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { #ifdef ENABLE_DATEBK if (use_db3_tags) { ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); jp_logf(JP_LOG_DEBUG, "category = 0x%x\n", db4.category); cat_bit=1<mcale.cale), &date)) { memset(desc, 0, sizeof(desc)); memset(short_date, 0, sizeof(short_date)); if ( ! temp_cel->mcale.cale.event) { char t1[6], t2[6], ht[3], mt[3]; int j, m; strftime(ht, sizeof(ht), "%H", &(temp_cel->mcale.cale.begin)); strftime(mt, sizeof(mt), "%M", &(temp_cel->mcale.cale.begin)); m = atoi(mt); snprintf(t1, sizeof(t1), "%s.%02d", ht, (int)((m * 100.)/60)); strftime(ht, sizeof(ht), "%H", &(temp_cel->mcale.cale.end)); strftime(mt, sizeof(mt), "%M", &(temp_cel->mcale.cale.end)); m = atoi(mt); snprintf(t2, sizeof(t2), "%s.%02d", ht, (int)((m * 100.)/60)); sprintf(short_date, "%s %s ", t1, t2); for (j=0; j<30;j++) short_date[j] =tolower(short_date[j]); } if (temp_cel->mcale.cale.description) { ps_strncat(desc, temp_cel->mcale.cale.description, 250); /* FIXME: Add location in parentheses (loc) as the Palm does. * We would need to check strlen, etc., before adding */ remove_cr_lfs(desc); } fprintf(out, "%s (%s) itemline\n", short_date, desc); } } } free_CalendarEventList(&ce_list); fprintf(out, "\nfinishprinting\n"); fprintf(out, "%%%%EOF\n"); print_close(out); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, current_locale); #endif return EXIT_SUCCESS; } /* * Address code */ static int print_address_header(void) { time_t ltime; struct tm *date; const char *svalue; char str[256]; time(<ime); date = localtime(<ime); get_pref(PREF_SHORTDATE, NULL, &svalue); strftime(str, sizeof(str), svalue, date); fprintf(out, "%%!PS-Adobe-2.0\n" "%%%%Creator: J-Pilot\n" "%%%%CreationDate: %s" "%%%%DocumentData: Clean7Bit\n" /* XXX Title */ "%%%%Orientation: Portrait\n" /* XXX BoundingBox */ "%%DocumentFonts: Times-Roman Times-Bold " "Courier Courier-Bold ZapfDingbats\n" "%%%%Magnification: 1.0000\n" "%%%%BoundingBox: 36 36 576 756\n" "%%%%EndComments\n", ctime(<ime)); fprintf(out, "%%%%BeginProlog\n" "%%%%BeginResource: procset\n" "/inch {72 mul} def\n" "/left {0.5 inch} def\n" "/bottom {1.0 inch} def\n" "/bottom_hline {2.0 inch} def\n" "/footer {0.9 inch} def\n" "/top {10.5 inch 14 sub} def\n" "/buffer 1024 string def\n" "/scratch 128 string def\n" "/printobject {\n" "dup 128 string cvs dup (--nostringval--) eq {\n" "pop type24 string cvs\n" "}{\n" "exch pop\n" "} ifelse\n" "} bind def\n"); /* Checkbox stuff */ fprintf(out, "/checkboxcheck {\n" "%%currentpoint 6 add moveto\n" "%%4 -5 rlineto\n" "%%6 12 rlineto\n" "/ZapfDingbats 14 selectfont (4) show\n" /* or 3 if you prefer */ "} bind def\n" "/checkboxbox {\n" "8 0 rlineto\n" "0 8 rlineto\n" "-8 0 rlineto\n" "0 -8 rlineto\n" "} bind def\n" "/checkbox {\n" "currentpoint\n" "gsave\n" "newpath\n" "moveto\n" "1 setlinewidth\n" "checkboxbox\n" "stroke\n" "grestore\n" "} bind def\n" "/checkedbox {\n" "currentpoint\n" "gsave\n" "newpath\n" "moveto\n" "1 setlinewidth\n" "checkboxbox\n" "checkboxcheck\n" "stroke\n" "grestore\n" "} bind def\n" ); /* Recode font function */ fprintf(out, "/Recode {\n" "exch\n" "findfont\n" "dup length dict\n" "begin\n" "{ def\n" "} forall\n" "/Encoding ISOLatin1Encoding def\n" "currentdict\n" "end\n" "definefont pop\n" "} bind def\n"); fprintf(out, "/Times-Roman /Times-Roman-ISOLatin1 Recode\n" "/Courier /Courier-ISOLatin1 Recode\n" "/Courier-Bold /Courier-Bold-ISOLatin1 Recode\n"); fprintf(out, "/hline {\n" "currentpoint 1 add currentpoint 1 add\n" "currentpoint 4 add currentpoint 4 add\n" "gsave\n" "newpath\n" "moveto\n" "exch\n" "1.0 inch add\n" "exch\n" "7 setlinewidth\n" "lineto\n" "stroke\n" "%%\n" "newpath\n" "moveto\n" "exch\n" "7.5 inch add\n" "exch\n" "1 setlinewidth\n" "lineto\n" "stroke\n" "grestore\n" "} bind def\n" "%%\n" "%%\n"); fprintf(out, "/setup\n" "{\n" "/Times-Roman-ISOLatin1 10 selectfont\n" "left footer moveto\n" "(%s) show\n" "7.5 inch footer moveto\n" "(J-Pilot) show\n" "%% This assumes that the prev page number is on the stack\n" "4.25 inch footer moveto\n" "1 add dup printobject show\n" "/Courier-ISOLatin1 12 selectfont\n" "left top moveto\n" "} bind def\n" "/printit\n" "{\n" "{ %%loop\n" "currentfile buffer readline { %%ifelse\n" "("Q_FLAG_CHAR"LINEFEED) search { %%if\n" "pop pop pop showpage setup ( )\n" "currentpoint 14 add moveto\n" "} if\n" "("Q_FLAG_CHAR"HLINE) search { %%if\n" "currentpoint exch pop bottom_hline le { %%if\n" "pop pop pop\n" "showpage setup\n" "0 0 0\n" "} if\n" "hline\n" "pop pop pop ( )\n" "} if\n" "("Q_FLAG_CHAR"END) search { %%if\n" " showpage stop\n" "} if\n" "("Q_FLAG_CHAR"C12) search {\n" "/Courier-ISOLatin1 12 selectfont\n" "currentpoint 14 add moveto\n" "pop pop pop ( )\n" "} if\n" "("Q_FLAG_CHAR"CB12) search {\n" "/Courier-Bold-ISOLatin1 12 selectfont\n" "currentpoint 14 add moveto\n" "pop pop pop ( )\n" "} if\n", str ); /* Check box */ fprintf(out, "("Q_FLAG_CHAR"CHECKBOX) search {\n" "currentpoint exch pop bottom_hline le {\n" "pop pop pop\n" "showpage setup\n" "0 0 0\n" "} if\n" "checkbox\n" "currentpoint 14 add moveto\n" "pop pop pop ( )\n" "} if\n" ); /* Check box */ fprintf(out, "("Q_FLAG_CHAR"CHECKEDBOX) search {\n" "currentpoint exch pop bottom_hline le {\n" "pop pop pop\n" "showpage setup\n" "0 0 0\n" "} if\n" "checkedbox\n" "currentpoint 14 add moveto\n" "pop pop pop ( )\n" "} if\n" ); fprintf(out, "%%%%EndResource\n" "%%%%EndProlog\n"); /* XXX not exactly sure about position */ fprintf(out, "gsave show grestore\n" "currentpoint 14 sub moveto\n" "currentpoint exch pop bottom le { %%if\n" "showpage setup\n" "} if\n" "}{ %%else\n" "showpage exit\n" "} ifelse\n" "} loop\n" "} bind def\n" "0 %%The page number minus 1\n" "setup printit\n" ); return EXIT_SUCCESS; } int print_contacts(ContactList *contact_list, struct ContactAppInfo *contact_app_info, address_schema_entry *schema, int schema_size) { long one_rec_per_page; long lines_between_recs; ContactList *temp_cl; MyContact *mcont; int show1, show2, show3; int i; int address_i, phone_i, IM_i; char str[100]; char spaces[24]; char birthday_str[255]; const char *pref_date; char *utf; long char_set; #ifdef HAVE_LOCALE_H char *current_locale; #endif out = print_open(); if (!out) { return EXIT_FAILURE; } #ifdef HAVE_LOCALE_H current_locale = setlocale(LC_NUMERIC,"C"); #endif memset(spaces, ' ', sizeof(spaces)); get_pref(PREF_CHAR_SET, &char_set, NULL); print_address_header(); switch (addr_sort_order) { case SORT_BY_LNAME: default: show1=contLastname; show2=contFirstname; show3=contCompany; break; case SORT_BY_FNAME: show1=contFirstname; show2=contLastname; show3=contCompany; break; case SORT_BY_COMPANY: show1=contCompany; show2=contLastname; show3=contFirstname; break; } get_pref(PREF_PRINT_ONE_PER_PAGE, &one_rec_per_page, NULL); get_pref(PREF_NUM_BLANK_LINES, &lines_between_recs, NULL); for (temp_cl = contact_list; temp_cl; temp_cl=temp_cl->next) { fprintf(out, "%cHLINE\n", FLAG_CHAR); str[0]='\0'; if (temp_cl->mcont.cont.entry[show1] || temp_cl->mcont.cont.entry[show2]) { if (temp_cl->mcont.cont.entry[show1] && temp_cl->mcont.cont.entry[show2]) { g_snprintf(str, sizeof(str), "%s, %s", temp_cl->mcont.cont.entry[show1], temp_cl->mcont.cont.entry[show2]); } if (temp_cl->mcont.cont.entry[show1] && ! temp_cl->mcont.cont.entry[show2]) { strncpy(str, temp_cl->mcont.cont.entry[show1], 48); } if (! temp_cl->mcont.cont.entry[show1] && temp_cl->mcont.cont.entry[show2]) { strncpy(str, temp_cl->mcont.cont.entry[show2], 48); } } else if (temp_cl->mcont.cont.entry[show3]) { strncpy(str, temp_cl->mcont.cont.entry[show3], 48); } else { strcpy(str, "-Unnamed-"); } courier_bold_12(); fprintf(out, "%s\n", str); courier_12(); mcont = &(temp_cl->mcont); address_i=phone_i=IM_i=0; for (i=0; icont.entry[schema[i].record_field]) { switch (schema[i].type) { case ADDRESS_GUI_IM_MENU_TEXT: g_snprintf(str, 18, "%s:%s", contact_app_info->IMLabels[mcont->cont.IMLabel[IM_i]], spaces); fprintf(out, "%s", str); IM_i++; break; case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: g_snprintf(str, 18, "%s:%s", contact_app_info->phoneLabels[mcont->cont.phoneLabel[phone_i]], spaces); fprintf(out, "%s", str); phone_i++; break; case ADDRESS_GUI_ADDR_MENU_TEXT: g_snprintf(str, 18, "%s:%s", contact_app_info->addrLabels[mcont->cont.addressLabel[address_i]], spaces); fprintf(out, "%s", str); address_i++; break; default: if (contact_app_info->labels[schema[i].record_field]) { utf = charset_p2newj(contact_app_info->labels[schema[i].record_field], 16, char_set); g_snprintf(str, 18, "%s:%s", utf, spaces); fprintf(out, "%s", str); g_free(utf); } else { g_snprintf(str, 18, ":%s", spaces); fprintf(out, "%s", str); } } switch (schema[i].type) { case ADDRESS_GUI_LABEL_TEXT: case ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT: case ADDRESS_GUI_IM_MENU_TEXT: case ADDRESS_GUI_ADDR_MENU_TEXT: case ADDRESS_GUI_WEBSITE_TEXT: f_indent_print(out, 17, mcont->cont.entry[schema[i].record_field]); fprintf(out, "\n"); break; case ADDRESS_GUI_BIRTHDAY: if (mcont->cont.birthdayFlag) { birthday_str[0]='\0'; get_pref(PREF_SHORTDATE, NULL, &pref_date); strftime(birthday_str, sizeof(birthday_str), pref_date, &(mcont->cont.birthday)); g_snprintf(str, 18, "%s:%s", contact_app_info->labels[schema[i].record_field] ? contact_app_info->labels[schema[i].record_field] : "", spaces); fprintf(out, "%s", str); f_indent_print(out, 17, birthday_str); fprintf(out, "\n"); } break; } } } if (one_rec_per_page) { fprintf(out, "%cLINEFEED\n", FLAG_CHAR); } else { for (i=lines_between_recs; i>0; i--) { fprintf(out, "\n"); } } } print_close(out); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, current_locale); #endif return EXIT_SUCCESS; } /* * ToDo code */ int print_todos(ToDoList *todo_list, char *category_name) { long one_rec_per_page; long lines_between_recs; ToDoList *temp_l; struct ToDo *todo; int indent; const char *datef; char str[100]; time_t ltime; struct tm *now; #ifdef HAVE_LOCALE_H char *current_locale; #endif out = print_open(); if (!out) { return EXIT_FAILURE; } #ifdef HAVE_LOCALE_H current_locale = setlocale(LC_NUMERIC,"C"); #endif fprintf(out, "%%!PS-Adobe-2.0\n\n" "/PageSize (%s) def\n\n", PaperSizes[PAPER_Letter]); print_common_prolog(out); print_common_setup(out); fprintf(out, "/CategoryName (%s) def\n", category_name); print_todo_header(out); get_pref(PREF_PRINT_ONE_PER_PAGE, &one_rec_per_page, NULL); get_pref(PREF_NUM_BLANK_LINES, &lines_between_recs, NULL); get_pref(PREF_SHORTDATE, NULL, &datef); time(<ime); now = localtime(<ime); strftime(str, sizeof(str), datef, now); indent=strlen(str) + 8; for (temp_l = todo_list; temp_l; temp_l=temp_l->next) { todo = &(temp_l->mtodo.todo); fprintf(out, todo->complete ? "true " : "false "); fprintf(out, "%d ", todo->priority); if (todo->indefinite) { sprintf(str, "%s ", "No Due"); str[indent-8]='\0'; } else { strftime(str, sizeof(str), datef, &(todo->due)); } fprintf(out, "(%s) ", str); if (todo->description) { int len; char *buf; len = strlen(todo->description); buf = malloc(2 * len + 1); memset(buf, 0, 2 * len + 1); ps_strncat(buf, todo->description, 2 * len); fprintf(out, "(%s) ", buf); free(buf); } else { fprintf(out, "() "); } if ((todo->note) && todo->note[0]) { int len; char *buf; len = strlen(todo->note); buf = malloc(2 * len + 1); memset(buf, 0, 2 * len + 1); ps_strncat(buf, todo->note, 2 * len); fprintf(out, "(%s) ", buf); free(buf); } else { fprintf(out, "()"); } fprintf(out, " Todo\n"); if (one_rec_per_page) { fprintf(out, "NewPage\n"); } } fprintf(out, "showpage\n"); print_close(out); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, current_locale); #endif return EXIT_SUCCESS; } /* * Memo code */ int print_memos(MemoList *memo_list) { long one_rec_per_page; long lines_between_recs; MemoList *temp_l; struct Memo *memo; int i; #ifdef HAVE_LOCALE_H char *current_locale; #endif out = print_open(); if (!out) { return EXIT_FAILURE; } #ifdef HAVE_LOCALE_H current_locale = setlocale(LC_NUMERIC,"C"); #endif print_address_header(); get_pref(PREF_PRINT_ONE_PER_PAGE, &one_rec_per_page, NULL); get_pref(PREF_NUM_BLANK_LINES, &lines_between_recs, NULL); courier_12(); for (temp_l = memo_list; temp_l; temp_l=temp_l->next) { memo = &(temp_l->mmemo.memo); if (memo->text) { fprintf(out, "%cHLINE\n", FLAG_CHAR); f_indent_print(out, 0, memo->text); fprintf(out, "\n"); } if (one_rec_per_page) { fprintf(out, "%cLINEFEED\n", FLAG_CHAR); } else { for (i=lines_between_recs; i>0; i--) { fprintf(out, "\n"); } } } fprintf(out, "%cEND\n", FLAG_CHAR); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, current_locale); #endif print_close(out); return EXIT_SUCCESS; } jpilot-1.8.2/jp-pi-contact.h0000664000175000017500000000402012340261240012555 00000000000000/******************************************************************************* * jp-pi-contact.h: Translate Palm contact data formats * A module of J-Pilot http://jpilot.org * * Copyright (C) 2003-2014 by Judd Montgomery * * This code is NOT derived from pi-contact.h from pilot-link. * pilot-link's pi-contact.h was based on this code. * This code was however based on pi-address.h and was originally written to * be part of pilot-link, however licensing issues * prevent this code from being part of pilot-link. * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __JP_PI_CONTACT_H_ #define __JP_PI_CONTACT_H_ #include "config.h" #include #define NUM_CONTACT_FIELDS 40 #ifdef __cplusplus extern "C" { #endif extern void jp_free_Contact PI_ARGS((struct Contact *)); extern int jp_unpack_Contact PI_ARGS((struct Contact *, pi_buffer_t *)); extern int jp_pack_Contact PI_ARGS((struct Contact *, pi_buffer_t *)); extern int jp_unpack_ContactAppInfo PI_ARGS((struct ContactAppInfo *, pi_buffer_t *)); extern int jp_pack_ContactAppInfo PI_ARGS((struct ContactAppInfo *, pi_buffer_t *buf)); extern int jp_Contact_add_blob PI_ARGS((struct Contact *, struct ContactBlob *)); extern int jp_Contact_add_picture PI_ARGS((struct Contact *, struct ContactPicture *)); #ifdef __cplusplus } #endif #endif jpilot-1.8.2/ABOUT-NLS0000664000175000017500000023334012320101153011166 000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. 1.1 Quick configuration advice ============================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. 1.2 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the included GNU `gettext' library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will, respectively, bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might not be desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.3 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.4 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.5 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of October 2006. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo +----------------------------------------------------+ GNUnet | [] | a2ps | [] [] [] [] [] | aegis | () | ant-phone | () | anubis | [] | ap-utils | | aspell | [] [] [] [] [] | bash | [] [] [] | batchelor | [] | bfd | | bibshelf | [] | binutils | [] | bison | [] [] | bison-runtime | | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | [] [] | coreutils | [] [] [] | cpio | | cpplib | [] [] [] | cryptonit | [] | darkstat | [] () [] | dialog | [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] | e2fsprogs | [] [] | enscript | [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] | findutils | [] [] [] | flex | [] [] [] | fslint | [] | gas | | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] | gimp-print | [] [] [] [] | gip | [] | gliv | [] | glunarclock | [] | gmult | [] [] | gnubiff | () | gnucash | () () [] | gnucash-glossary | [] () | gnuedu | | gnulib | [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | | gpe-edit | [] | gpe-filemanager | | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-package | | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | | gphoto2 | [] [] [] [] | gprof | [] [] | gpsdrive | () () | gramadoir | [] [] | grep | [] [] [] [] [] [] | gretl | | gsasl | | gss | | gst-plugins | [] [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | () | gtkam | [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] | id-utils | [] [] | impost | | indent | [] [] [] | iso_3166 | [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] | jpilot | [] | jtag | | jwhois | | kbd | [] [] [] [] | keytouch | | keytouch-editor | | keytouch-keyboa... | | latrine | () | ld | [] | leafpad | [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] | libgpg-error | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | | libiconv | [] [] | libidn | [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] | make | [] [] | man-db | [] () [] [] | minicom | [] [] [] | mysecretdiary | [] [] | nano | [] [] [] | nano_1_0 | [] () [] [] | opcodes | [] | parted | | pilot-qof | [] | psmisc | [] | pwdutils | | python | | qof | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] | sharutils | [] [] [] [] [] [] | shishi | | silky | | skencil | [] () | sketch | [] () | solfege | | soundtracker | [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] | texinfo | [] [] [] | textutils | [] [] [] | tin | () () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] | xchat | [] [] [] [] [] [] | xkeyboard-config | | xpad | [] [] | +----------------------------------------------------+ af am ar az be bg bs ca cs cy da de el en en_GB eo 10 0 1 2 9 22 1 42 41 2 60 95 16 1 17 16 es et eu fa fi fr ga gl gu he hi hr hu id is it +--------------------------------------------------+ GNUnet | | a2ps | [] [] [] () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] [] | aspell | [] [] [] | bash | [] [] [] | batchelor | [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cpplib | [] [] | cryptonit | [] | darkstat | [] () [] [] [] | dialog | [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] | error | [] [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] [] | gcc | [] | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gip | [] [] [] | gliv | () | glunarclock | [] [] [] | gmult | [] [] [] | gnubiff | () () | gnucash | () () () | gnucash-glossary | [] [] | gnuedu | [] | gnulib | [] [] [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] [] [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] [] [] | gpe-filemanager | [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | () () [] () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] [] | gsasl | [] [] | gss | [] | gst-plugins | [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] [] | impost | [] [] | indent | [] [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] | iso_3166_2 | [] | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] [] | jpilot | [] [] | jtag | [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] [] | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] [] [] | libgpg-error | | libgphoto2 | [] [] [] | libgphoto2_port | [] [] | libgsasl | [] [] | libiconv | [] [] | libidn | [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] [] | lynx | [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] [] [] [] [] [] | man-db | () | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] [] | nano_1_0 | [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] | sed | [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] [] | shishi | | silky | [] | skencil | [] [] | sketch | [] [] | solfege | [] | soundtracker | [] [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] | textutils | [] [] [] [] [] | tin | [] () | tp-robot | [] [] [] [] | tuxpaint | [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] [] [] [] | vorbis-tools | [] [] | wastesedge | () | wdiff | [] [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] [] | xchat | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | xpad | [] [] [] | +--------------------------------------------------+ es et eu fa fi fr ga gl gu he hi hr hu id is it 88 22 14 2 40 115 61 14 1 8 1 6 59 31 0 52 ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no +-------------------------------------------------+ GNUnet | | a2ps | () [] [] () | aegis | () | ant-phone | [] | anubis | [] [] [] | ap-utils | [] | aspell | [] [] | bash | [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | | bison | [] [] [] | bison-runtime | [] [] [] | bluez-pin | [] [] [] | cflow | | clisp | [] | console-tools | | coreutils | [] | cpio | | cpplib | [] | cryptonit | [] | darkstat | [] [] | dialog | [] [] | diffutils | [] [] [] | doodle | | e2fsprogs | [] | enscript | [] | error | [] | fetchmail | [] [] | fileutils | [] [] | findutils | [] | flex | [] [] | fslint | [] [] | gas | | gawk | [] [] | gbiff | [] | gcal | | gcc | | gettext-examples | [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gimp-print | [] [] | gip | [] [] | gliv | [] | glunarclock | [] [] | gmult | [] [] | gnubiff | | gnucash | () () | gnucash-glossary | [] | gnuedu | | gnulib | [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] | gpe-clock | [] [] [] | gpe-conf | [] [] | gpe-contacts | [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] | gphoto2 | [] [] | gprof | | gpsdrive | () () () | gramadoir | () | grep | [] [] [] [] | gretl | | gsasl | [] | gss | | gst-plugins | [] | gst-plugins-base | | gst-plugins-good | [] | gstreamer | [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] | gutenprint | | hello | [] [] [] [] [] [] | id-utils | [] | impost | | indent | [] [] | iso_3166 | [] | iso_3166_2 | [] | iso_4217 | [] [] [] | iso_639 | [] [] | jpilot | () () () | jtag | | jwhois | [] | kbd | [] | keytouch | [] | keytouch-editor | | keytouch-keyboa... | | latrine | [] | ld | | leafpad | [] [] | libc | [] [] [] [] [] | libexif | | libextractor | | libgpewidget | [] | libgpg-error | | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | | libidn | [] [] | lifelines | [] | lilypond | | lingoteach | [] | lynx | [] [] | m4 | [] [] | mailutils | | make | [] [] [] | man-db | () | minicom | [] | mysecretdiary | [] | nano | [] [] [] | nano_1_0 | [] [] [] | opcodes | [] | parted | [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | | radius | | recode | [] | rpm | [] [] | screem | [] | scrollkeeper | [] [] [] [] | sed | [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] | shishi | | silky | [] | skencil | | sketch | | solfege | | soundtracker | | sp | () | stardict | [] [] | system-tools-ba... | [] [] [] [] | tar | [] [] [] | texinfo | [] [] [] | textutils | [] [] [] | tin | | tp-robot | [] | tuxpaint | [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] | vorbis-tools | [] | wastesedge | [] | wdiff | [] [] | wget | [] [] | xchat | [] [] [] [] | xkeyboard-config | [] | xpad | [] [] [] | +-------------------------------------------------+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no 52 24 2 2 1 3 0 2 3 21 0 15 1 97 5 1 nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta +------------------------------------------------------+ GNUnet | | a2ps | () [] [] [] [] [] [] | aegis | () () | ant-phone | [] [] | anubis | [] [] [] | ap-utils | () | aspell | [] [] | bash | [] [] [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | [] [] | bison | [] [] [] [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] [] | cflow | [] | clisp | [] | console-tools | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cpplib | [] | cryptonit | [] [] | darkstat | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] [] | fileutils | [] [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | fslint | [] [] [] [] | gas | | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gimp-print | [] [] | gip | [] [] [] [] | gliv | [] [] [] [] | glunarclock | [] [] [] [] [] [] | gmult | [] [] [] [] | gnubiff | () | gnucash | () [] | gnucash-glossary | [] [] [] | gnuedu | | gnulib | [] [] [] [] [] | gnunet-gtk | [] | gnutls | [] [] | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] [] [] [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] [] [] [] | gpe-login | [] [] [] [] [] [] [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] | gretl | [] | gsasl | [] [] [] | gss | [] [] [] | gst-plugins | [] [] [] [] | gst-plugins-base | [] | gst-plugins-good | [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | impost | [] | indent | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] | jpilot | | jtag | [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] | ld | [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] [] | libgpewidget | [] [] [] [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] | libidn | [] [] () | lifelines | [] [] | lilypond | | lingoteach | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] [] | make | [] [] [] [] | man-db | [] [] | minicom | [] [] [] [] [] | mysecretdiary | [] [] [] [] | nano | [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] [] | parted | [] | pilot-qof | [] | psmisc | [] [] | pwdutils | [] [] | python | | qof | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | rpm | [] [] [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | silky | [] | skencil | [] [] [] | sketch | [] [] [] | solfege | [] | soundtracker | [] [] | sp | | stardict | [] [] [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] | tin | () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] | wastesedge | | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] | xchat | [] [] [] [] [] [] [] | xkeyboard-config | [] [] | xpad | [] [] [] | +------------------------------------------------------+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta 0 2 3 58 30 54 5 73 72 4 40 46 11 50 128 2 tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu +---------------------------------------------------+ GNUnet | [] | 2 a2ps | [] [] [] | 19 aegis | | 0 ant-phone | [] [] | 6 anubis | [] [] [] | 11 ap-utils | () [] | 4 aspell | [] [] [] | 15 bash | [] | 11 batchelor | [] [] | 9 bfd | | 1 bibshelf | [] | 7 binutils | [] [] [] | 9 bison | [] [] [] | 19 bison-runtime | [] [] [] | 15 bluez-pin | [] [] [] [] [] [] | 28 cflow | [] [] | 5 clisp | | 6 console-tools | [] [] | 5 coreutils | [] [] | 16 cpio | [] [] [] | 9 cpplib | [] [] [] [] | 11 cryptonit | | 5 darkstat | [] () () | 15 dialog | [] [] [] [] [] | 30 diffutils | [] [] [] [] | 28 doodle | [] | 6 e2fsprogs | [] [] | 10 enscript | [] [] [] | 16 error | [] [] [] [] | 18 fetchmail | [] [] | 12 fileutils | [] [] [] | 18 findutils | [] [] [] | 17 flex | [] [] | 15 fslint | [] | 9 gas | [] | 3 gawk | [] [] | 15 gbiff | [] | 5 gcal | [] | 5 gcc | [] [] [] | 6 gettext-examples | [] [] [] [] [] [] | 27 gettext-runtime | [] [] [] [] [] [] | 28 gettext-tools | [] [] [] [] [] | 19 gimp-print | [] [] | 12 gip | [] [] | 12 gliv | [] [] | 8 glunarclock | [] [] [] | 15 gmult | [] [] [] [] | 15 gnubiff | [] | 1 gnucash | () | 2 gnucash-glossary | [] [] | 9 gnuedu | [] | 2 gnulib | [] [] [] [] [] | 28 gnunet-gtk | | 1 gnutls | | 2 gpe-aerial | [] [] | 14 gpe-beam | [] [] | 14 gpe-calendar | [] | 3 gpe-clock | [] [] [] [] | 21 gpe-conf | [] [] | 14 gpe-contacts | [] [] | 10 gpe-edit | [] [] [] [] | 20 gpe-filemanager | [] | 6 gpe-go | [] [] | 15 gpe-login | [] [] [] [] [] | 21 gpe-ownerinfo | [] [] [] [] | 21 gpe-package | [] | 6 gpe-sketchbook | [] [] | 16 gpe-su | [] [] [] | 20 gpe-taskmanager | [] [] [] | 20 gpe-timesheet | [] [] [] [] | 18 gpe-today | [] [] [] [] [] | 21 gpe-todo | [] | 7 gphoto2 | [] [] [] [] | 20 gprof | [] [] | 11 gpsdrive | | 4 gramadoir | [] | 7 grep | [] [] [] [] | 34 gretl | | 4 gsasl | [] [] | 8 gss | [] | 5 gst-plugins | [] [] [] | 15 gst-plugins-base | [] [] [] | 9 gst-plugins-good | [] [] [] [] [] | 20 gstreamer | [] [] [] | 17 gtick | [] | 3 gtkam | [] | 13 gtkorphan | [] | 7 gtkspell | [] [] [] [] [] [] | 26 gutenprint | | 3 hello | [] [] [] [] [] | 37 id-utils | [] [] | 14 impost | [] | 4 indent | [] [] [] [] | 25 iso_3166 | [] [] [] [] | 16 iso_3166_2 | | 2 iso_4217 | [] [] | 14 iso_639 | [] | 14 jpilot | [] [] [] [] | 7 jtag | [] | 3 jwhois | [] [] [] | 13 kbd | [] [] | 12 keytouch | [] | 4 keytouch-editor | | 2 keytouch-keyboa... | [] | 3 latrine | [] [] | 8 ld | [] [] [] [] | 8 leafpad | [] [] [] [] | 23 libc | [] [] [] | 23 libexif | [] | 4 libextractor | [] | 5 libgpewidget | [] [] [] | 19 libgpg-error | [] | 4 libgphoto2 | [] | 8 libgphoto2_port | [] [] [] | 11 libgsasl | [] | 8 libiconv | [] | 7 libidn | [] [] | 10 lifelines | | 4 lilypond | | 2 lingoteach | [] | 6 lynx | [] [] [] | 15 m4 | [] [] [] | 18 mailutils | [] | 8 make | [] [] [] | 20 man-db | [] | 6 minicom | [] | 14 mysecretdiary | [] [] | 12 nano | [] [] | 17 nano_1_0 | [] [] [] | 18 opcodes | [] [] | 10 parted | [] [] [] | 10 pilot-qof | [] | 3 psmisc | [] | 10 pwdutils | [] | 3 python | | 0 qof | [] | 4 radius | [] | 6 recode | [] [] [] | 25 rpm | [] [] [] [] | 14 screem | [] | 2 scrollkeeper | [] [] [] [] | 26 sed | [] [] [] | 22 sh-utils | [] | 15 shared-mime-info | [] [] [] [] | 24 sharutils | [] [] [] | 23 shishi | | 1 silky | [] | 4 skencil | [] | 7 sketch | | 6 solfege | | 2 soundtracker | [] [] | 9 sp | [] | 3 stardict | [] [] [] [] | 11 system-tools-ba... | [] [] [] [] [] [] [] | 37 tar | [] [] [] [] | 20 texinfo | [] [] [] | 15 textutils | [] [] [] | 17 tin | | 1 tp-robot | [] [] [] | 10 tuxpaint | [] [] [] | 16 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] [] | 20 vorbis-tools | [] [] | 11 wastesedge | | 1 wdiff | [] [] | 22 wget | [] [] [] | 19 xchat | [] [] [] [] | 29 xkeyboard-config | [] [] [] [] | 11 xpad | [] [] [] | 14 +---------------------------------------------------+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu 170 domains 0 1 1 77 39 0 136 10 1 48 5 54 0 2028 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If October 2006 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. 1.6 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. jpilot-1.8.2/utils.h0000664000175000017500000004344312340261240011261 00000000000000/******************************************************************************* * utils.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __UTILS_H__ #define __UTILS_H__ #include #include #include #include #include #include #include #include #include #include #include #include "jp-pi-contact.h" #include "libplugin.h" #include "japanese.h" #include "cp1250.h" #include "russian.h" #define PRINT_FILE_LINE printf("%s line %d\n", __FILE__, __LINE__) #ifdef ENABLE_PROMETHEON # define PN "CoPilot" # define EPN "copilot" #else # define PN "J-Pilot" # define EPN "jpilot" #endif /* PRODID string for ical export */ #define FPI_STRING "-//Judd Montgomery//NONSGML "PN" "VERSION"//EN" /* This is how often the clock updates in milliseconds */ #define CLOCK_TICK 1000 /* How clist widget should appear for main apps */ #define SHADOW GTK_SHADOW_ETCHED_OUT /* Define the maximum length of a category name * when expressed in Pilot character set (assuming 15 * character plus a delimiter) or in host character * set (might be 50 or more if UTF-8). * Note : host length is temporarily kept as 16 until all * consequences are identified. In the meantime category * names may be (hopefully safely) truncated. */ #define NUM_CATEGORIES 16 #define HOSTCAT_NAME_SZ 16 #define PILOTCAT_NAME_SZ 16 /* Constant used by J-Pilot to indicate "All" category */ #define CATEGORY_ALL 300 /* Used to mark the entry in the clist to add a record */ #define CLIST_NEW_ENTRY_DATA 100 #define CLIST_ADDING_ENTRY_DATA 101 #define CLIST_MIN_DATA 199 #define DIALOG_SAID_1 454 #define DIALOG_SAID_PRINT 454 #define DIALOG_SAID_FOURTH 454 #define DIALOG_SAID_2 455 #define DIALOG_SAID_LAST 455 #define DIALOG_SAID_3 456 #define DIALOG_SAID_CANCEL 456 #define DIALOG_SAID_4 457 /* Repeat event dialog */ #define DIALOG_SAID_RPT_CURRENT 454 #define DIALOG_SAID_RPT_FUTURE 455 #define DIALOG_SAID_RPT_ALL 456 #define DIALOG_SAID_RPT_CANCEL 457 /* Import dialog */ #define DIALOG_SAID_IMPORT_YES 455 #define DIALOG_SAID_IMPORT_ALL 456 #define DIALOG_SAID_IMPORT_SKIP 457 #define DIALOG_SAID_IMPORT_QUIT 458 #define DIALOG_INFO 1 #define DIALOG_QUESTION 2 #define DIALOG_ERROR 3 #define DIALOG_WARNING 4 #define CAL_DONE 100 #define CAL_CANCEL 101 #define PIXMAP_NOTE 100 #define PIXMAP_ALARM 101 #define PIXMAP_BOX_CHECK 102 #define PIXMAP_BOX_CHECKED 103 #define PIXMAP_FLOAT_CHECK 104 #define PIXMAP_FLOAT_CHECKED 105 #define PIXMAP_SDCARD 106 #define SORT_ASCENDING 100 #define SORT_DESCENDING 101 /* Import defines */ #define MAX_IMPORT_TYPES 10 /* Must be more than the following types */ #define IMPORT_TYPE_UNKNOWN 99 #define IMPORT_TYPE_TEXT 100 #define IMPORT_TYPE_DAT 101 #define IMPORT_TYPE_CSV 102 #define IMPORT_TYPE_XML 103 /* Export defines */ #define EXPORT_TYPE_UNKNOWN 99 #define EXPORT_TYPE_TEXT 100 #define EXPORT_TYPE_DAT 101 #define EXPORT_TYPE_CSV 102 #define EXPORT_TYPE_XML 103 #define EXPORT_TYPE_VCARD 104 #define EXPORT_TYPE_VCARD_GMAIL 105 #define EXPORT_TYPE_ICALENDAR 106 #define EXPORT_TYPE_LDIF 107 #define EXPORT_TYPE_BFOLDERS 108 #define EXPORT_TYPE_KEEPASSX 109 /* DAT file types */ #define DAT_DATEBOOK_FILE 10 #define DAT_ADDRESS_FILE 11 #define DAT_TODO_FILE 12 #define DAT_MEMO_FILE 13 /* Pilot-link 0.12 is broken and missing pi_uid_t */ typedef recordid_t pi_uid_t; /* Unique ID used to locate a record, say after a search or GUI update */ extern unsigned int glob_find_id; typedef enum { DATEBOOK = 100L, ADDRESS, TODO, MEMO, CALENDAR, CONTACTS, TASKS, MEMOS, REDRAW } AppType; typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct Appointment appt; } MyAppointment; typedef struct AppointmentList_s { AppType app_type; struct AppointmentList_s *next; MyAppointment mappt; } AppointmentList; typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct Address addr; } MyAddress; typedef struct AddressList_s { AppType app_type; struct AddressList_s *next; MyAddress maddr; } AddressList; typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct ToDo todo; } MyToDo; typedef struct ToDoList_s { AppType app_type; struct ToDoList_s *next; MyToDo mtodo; } ToDoList; typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct Memo memo; } MyMemo; typedef struct MemoList_s { AppType app_type; struct MemoList_s *next; MyMemo mmemo; } MemoList; /* New OS PIM applications in OS 5.x */ /* Contacts */ typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct Contact cont; } MyContact; typedef struct ContactList_s { AppType app_type; struct ContactList_s *next; MyContact mcont; } ContactList; /* Calendar */ typedef struct { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct CalendarEvent cale; } MyCalendarEvent; typedef struct CalendarEventList_s { AppType app_type; struct CalendarEventList_s *next; MyCalendarEvent mcale; } CalendarEventList; struct search_record { AppType app_type; int plugin_flag; unsigned int unique_id; struct search_record *next; }; struct sorted_cats { char Pcat[32]; int cat_num; }; /* utils.c: The subroutines below are all from utils.c */ /* Takes an array of database names and changes the names * to the new PIM names */ void rename_dbnames(char dbname[][32]); /* Return usage string that must be freed by the caller */ void fprint_usage_string(FILE *out); int cat_compare(const void *v1, const void *v2); int get_timeout_interval(void); gint timeout_sync_up(gpointer data); gint timeout_date(gpointer data); int get_pixmaps(GtkWidget *widget, int which_one, GdkPixmap **out_pixmap, GdkBitmap **out_mask); int check_hidden_dir(void); int read_gtkrc_file(void); int get_home_file_name(const char *file, char *full_name, int max_size); int unpack_db_header(DBHeader *dbh, unsigned char *buffer); int find_next_offset(mem_rec_header *mem_rh, long fpos, unsigned int *next_offset, unsigned char *attrib, unsigned int *unique_id); /*The VP is a pointer to MyAddress, MyAppointment, etc. */ int delete_pc_record(AppType app_type, void *VP, int flag); int undelete_pc_record(AppType app_type, void *VP, int flag); void get_month_info(int month, int day, int year, int *dow, int *ndim); void free_mem_rec_header(mem_rec_header **mem_rh); void print_string(char *str, int len); int get_app_info(char *DB_name, unsigned char **buf, int *buf_size); int cleanup_pc_files(void); int setup_sync(unsigned int flags); /* Returns the number of the button that was pressed */ int dialog_generic(GtkWindow *main_window, char *title, int type, char *text, int nob, char *button_text[]); /* * Widget must be some widget used to get the main window from. * The main window passed in would be fastest. * This just calls dialog_generic with an OK button. */ int dialog_generic_ok(GtkWidget *widget, char *title, int type, char *text); /* * Widget must be some widget used to get the main window from. * The main window passed in would be fastest. * changed is MODIFY_FLAG, or NEW_FLAG */ int dialog_save_changed_record(GtkWidget *widget, int changed); int dialog_save_changed_record_with_cancel(GtkWidget *widget, int changed); /* mon 0-11 * day 1-31 * year (year - 1900) * This function will bring up the cal at mon, day, year * After a new date is selected it will return mon, day, year */ int cal_dialog(GtkWindow *main_window, const char *title, int monday_is_fdow, int *mon, int *day, int *year); void set_bg_rgb_clist_row(GtkWidget *clist, int row, int r, int g, int b); void set_fg_rgb_clist_cell(GtkWidget *clist, int row, int col, int r, int g, int b); void entry_set_multiline_truncate(GtkEntry *entry, gboolean value); void clist_clear(GtkCList *clist); void set_tooltip(int show_tooltip, GtkTooltips *tooltips, GtkWidget *widget, const gchar *tip_text, const gchar *tip_private); void clist_select_row(GtkCList *clist, int row, int column); int clist_find_id(GtkWidget *clist, unsigned int unique_id, int *found_at); int check_copy_DBs_to_home(void); int verify_csv_header(const char *header, int num_fields, const char *file_name); void free_search_record_list(struct search_record **sr); /* Copy src string into dest while escaping quotes with double quotes. * dest could be as long as strlen(src)*2. * Return value is the number of chars written to dest. */ int str_to_csv_str(char *dest, char *src); /* * Copy src string into dest while escaping carriage returns with
* dest could be as long as strlen(src)*5. * Return value is the number of chars written to dest. */ int str_to_keepass_str(char *dest, char *src); /* Copy src string into dest while escaping carriage returns, * backslashes, commas and semicolons. Also do line wrapping. * dest could be as long as strlen(src) * 2 + strlen(src) / 30. * Return value is the number of chars written to dest. */ int str_to_ical_str(char *, int, char *); /* Same as str_to_ical_str() except doesn't escape semicolons. */ int str_to_vcard_str(char *, int, char *); /* Parse the string and replace CR and LFs with spaces */ void remove_cr_lfs(char *str); /* Parse the string and replace CR and LFs with spaces * a null is written if len is reached */ void lstrncpy_remove_cr_lfs(char *dest, char *src, int len); /* Output LDIF format (RFC 2849) to file. * Name is name of item (e.g. "cn") * fmt ... is like printf. */ void ldif_out(FILE *f, const char *name, const char *fmt, ...); void cleanup_path(char *path); int add_days_to_date(struct tm *date, int n); int sub_days_from_date(struct tm *date, int n); int add_months_to_date(struct tm *date, int n); int sub_months_from_date(struct tm *date, int n); int add_years_to_date(struct tm *date, int n); int sub_years_from_date(struct tm *date, int n); time_t mktime_dst_adj(struct tm *tm); int dateToDays(struct tm *tm1); int find_prev_next(struct CalendarEvent *cale, time_t adv, struct tm *date1, struct tm *date2, struct tm *tm_prev, struct tm *tm_next, int *prev_found, int *next_found); int find_next_rpt_event(struct CalendarEvent *cale, struct tm *srch_start_tm, struct tm *next_tm); /* These are in utils.c for now */ /* * DB_name should be without filename ext, e.g. MemoDB * num is the number of records counted returned. */ int pdb_file_count_recs(char *DB_name, int *num); /* DB_name should be without filename ext, e.g. MemoDB * uid_in the the unique ID to remove from the pdb file */ int pdb_file_delete_record_by_id(char *DB_name, pi_uid_t uid_in); /* DB_name should be without filename ext, e.g. MemoDB * uid_in the the unique ID to modify from the pdb file * the other parameters are set in the pdb file for this record. */ int pdb_file_modify_record(char *DB_name, void *record_in, int size_in, int attr_in, int cat_in, pi_uid_t uid_in); /* DB_name should be without filename ext, e.g. MemoDB * uid is unique id in * bufp is a copy of the raw record (unpacked) and should be freed by caller * sizep is size of bufp returned * idxp is the index in the file rec was found * attrp is the attributes * catp is the category (index) */ int pdb_file_read_record_by_id(char *DB_name, pi_uid_t uid, void **bufp, size_t *sizep, int *idxp, int *attrp, int * catp); /* DB_name should be without filename ext, e.g. MemoDB * bufp is the packed app info block * size_in is the size of bufp */ int pdb_file_write_app_block(char *DB_name, void *bufp, size_t size_in); /* This copies the database (pdb, or prc) and writes the DBInfo privided * since there is no other way to set it in a file. */ int pdb_file_write_dbinfo(char *DB_name, struct DBInfo *Pinfo_in); void append_anni_years(char *desc, int max, struct tm *date, struct Appointment *a, struct CalendarEvent *cale); int get_highlighted_today(struct tm *date); int make_category_menu(GtkWidget **category_menu, GtkWidget **cat_menu_item, struct sorted_cats *sort_l, void (*selection_callback) (GtkWidget *item, int selection), int add_an_all_item, int add_edit_cat_item); int jp_copy_file(char *src, char *dest); FILE *jp_open_home_file(const char *filename, const char *mode); int jp_close_home_file(FILE *pc_in); /* Routines used for i18n string manipulation */ void multibyte_safe_strncpy(char *dst, char *src, size_t len); char *multibyte_safe_memccpy(char *dst, const char *src, int c, size_t len); /* host character set of J-Pilot (j) to Palm character set (p) */ void charset_j2p(char *buf, int max_len, long char_set); /* Palm character set (p) to host character set of J-Pilot (j) */ void charset_p2j(char *buf, int max_len, int char_set); char *charset_p2newj(const char *buf, int max_len, int char_set); /* Versions of character conversion routines for plugins */ void jp_charset_j2p(char *buf, int max_len); void jp_charset_p2j(char *buf, int max_len); char* jp_charset_p2newj(const char *buf, int max_len); size_t jp_strftime(char *s, size_t max, const char *format, const struct tm *tm); /******************************************************************************/ /* search_gui.c */ void cb_search_gui(GtkWidget *widget, gpointer data); /* install_gui.c */ int install_gui(GtkWidget *main_window, int w, int h, int x, int y); int install_append_line(const char *line); /* import_gui.c */ void import_gui(GtkWidget *main_window, GtkWidget *main_pane, char *type_desc[], int type_int[], int (*import_callback)(GtkWidget *parent_window, const char *file_path, int type)); int import_record_ask(GtkWidget *main_window, GtkWidget *pane, char *text, struct CategoryAppInfo *cai, char *old_cat_name, int priv, int suggested_cat_num, int *new_cat_num); /* dat.c */ /* Returns a dat type, or 0 */ int dat_check_if_dat_file(FILE *in); int dat_get_appointments(FILE *in, AppointmentList **alist, struct CategoryAppInfo *ai); int dat_get_addresses(FILE *in, AddressList **addrlist, struct CategoryAppInfo *ai); int dat_get_todos(FILE *in, ToDoList **todolist, struct CategoryAppInfo *ai); int dat_get_memos(FILE *in, MemoList **memolist, struct CategoryAppInfo *ai); /* jpilot.c */ void cb_app_button(GtkWidget *widget, gpointer data); void get_compile_options(char *string, int len); void call_plugin_gui(int number, int unique_id); void plugin_gui_refresh(int unique_id); /* datebook_gui.c */ int datebook_gui(GtkWidget *vbox, GtkWidget *hbox); int datebook_gui_cleanup(void); int datebook_refresh(int first, int do_init); void datebook_gui_setdate(int year, int month, int day); /* address_gui.c */ int address_gui(GtkWidget *vbox, GtkWidget *hbox); int address_gui_cleanup(void); int address_refresh(void); int address_cycle_cat(void); /* todo_gui.c */ int todo_gui(GtkWidget *vbox, GtkWidget *hbox); int todo_gui_cleanup(void); int todo_refresh(void); int todo_cycle_cat(void); /* memo_gui.c */ int memo_gui(GtkWidget *vbox, GtkWidget *hbox); int memo_gui_cleanup(void); int memo_refresh(void); int memo_cycle_cat(void); /* monthview_gui.c */ void monthview_gui(struct tm *date); /* weekview_gui.c */ void weekview_gui(struct tm *date_in); /* dialer.c */ int dialog_dial(GtkWindow *main_window, char *string, char *ext); /* category.c */ /* * widget is a widget inside the main window used to get main window handle * db_name should be without filename ext, e.g. MemoDB * cai is the category app info. This should be unpacked by the user since * category unpack functions are database specific. */ int edit_cats(GtkWidget *widget, char *db_name, struct CategoryAppInfo *cai); /* This changes every record with index old_index and changes it to new_index * returns the number of record's categories changed. */ int pdb_file_change_indexes(char *DB_name, int old_index, int new_index); int pdb_file_swap_indexes(char *DB_name, int old_cat, int new_cat); int edit_cats_change_cats_pc3(char *DB_name, int old_cat, int new_cat); int edit_cats_swap_cats_pc3(char *DB_name, int old_cat, int new_cat); int edit_cats_change_cats_pdb(char *DB_name, int old_cat, int new_cat); #endif jpilot-1.8.2/docs/0000775000175000017500000000000012340262141010751 500000000000000jpilot-1.8.2/docs/jpilot-dump.man0000664000175000017500000000145312320101153013626 00000000000000.TH JPILOT-DUMP 1 "September 2001" .SH NAME jpilot-dump \- A command line tool for dumping jpilot databases. .SH SYNOPSIS .B jpilot-dump [ options ] .SH DESCRIPTION Dump jpilot databases. .SH OPTIONS .TP .B \+B \+M \+A \+T format like date +format. .TP .B \-v displays version and exits. .TP .B \-h displays help and exits. .TP .B \-f displays help for format codes. .TP .B \-D dump DateBook. .TP .B \-N dump appts for today in DateBook. .TP .BI "\-N" YYYY/MM/DD dump appts on YYYY/MM/DD in DateBook. .TP .B \-A dump Address book. .TP .B \-T dump Todo list as CSV. .TP .B \-M dump Memos. .SH BUGS See @DOCDIR@/BUGS .SH SEE ALSO jpilot(1) .SH AUTHOR September 2001 jpilot-dump 0.98-1 Copyright (C) hvrietsc@yahoo.com. Manpage by Pablo Averbuj , updated Ludovic Rousseau jpilot-1.8.2/docs/jpilot-prefs-5.png0000664000175000017500000002167012320101153014156 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝ{TW¾/ð]Ý€€`ä) "Q@E”ø£&ãxf&Üè=Fb’¹³’OþJF_+™Ì¬s<ÇÄ‹ë:'7¹jDˆF1ΠFy(ŠÈCä%APy(„wwÝ?Jk:]OººÛýý¬¬¬¦Øµk×ëkuuS?æôéÓÄl¯¼òŠEúPÉb±c~/o½õ–EúPÉR±óÖ[oi,1{…ª!€jA B¨æ :•eY™y†™Á€-â†QÞéüˆƒ †Kꈕš.‚ðì=„ÿÚq Ì>©žÕÏ‹øs°,kxÉ\Øáí0æ)b@*3ˆeY™ÃKØ3ÀHã]þ“c!y%(uàP¦Ìµ˜èñ¤þÚÍðøaÆèG"8À„ Ôt"ìGfºèìR‹»ÀïV5;W‚0 †agtx +& Û /B¥ óKª£fütןÝðŠ hŒöšÌNÄ=AP{ÉcRÜ¿´Šo ä{Ö즵]•·Š€AêßÏŽÜ•Îpß ›Ö@e›aÍn˜ò¸´GÂû*Rû!H[;¥Ç£fÀf®”Ì#…¶¶Ñ@žÑ¿ôüÍÑýˆ{‚0<†7×,=ò.Ë7PÙÆˆâ§1`×dÞëˆîhÉ+A`ÄðʈˆÝ4!î-Š~*"ß@eÑU O?úÎŽ†íðƒ©LAìuJHíhÃ銟²)~ø0ÜÙMX¢ü‹töBý±ÇÁ=Ág™Ôw倇|–!õრB¨æ@ž–,1Ÿ¥úP ±`æwöY{ Vƒ{‚@5„ P !TCÕ‚@5„ P !TCÕ‚@5þ%! ïBz®];Ê0$0pŽšqÚˆÆÆ² ¦76–ùù…›Ü ËêÆ’·_¸+A£‰ÞÞî6,uqqìí8xð|[[·áo»»ûÒÓ/¿ùfB~~µTcÅ+A½^×ÓÓéê:¾·÷ñà`¿U*Ü›¼G,¾!--Õuu—,Xëääʲl}ý5–eGh³ðg«OË„`OOgqqæÐP¿£ã˜9s’\\ž#„ TTœéèhdFã°hQ Ã0W®|ÓÛûH£Ñ:88Íœùê¸q ûéïï.)9Ñ×÷˜a4‘‘+Æ÷W\ôÀ@³ó8BÃ0Ï=ç'ÕONÎ^½^—“³—kÀ¿NHx/+kû«¯þ‰’•µýùç·¶V ôÌœ™8aÂtBÈÏ?·¥3 ñõ}þöíK¯¼²™R_íΫ„0&>þ]õÊÉÉuÆŒåee'¹n Ãq&$¼'µAª«¼¿†½ÚÕÕCjˆNäètƒEEéÞÞSBBbäÇ̲lssE|üÆÜÜýƒƒ}ŽŽÎ„žžŽ¢¢£,K||¦ò-E'fem ‰}ø°nêÔX/¯`áê7¦ÊÍ+šVÉÉq599•qqaÉÉq_~yƨÁÝ»í~~ÏÉ4ÍVCsîÞ-ž>}ÉÝ»ÅQÝ㦋¬íaaËš›+~ŽˆøuWWkkkÍÀÀÏ3f$N˜0Èî#)¢{„'zŠî…ââLù! ÷ð®«Ëˆø•““+!„a˜ààyÜtÑU=ˤŽîÄ$„œ>½“;õ¸‰F§‰Éç#Ç2!X^ž0;((º¡áúYóçÿBHyùigg÷Å‹ÿ!dp°—û—aöìß:;»B=ºWVv2.îí_ös:$d¡ÏÔÇ[JJNpWOò¦LY“³×Ç'ÄÇgj@Àlî_9a? ï>½3!á=n.Ã׆\\ž‹§£ãnIÉqn÷”—ÿ0eÊ‚ÀÀ¨ÆÆR–e¹f••g—.ýÀÉÉup°w¸Ûjܸ ?ÿÜÆ½n £qJmWWøøwïÞ-)/ÿáéÖÝ" !CCý……‡¢£üàÁíqã|ÇŒq›0aú½{7ƒ‚¢¹ÍK}:ÜÞÞàï?“âï?«½½›ØÚZǽvttá^ôöv^¾üÕÅ‹ÿ»´ô{á»×ê*+³srö–”W¹>Ó¦½÷¶§gÐ;Wù{‚&ôÃáÖÂÃ#°·÷17¥££aâÄB÷ŽOHié÷÷îÝÔjÕw.$¿5dV„̤I3ø­-º D'B.]úïààjÒÔT:iÒ,Bˆ¿ÿ̦¦Ò§=×Oœ8ƒßRt¢á¢«#ܘ*7¯|ZIJž--d+~:¬Õ:zxVTü}üø'~ºÔÎ ˜E?Þ_¯š4i&÷º·÷ɤö‘ Ñ=“:¨ wŠü,uxK­šð,“:rT2sÀ£}O°¸83*ê5OÏÉ:Ýà™36ˆ}ËÁa̰ú;ÖsìXOÿYgÏþ»9ýB4~ƒÏ¡Ü㈎^ÝÞÞp÷nICCÑÂ…ÿsX‹xü¸uìX/îµâÖ ¦®ˆƒki©à'öôtzzNŽˆx¹³óžšNx=7oþ¿i"º5 Ç&µAžní›ü‘'º D'BfÌøµVëXV¦|¶77Wøø„.[¶iÙ²Y¶ì_BBbššÊ!žž“ù1ðE']áÆT¹yEÓêðáKqqa©©¯/ZväH>?}Ë–¤Í›W¾ÿ~bAÁ-îS©Æj¾'8~¼ÿŠ©Šk§HjI‘Ú#<ùSLáÞS§ÆVTü}` ‡²ì;…\f©_5Ñ#ÇÕu|gg#!¤¹Yäp29&^ ò×\¾¾¡‘‘¿™93±¸8³®®ÀÁaÌœ9+¹_͘‘XQqæÂ…=V«uŒÝÀ0Lxø¯._þo'§±¾¾Ï /CfÎ|õÆ“/¦éõ:WW ÞTI}}ayùV£ÑFEýV¦Ÿàày/¦988%$¼gøZ¾ÿ3¯_Oÿé§oï­öÉæ*)ùnp°6"âW*·XNÎ^†aF3yr4ÿѰèÖ0›ÔééiÏÍÝG‰Ž^ýt•Evèħ¿z¥¬ìTYÙÉÈH¹s¾©©,(hÿã¤I3®_Ïxþù„3~]T”þÓOW¼½ƒù‘‹NüåBEVG¸1Un^£+Á?üá !äáÃÇŸ~¨åï@´ÑÆ&OЄ£—Èî#QR{„Ÿ"Š©1ÜÃÛÏ/L§¼råk–eõz·w·\õ«&zäDDüêúõ ''× ¦ WÄð41á|4ÄÈ?_Á¦ž"ÓÑq3?ÿØè?Á‚ûVAsse]Ý%á; #Ö¤EØþà—-Kéç òÙÚÜ\tòä~ën [Û#¶6EÜ€åSÎî¿'8 ._þŠ»ÔŠúµÇÿ ø]S»Å_ŒÐ!¨,6ö-kDŒÜß#©‚(€½¡ç "iƒ{‚fƒ”bûƒ…{‚<ܲµñ(RsOW‚@5…+ÁÑ,o hôk`â°w›6-3÷Óa”^šáøæáí0<³¸º©ò‚@5„ P !TCÕ‚@5„ P !TCÕL”–šo!B&NŒVn`%f=OðäÉýò ví:‡¿:[fîCUeª@}øán©_¥¥m4,û°gO W â“OV~úi¦Qcþ·Š^xaêòå³5F«ÕVW79’¯¢„é0 ÛÈŠѧN©-mc´R[¶$q/üý½ššÚ!;vd—ÞÔÔN«Ó±99•ùùUÃ=ˆ‘'K3 “ššJˆçpg& z³g¿üò¬Ý»Owuõi4LBB8Ã0j 9[Jbb”ú4ÂGÞž=)ÂøãíÜ™Aqss~ï½— aùªi`2ˇ WjëÖ­2W‚RøK-Ÿqï¾û!LEE#ÿÛqã\ׯ_ìá1V§c¿ù&÷Îû†ó._™ž^ÐÕÕGÑëÙ žTÈôövß°a©‹‹coïÀÁƒçÛÚº¹?~uîÜ)nn.G^ðŒŒœìîîräH~YY× ;»,""€vß¾³<6\–p$[¶$iµZî‚nÇŽ Ñ¡Š®”(Ñ1óº»ûÒÓ/¿ùf‚¢"–.Á²¬N§ß¹ÓôZžyA.Õ\ño !q=½5kbüñf~~ulìtþ·ÉɋΞ½QQÑèõÏÿü"wYÄ ðª¯ \Prr\AAMNNe\\XrrÜ—_žá¦ww÷öÙñà`ß>ZqèP÷zÆ%\BZZ:33¯ÄÆN_³&ö‹/Îü²Oã‘ìØ‘ax':TÑ•%5fÞÝ»í~~ÏÉ4NJš¿yó‘®®¾±c-\¸àcܺu+÷î…Êw †oúöì1®c:ñÀs„k×n¯[ÏM ÷÷õ—”´€âêªöÜ õãº*,¬]µj!?ýêÕ[„úúûÚÂÂZîµ§§ßàúõ:no¼cÔ§âHDˆ®Ô°Æ¬¾qEEÓºu‹¯^­--½#?;å,‚Û¶mã_¤¦Zªø€H’2 ùë_Oöõ ˆÎÐØØäS[Û"Ùã/»ÔqõzýО{­²VµüH¤ û¥Ô?(ž--dïߟê3=>>|×®SÃ].=,ðei–eSSS¹(ä.ÍW[Û2wn!ä…¦òË˹×ÁÁ¾F³dg—®ZµÐÝÝ™¢Ñ0/¾Á½å¬­mŽŽžB™7ojMdD ñ¸uËx.Ñ‘ 霜dˆ®”(ù1»¹9¯ZsñâM™Æ^^î·nµddy«_e Yæž ÷^˜Qy¥Â·ß^zç——.Y]}O¯r…sèPÞÚµñ©©¯kµÚ‡ïÞýƒá,ÅÅw>üð†a´ZmUU#÷ÆüðáK))K^ziVoïàÁƒçÕÁÇgÜæÍ+ aöíË6ú•èH.\¨øÓŸ^ïïܱ#C´èJ‰’ó–-I,Ëêtlnn%ÿѰhãõë—¸º:i4LFFúU r¡%©o;s å¿'8eÊL;ý²´üWÀ.p1en¡%y&|Àv˜‚»v³Ô8l .(azNœm§ouxx”P !TCÕ‚@5„ P !TCÕPh ¨†BK@5sß³Ò>øà?¥æJKÛhø#ÿPÕO>Y)l,|äªÐ–-IÜ{÷¾Ã½]èæÍI›7¯üøã×- SìÓ|+V˜~¬8¯šÍŠF¤Ð’ÉL.´d›…ŠÌ)½dμ žm… 9…– h¡¢´´YYE‘‘ÁnnÎß~›_ZZ/Ú‰Qé%nÞ¨¨àùóC÷ï?K™8Ñãí·—ŠVeWj³>õ‹¯ä©~[PÎj!hñBK†FºPQ{{÷§ŸfN:aýú¹vbTz‰SVÖ°zuŒ››sww_||Xnn•èz‰Î+µY$¶€Úm@9«…àˆZéBE……· !uu­nÃZ¢^¯/(¸3íÇoβ}{ú0×Km©&ÓŠRPȶÞv¡%ñ^F¦P_¤IXP@±Ö^nnÕ$>zÔSUÕÔÓ3@†·^"½³,«Ñ0z=ëà á+˜°­èd£_–6¡ÐÒ/gíBE¢–^âutt?|Ø•”´€{/,µ^¢óŠn–¶¶®)S| !ÑÑSùPV¿­(g£W‚&Z24ú…ŠD;1,½dظ  ÆÇ'úöí™õWt³;V’²¬»»ïÆz¶åPhÉ V¯Žikë:w®ÜÚxơВ-JM}½¯oðĉBkA¡¥Ñ·mÛ1kþ…–€j6úé0Àè@Õ‚@5„ P !TCÕ‚@5Zª¡ÐPÍÜ¿–€‚Ô¯ÒÒ6Þ»×®Ñ0:þС¼ºº|ø;ÿÄyC/¼0uùòÙ £Õj««›ŽÉW|à°>ò^hÅŠh¾~È'Ÿ¬4¹²JZÚÆ¦¦vBXŽÍÉ©Ìϯ’il¸PàYùÉÒëÖ%XöÏi5^¯—i0{vðË/ÏÚ½ûtWWŸFÃ$$„3 #“ægXDÉää¨/…ÊM¢¬ü<Ášš{ÞÞã¸×¢µœW¯Ž ™ Ó±ƒƒCŸ~‚eYÑÒHii³³ËÂÂü³³KïÜy ,HÄ[¾<2=½ ««¢×³.TpÓ¥º=~üêܹSÜÜ\޽à9ÙÝÝåÈ‘ü²²~¹„°ûö}ðà±á²‹(ñ׌RKu2*õᇯxx¸étúþþC‡òÛŠ2L<+‡àœ9!MMíÜkÑÚ@ÉÉ‹:;{¶mKgY2vìîzMªŽRkë£ÌÌ+„÷ßÿµLA¢€¯úúÂÁHuÛÝÝÿÙgǃƒ}?úhÅ¡CyÜë –p!HiiéÌ̼;}ÍšØ/¾8óË>ÕQ’Zº°¨“(ÃÒQ_}u±³ógBHPϺu Ÿ}vÜh¡(ÃÀ³fµ9§çžû—¿禈ÖŠŒ þä“CÜ[ÕŸîç&JU5ºvíöÓj ’êöêÕ[„úúûÚÂÂZîµ§§ßàúõ:nYo¼cÔ§ùÅ¡„Eyy¹¥¤,qssÑëõ&Œ6@&ž•ï .[631qîÞ½'–¨£Ôß?ÈÿFf®ÆÆö  ŸÚZãÚ#RÝòe•ôzýОH”XeþJÉu2dX:*%eéý×·nµŒãðÿ±Þ"£xVYùËÒçΕ{xŒåê‰Ö*)ùiùò(îüçKË×Q"‰xÙÙ¥«V-tww&„h4Ì‹/Fpo™»•Â/ëÖ-㹆SDÉÄ¥Aé(§ÎÎBH\\8߯p¡(ÃÀ³~¡¥¿ý­ôw¿›¿k×)ÑÚ@GŽ\zã˜ÔÔÕ:~``è/9Á²¬T%žhA"^qñGG‡?|…a­V[UÕÈÝjTìVŠÏ¸Í›WÂìÛ—mô+õE”L[ºhé¨cÇ®|ôÑŠ®®¾òò~õ Š2L<Z2—üWÀŠPh @ -™ —v …–€jx”P !TCÕ‚@5„ P !TCÕPh ¨†BK@5sß³Ò>øà?¥æJKÛhøãž=)¦-=-mã¦M¯ò?¾ÿ~bZÚÛ¦ueYòk´b…ÂÕ±Ñö€‘c÷÷´ÞÞî„7'ჳlPbb”µ‡OXÿy‚†"–.Á²¬N§ß¹3“HT_2Äùþûk‹M¿t©:(È››.,6D$ê™Ù’çã3NXÝI±æ‘TŸ¿ùÍ ‘‘“ !|ñ&Ñ–&l10d[!˜”4óæ#]]}üC¤KÝþøãײ²®¿ðBÈŸÿ|<9y7]Xlˆ›.¬[d~KΚ5±ÂêNŠ5¤ú|ø°kçÎLÃâM¢-MØb`ÈZ!(þ¦µ¢¢iݺÅW¯Ö––Þá¦(–ê節mMJZXWw¿¯¯1"YlHX·Èü–ÑêNŠ5¤‹7‰¶4a‹€!ë„`_ß³³Wèġ!núþýÙ¡¡~11ÓããÃwí:EÔ•ÊË«úøãß}þù ÉRņ„u‹Ìoù”H²+Ö…Å›D[š¶Å€g+ÁÇóÖ®Mˆ#„H|ô¨§ªª©§g€ˆíùnE7…ú:P½=äì’uA±!€Yì»Ð’hm#ÅJC¢‹ÚÚº¦Lñ%„DGOf“ai$yòýÈVVR_2©¶¶9:z !dÞ¼©55-²-ÕVƒêèè~ø°+)i÷^˜ˆíùnE7…ú•ú[™=‡øM”i`ö]hI´¶‘b¥!ÑŠEÇŽ¤¤,ëîî»q£^ø‰ªai$ùU“ïG†°²’ú’I‡_JIYòÒK³z{>Ñ·o?IUáÞQêVdS¨_©ïÒÉëkdVÀ2Ph $­^ÓÖÖuî\ù(,‹;œð·ÃÏ’Ûº_&@F -éRS_ïë|øRJÊ’—^šÕÛ;xðày™ÙÊ[»6>5õu­VûðáãÝ»•Q]jŒ„‡‡â)2`§š›‹NžÜ/Ÿrx; TCÕ‚@5„ P !TSþŠŒš‡ôØ)…Ü´iÙèŒÀ*¾'ðlÃ=A B¨†ª!€jA B¨†ª!€jA šCGÇYkÀjÖ¨äMÒÓÓ-ÞizzúÑ£GG¢g ÓÈ¥ î Õ‚@5„ P !TCÕþ?æW·ðäùtIMEÕ $­{€IEND®B`‚jpilot-1.8.2/docs/jpilot-merge.man0000664000175000017500000000156612320101153013765 00000000000000.TH JPILOT-MERGE 1 "April 6, 2011" .SH NAME jpilot-merge \- merge an unsynced records file (pc3) into the corresponding palm database (pdb) file .SH SYNOPSIS .B jpilot-merge {input pdb file} {input pc3 file} {output pdb file} .SH "DESCRIPTION" This program will merge an unsynced records file (pc3) into the corresponding palm database (pdb) file. .P WARNING: Only run this utility if you understand the consequences! .P The merge will leave your databases in an unsync-able state. It is intended for cases where J-pilot is being used as a standalone PIM and where no syncing occurs to physical hardware. .P WARNING: Make a backup copy of your databases before proceeding. .P It is quite simple to destroy your databases by accidentally merging address records into datebook databases, etc. .SH BUGS See @DOCDIR@/BUGS .SH SEE ALSO jpilot(1) .SH AUTHOR Judd Montgomery jpilot-1.8.2/docs/jpilot-todo.png0000664000175000017500000007070112320101153013641 00000000000000‰PNG  IHDR;þ™š¬gAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœìÝ\Sõþ8ð×ÆÔ‰S§Nš9sêªQÓH¦¢¡!R⽫H0ñ†‰¿n–ZÜï5“Ô ³ò&·K@ñ¦÷ša’Rqüê,Ô)³–M]y´£õ¨öýã §µ_lcü~=÷Ñ=œ½Ïû¼Ïpðâýãõ|ñÅÐdúÓŸüRB!„P³ò[ÐÒôZfÏží—zB!„š•¿‚–Ù³g ýÑ„B¡ÎC(„B!¯a…B!ä5 ¡B!„¼†!B!„×DNÏZ­V7ׂæi B¨M ?ð“î§ï¾¥µ}®>§®Î;¡B€›ßå¶H¿üŽwS _þUÇ3®Úé>iè „:«ÕjûawÓ©„yuF‚`x"X­V§?SÈÏ@àøªí-ȱãW塱~q„ò Ç?ðÜÿ¥ç²ÊÕSüY†P‡äU’cy»Ÿ vƹªÐÃò^qì¾rÚ¡ewÒó~&Û’ŽÇnƒjûìþÌãO:-Œ½P!w\E ž÷Zù€¿·#h¶ÝW¶W¹êÐò×S8íÉó¶{!ÔØ}`Ý|~q.B‘'`Áã'òÇ™oÝ*Ž×6¥6¯xx ŒrBÞ ¡ŽÏq$®å#7³ÈÝÌ…â{Ô=l°mdæá„P„²åù´ ¡êøÚo‹ÓÉæ^ ƒ€­2"„Ú#»¿ñÜÿ‡s¡B°[Cç´ŒÓÙŽCu®ú‡\•o:×ôùpkìÙB¨ƒqÓaïôóî² : „œNëv5X%¦³«ÓîŒÝ}mcÇøÌqf•«5Z›·œÎâòü$B¨súÇiIç!vz#ÔQyÒÔè‚§•¸)æC î yØæIÛ<¹'wñü$B¨mòö Î…B¨Cqìi­–´wøN"„Üà ¡Óû ¾“!÷p:9B!„×0„B!„òšfÏží—ºüUB!„P³Â !„B¨Ö­ÛÓÚm@!„jO–,™$€Š ck·!„B¨}¸xñàtr„B!`…B!ä5 ¡B!„¼†!B!„×0„B!„òZã!TVÖœÔÔXò¿ààË–MåÏ7ýöK–èBC‡ò_*•Ao¼1ø»4ò\+VL{íµ©JeøôD-ÐN„ByÅîú$y^Øsm3œ–VÀWTl÷íNN>\5fŒêرÈ—cƨ®€Õ«ýyWÈs ~ÏsÏMxã|jh™v"„B¨­ñz Ï1XëÕ+𥗦¬X·|y,éÎñÜwßýxï½w÷èÑ „BV;”„Pü]+Ÿ4iøO„Àĉ¾÷Þ,D"á;ï$…>n«^Qa êåêùÐ5(¨÷òå±Ë—O}ê©QüI¾dVÖnä²eSW¯þËC &''Lx`åÊi+VÄ-_ŽU!„P+s±deÍ™:u ù]ß¿/§5Øò¨*55–¼ù¦“N—3))9yú´yР~³fE¤§8–q…eïœ:u.4tè¾}ÁÁŠK—®QTûÊ«ª.>óÌX€c÷Ý7àÒ¥«ö‹»ž;GÕÕY=¿¯­ÐÐa Ýh±øøq{÷:vŸÓpíÊfõêíÆݕ˜qüøO;zùò¼š–Ĉ!„j|èüoíF#‹…Þ¾ýð¸q÷ÇÇû׿ŠÝßÂë}$äÌéÓçgÎ|ôÈãñã&š‡B!ߨ†.üØQ£ËwßýzýÙéÓÇ6z B(÷x÷Ý],{Û·ËOŸ6Ïšõè€}4šAyy­ÜjµšL—Æ»ßbù­ªêÂÔ©c»nß~ć[» ­V«P(¨«³ŠDBÀ¾ÃÉꢷëÎZò*Åúõ»U*ùر÷¼n]‘-D!„¿41b±ã‡¤ƒy„`rìí\(¨«³=z6)ibUÕÅ7nyRyUÕÅ)SBΜ¹xéÒµþý{ Ðç矩&<½Ë—k† €ÐÐa|´aöœ—šþ !„Bjj¥×ç”——“ã­VK‚'ŽãHä¤ÑhÂÃõZ-ßçÇét:‰D’‘‘¡P(ŒF#EQR©´°°P£1†…½àUÊôâ2ýú&>B¨Ó²KjÐ’²²æœ?ÀZ[kÝ·¯âàÁJ÷…,ØàêU.´¨Èë%EíV;lò䇄BA@@À™3çóòZ­­Ý¦¶'+kÎñã¦ììÝäË>Hzá…M¬ðÂ…+B¡ ¶¶nëÖ?üð«?šé\Ó[Û|šBÙÆO111jµš¦iŽã,‹T*ŠŠ"q0 #‹IIK1 £V«@,«ÕjŠ¢Ìf³L&«¬¬øÀÛ( !„Ú©ôôHÄóç?`=xðŒoõL™ÒÙB¨‡R>öØð÷ßÿ¢¦† & +ÆPÎ $2$èÇý뤥À(fΜ°jU¾¿ª¡PXWWçÇ ›ï!Çæã§øøx¥RÉ0 EQE-^¼X«ÕŠD"Ò$~‰DPVVVXXh2™X–eY–ã8Žã¤R)鸒J¥F£Q*ýH­~ÖˆBíðŸ~úí³ÏN !T¯^‰‰öéÓ£¶ÖºeË~“é¿ù_MM HM€´´÷—w“'øôÓ²šêꬥ¥õsÚd²žÏ?Ù½{—›7ooܸ÷òe²²æìÞ}âÖœœ’K—®…„(GV­__ôINŽ$aA‡´s§~êÔ1ÿøÇ.Û“ŽÿN&MØu×®c'>øÄÚW^Ù \½ú/K—~TWç$6­ªº “õrUˆÅ]žyfìСwÕÖZïÜáÞ~û3«Õêæ¤Vܽû¸ÉtiÞ¼(ÁéÓææo|ç{ÅÏŠ—ËådJSLLL||<ÀÈ6râ8nË–-%%%$l"'ÅbqDDDQQ)Lâ-…BqàÀ ¡BÊÏ?_‘Ë{“ã3))9yú´yР~³fEž*žã«ii|ÄGî/ï0Š~?ýtÉñüŒáeeUûöU„‡«gÌÏÌ,&ç-zûöÃãÆÝ?î_ÿ*>qâÜ3ÏŒ•HÄ ÃŽ¯Þ¿ßÝ(j{wäHõã>üž“'Ïñ'ÿTU]|æ™±Çî»oÀ¥KWì+w=wŽr?ÀÃ=þŠ«ÚÈIš¾±jÕ§V+ôèÑôºúýòËÕíÛÀ‹/Fýõ©ƒÏŒw¿P(hÖw¦)| ¡øõw:N.—›Í戈ˆùóçCÃ8]}í"Çqf³9??_¯×K¥R‘H¤P((Š ‹‰‰‘ËåÐ]I$R^"‘¨ÕêüüWãâÞjò"„Pû<0(¨Wlì ìæÕ«žèØT*ù† {àèQã´iaüùï¾ûôú³Ó§€ººº²²ê±cïûúëS#G}ãO[«Á-Àj…íÛÄÆŽ1~æO:þ;1›/Ëå½»t  ’îÝk¸÷Þ»»wïZUuÁ±ÂÔÔØîÝ»öîÝãw ]Õ#F(—-ÛJW¯_¿ENºúéõg ôú³3gŽ÷ë;áO¾„P ó 9W(dV¸\.· ž@$ÆÒÒÒÊÊJ‘H$‘Hd2™ÑhdY–ô`‘ž*X¼xqqq1MÓüI©T Fã6•jzÓ!„Ú‡AƒúZ,Wɱ@ï¾»‹eo;-éþUO t fó•Áƒû.÷4ltZÔþý•/½4åêÕ••çoÜèàoשS?OžüPXؽüÇ'V«Õdº4nÜýËoUU¦NØuûö#޵‘.ÏI“4S¦ŒÌÎþÊim²ûݺu‡ÅóJZ‘ЇkòòòÈR©Œ_¹r¥]ü$‰Ìfsnnnaa!MÓb±X¥R¥¤¤¬\¹rþüùEmÙ²…/Iþ[RR"‰È—‹E$I¥R‹7ûDu ‰xÚ´±ß|sŠ|i0˜'L&ÇJe]a§¯r\m×®"O.ï0vï>>mZXÏžb A£ñbhè5jXUÕï¿GFŽ Zí°êêú“¿ýÆPTMl옎=ŠÇÛ¾ýðOhê‡Æœþ;©ªº8eJÈ™3/]ºÖ¿¯úüü3åªÂ={ }úô2$ÈUmåå?Nž"ôèQß5åêÄ3-ü7«‰Ü¬|Ÿ ¥ÓéÄbñ¦M›ÂÂê{áX–%“Ÿ²³³†‘Ëå‰D.—‡……Éd22»<<<¼¨¨¨°°0""B¡PIQd¤Œâ‘ÿR%—ËùE|™û ö;þ24Äõ®ø¼¶sÙ²©«Wow_fèРéÓéÚ5 K‘ÑhÙ´©Ô‡~Yƒ:z´jòä‡ÈñW_?|ØÝ–œ.çv¿¼Q'>©¹s§Öj…;?þôèÑmΜ¨Þ½»Óô J\ý »`Áãwßݗ㸛7ooÝzÀl¾âêZ§'ÉâaRÕ{ï}~ýúɾøbô A²ž=Å äº?é¾=NOº¯ÐÃÇGJMµZ­µµÖýû+øåx[·HH¿bE\@@E]{ÿý/m/qújiéé×_»uëNZZûË;Œï¿7ué"Z´èO  ²ÒL¦Ú|üñ¡¤¤‰QQÃoÞ¼³qã^¾|ÿþ½–/Ÿ ÈÉÙÍŸ,+«êß?ôìÙNñ»ÉtéÇ9rùÒé¿“ªª‹qqadðîÂ…ßhúº«‰PÄÿþw<&fôºuENkËË;4}úØ+ž©­­»}›{çϬV««ooÛ¶Csç>©9sæ‚û»·.Áܹ9^]ÀÏ‚JHHàçŒóSËõz}~~>³€˜˜r`'996mÚ´iÓ&ÒSEÓ4 žÈº<Š¢ÂÃÃÉÄóÎ0¯ÜØ£YÓc¤¥MÿðïøáW¡P0p`?7v4ªéí|è¡Á:](Y«Ü³§ø¥—þTTtŒ.¾ÝчÊvam``×›7o[­Ô{éÒ˜—_Þ Ó§»víÆ—_–?þøC½{~úé·Në1b°Áp®®ÎúàƒƒââÂV­úÔÕµNOºoùƒ*Σ֬yÖöñžtß§'ÝWèáã· vy¡v}n©¨p²#§.^<¶k×úuëö´ÍwÏÕGé™gÆ^¾\³g¡ešÑÆß¥ÎŒ|k¼ Š|ì… ‰D|·SzzúÒ¥Ksssõz½L& á8Îd2éõzNG¢"~uÃ0!!!eeeñññ$¯D"Ñét)))k×®‹Å,ËZ,…Ba6·éþåtgÿþ½×v.Zô§>}$µµu·nÕ÷¸_Ëÿì˜0áÈÈ­Vkmm]zúú¥$’î¿ývêê¬|üdûC‡S²²æ|þù±#”‰xÛ¶ƒ$²ñK;y“'?ôé§ß’µÊ55ì'ŸЉMnä¸Dvùò©¶Ë¹¾ðä“Ú#\,Áµ]X{ôhýÜF¾‹E$ `˜›äX£”‘ñ99b|ùe«âĉúÈÏh¼Ø·¯Ä͵VhëÔ)'§'Ý·ÇéI÷úÐZ„Úš+âXöÎgŸm토vÉ»J¡ø…éÞ|n£Ñ8þ|±X,‘H’““•J%˲………åååd_hXWTTT\\LQIa Õj“““É0Çq‹/ÎÍÍeF$Ñ4­V«É: §ë<ããÇ9®íܼùš¾ƒ÷Ÿ9sÂ[oz¸:76vôòåy55,?&ÍÛ»÷djjlEÅùÓ§.+«®­u—ÙìÊfõêíÆݕ˜A"ÿ¶S¡èg›îÇU(ú6¼KöKd–s;_.KQ5ééÛùõÌàzá7¿°ÖÎòå±ýû÷üç?¿ _öéÓƒW¯^—J{¸y»ˆÇqü¸É͵.*´¾újL·n]øá—;“°ÒŽƒ¹¶íqzÒýø¯·PërÚåßœ¨³ñn:9ß'D:“HÜd;a…B‘‘‘¡R©Èú;9•””˜L&±X\TT4þü-[¶P¥T*ãââ†Q©T|.R³Z­&©ÌIîM’ܼ“P©äGŽœ€£G÷Þ+o89àØ±ú…¸|É~ý$¯¼¢[±bÚsÏM8°جΉFŽzäHµÓ[œ>}~æÌGµÚa·osv/íÚulÍšÂêê '>8kV„û¦’î™~ø¥OIs´Ó#”ÅÅåvKdm9}Áf=³JU28x`lì˜ÔÔØÄÄÛ˜Òöl¥§dg—L:ÆÛ6À¨Q*­VõÉ'^wÕ¼úêÇo½U˜––OQ5II‘>Üš° †œ¶Çîd£óçB¨3ó®Êd2€L&#cm¤'‰L‡‰D‹Åb±èõúÒÒRš¦ )“ ¤ç),,Œ¤’€¼¼¼ÜÜܸ¸8>~â8.33S£ÑQ?Žãd2Mï‘J'ù÷±Û¸?®ót2“.))òÿ®®¶të&ÊÈH$'=Y»~ýn•J>vìýãǯ[Wd÷꯿^ýõ׫GŽœ]³æÙ†–X…BA]U$ ¿ç7»s§–´Óæœ?Ûi6_2$¨ªê"ùrÈ » Ξht=³«%¸6 kíUU]X°àqrüÛo7úô ¼|™éÝ»élsE«öä“¡ï½WÄ0¬›kž$µµuÅÅåS¦$6òHžql«“nxþø!Ô!y× E² ÍX€l$ ÉœD"QJJJ~~>h4µZ¦P( ¡ûJ¡Pa;R~ñâÅ$f"£,ËšL¦ððp¾fr¾ópºÎÓéÚÎîÝ»Òô æOz²:·_¿žÕÕ–‚‚²Áƒí§ù?ð€‚ÄCöå#^¾\CV«††¸ÍÛ”v®X1Í®¶¯¾:1mÚX²VY"O›6n÷îä%§Kdm—s{¾žÙó…ßü0∃ùT¼§Ný>žäádF«ÕJ¥Òüüü… @|||II‰T*U(d»à“EuN×y:]Û™Ÿø•Wt55,YEÅ×ÐèêÜÄĉ]…BAAA™ÝKÄÇ?R[[{çNÝæÍ¥ 7*KJšÄ0ìÉ“?¹_Yês;»؇òåå&±¸ËâÅ:+€`÷îãåå&ò’Ó%²¶Ë¹[Ï 99%äŒç ¿§MÛ·¯„ãj¯]»ùá‡_““»v›;wÒèѪ«Wo¬_¿ÇÕ³$%E^»vó¯}jk­dtÌñZW'.ŒîÖ­K``WŠªÙ¸ñk»Êß~ûY‰ÈÁßÿþ‘«“üÄ&§íqz’¿Äi…N[Ûa\¼Ø¹öëõ/|÷<ïRà]RƒÂÂTŠ¢T*•Z­&ÝNdÄM"‘Ð4œœÌçv"—ñ;2á©°°$ÕÌÌÌ$Ù8Fc||¼Z­®¬¬4›Íd4°¬¬ŒôEét:•Je±X$’G›áÙ; ^ë3Ûv~Ï]wõ.)9ÙÚòƒŽô,Š]RÕ}¶VKB­«“ÈårŠ¢€dl"3¢È—‰‰‰111$r²ÍTž’’²ìâÅ‹ÃÃÃcbb¤RivvöÂ… ÉxߦM›¤R©Éd¢izéÒ¥))) T*ɵüº?¯Ùiµ—Õ¹ví£&Fr@¶&·ã»¸üûÌU{YÛ^Ú‰B¹áÝtr²’Ž¢(’WX–eféÒ¥|Ž(‰DÂ=%%% ‰Ôj5_ÉÒ¥KÅb1Ã0dFyXXÂãwæ/'ü¤u„B¡6»ŠìÖÂqéj"Ãyd# 'AðÛ€?o08 ŸHüTXXHb)ŒŸB!ÔfùB1Ìýqqq‹…ã8©TJìøäO$f‚† R¶¹HFÛ2¶»çååEDDpg0´õ]ÞB!Ô™ùB€T:)$$Äl6Ëår±XL2ð¡Im ‹I:(–eI*ÎèèèÊÊJ°ÙùŽ?(,,ŒŠŠ¢iº²²²´´¦iÏ…B!ÔŒ|¡@«§ÑhŒF£Z­&ñ H %•JIäD:¢†Q©Tü–/¶õÈd²²²2FCQ”Á`(,ü¹)­B!„jn>¦Öä……½ ‘l.++ ‘Ëåaaa2™,333::šï”2 k×®ÍËË㯲Í_žž%‘H†ÉÌüÖ‡6«šøuxK–LZ·nOk·¢-Z²dÒÿK9ÕÚ­@µ?M ¡@£™¥ÑÌ*,L•J¥aaa˜˜h»ÔÎ)™L–œœ¬Õje2EQ4Mççÿès**Œ>_‹P‡wñâ1r€Ÿ;ü;ƒBÞòCEÄĤÛÌf³T* 'ùx¤ÛI"‘Èd22wJ&“‘m^ˆòòµ!„šÎÃèjÀ€Ðæn B¨mò[*Õt• À`ØLVêI¥R2 øõz˲$G9MÀø ¡Æ‘_êø;»ÅìÚÕHŽòuëö`ÇB–?C(žF3‹PÔÿÈ>wÜàe 0 )‚ûß!ä…ÈÈéø;»%Y­VW/-Zô¾› µîžCG IDATÚa“'?$ Μ9Ÿ—wÐuM¾ÈÊš³`ÁW¯êt¡EEžŽQ~ðAÒ /lôS»êDš%„âÉd“›µ~„jƒzHùØcÃßÿ‹šV(L˜,ÜDc~7eJˆç!BÈ7ÍB!„P'4yòˆO?-«©a ®ÎZZZ¿±LÖóùç#»wïróæí÷^¾Ì@VÖœÂÂ##G‘HºòÉ· Eß#îéÙ³{^ÞÁ'Α»wŸxà€5'§äÒ¥k¶÷êÕ+01ñÑ>}zÔÖZ·lÙo2ýššš iiŽ ÿ^óæENŸ6·ð›ƒP‡Ñ¤¼P¡¶#'gnk7ÕS(úýôÓ%Çó3f„—•U­Z•èPÕŒ¿oÌÇ0·Þz«pÆ=ÉÉ‘W®0o½U¸~ýž¸¸±|‹…NO/Ø»÷T|ü8‡:))9¹jUþæÍ¥ ã -­ ¶¶6-­ -­Àiˆ÷õ×§ÒÓ ,Z(øý@¨3À ¡Ž€ÄOEµq*•üÈ‘³pô¨ñÞ{åüù#Gªà§Ÿ~‰Ž5’ã¾}%|ï¾ûôú³*•Ü®Îàà±±cRSc#zôèæxS§TªÇŽÕ×éßgD¨óhÞ<±ø”Ñh´X,‹E,K¥R¹\®P(rss““³šõÖ<§“.³²æ\¸pE(r\íG0™~]¶lêêÕÛ]•çy5I¡–a9åäÌ7¯‘ud<òA ÇçÎ]Þ¼¹Ô®?јÿ€¸úx>{º™>D| Û³ùÊàÁýF‹«voÎ;µäd]]ÇÕ‘cg}C¼ûî.–½íe–›˜…PGåÿJ&û)##ƒl!ìFnîHNNhÚ¤‹{øð{ž{nÂoä{øÃ'i¢¶Æ±çÉ«(Š|Å@œ~¼š=Ý"¡PØvâ'ؽûø´ia™™Åü²o_E]Õh¼:äàÁ3£F «ªr`99rè¡Cg´ÚaÕÕöW æ ‚¿úê8(•AdªÇÕví*º}›sUÀh´ðuúë©êlüB1Ì7¶»¸ðd2Ig@Ó4ÓÌ€ÈÍÍÈŽŽV(žòcK9Nü´›¤Ù* FÈŽçÑ’‡œN4&WW³§-úSŸ>’ÚÚº[·noÝzÀl¾âÉLç  ÞsçFXOžüùñÇGn0W±wï>¡VܽûøóÏG’°Ó:'Lx 2òA«ÕZ[[—žÞìÁÖ÷ß›ºt-Zô'@PYi&åÇJJš5üæÍ;7îõ¼Âþý{-_>@“³Û[$$Œ_±". €¢®½ÿþ—PZzúõ×ãnݺ“–Và´À¶m‡æÎ},2RsæÌ…º:ì‘BÈ~ ¡H¯O¥Ri4±X,‰Äb1IVÎq˲ ÃPe6›ÍæúÐÅÅÅÅ-6´g+4t˜Åâ|/2ñsß¾ŠðpõŒá™™Åii|„ÁêHH4ßÿcQÑwÐ0ÑøàÁ3ãÆÝo7ÑØÕGÀÕìéÍ›¿¡éë0xpÿ™3'¼õV¡] d¦óéÓæAƒúÍš‘ž^@°w¯áС3aa÷ñ pü<’ó¿üruûöÃðüó‘nꌽ|y^M ët¶Ps8rÄxäˆ}/ŠºööÛŸÙ´ýãÍ6?“íñgŸýì³£N¯º~uŒ«vì8²cÇ7~ýõygàÓO}Ùœ!䇊ãoÚ´‰ µZm2™²³³†á·æ·Ì‰D2™L&“)•J†a*++F#9Ÿ›» ..N*Ôô&y"55V(2ÌÍÍ›¿qZ@¥’oذŽ5N›Ö2­B¨…9ÆC*Õò/_¯?;sæø¦TÞ¯Ÿ$)i¢DÒ½®®î®»¤Ž‚ƒõŠõÁͰaòõëKà»ï~˜5kBC«œgC;­óôéó3g>zäˆñøq“Wà>&B¨3kj¥×ç”——“cFCÆé”Jåš5k²³³õz½D"á8N,óá)C¾ Q(F£‘¢(‰D’ŸŸbÔjç5±UN‘¿¶)ª&+ë+ðf$®óá!Ôxý/ÞÕì餤È?üººÚÒ­›(##ÑñB÷S¡~ôìNÞºuÇ“:ׯ߭RÉÇŽ½üøàuëŠÜ?oݺ=–lVn¸ „ZQ“B(Ûø);;[­VgggËd²5kÖÀüùóW®\IÖ⑊ôE‘cB‘½_4Åb1›Ír¹¼¼¼œã> {¡ÉfÏÛ8§?m'i"Ô8MdД Rî';ý¸š=ݽ{Wš¾ááÁNkp:ÓùìÙ_~xÈ·ßV9ĦUžNÄvZg¿~=««-.üöæ›3<| ŽtBnøBqÜa>~š?~rr2„‡‡'$$¬]»6%%V®\9þ|2Ša©TÊ0 ˲dv9‰¢È)©TÊqÃ0J¥Òh4J¥©ÕÏ6ýñw[\¹çtâ§í$ͦ7¡¦›7o½]åUüÄυ⓸Ÿhìô#àjöt~þáW^ÑÕÔ°Ã9¾*Ïf:Oš4ISQqþöíZr•ç±Ö™˜810°«P((((óüÍA!7sçæøv%?<>>~íÚµr¹œæÏŸ¹¹¹&“I$MÓ,Ë’˜‰\KõȬ)¶Çq&“ÉóÙåÁÁ*W,ôÜs®Zõ©oψP›rñâ1WÛ óQ”ÓøéâÅc»v­_·nO{éV ÖÖÖ9ä±ÇF8οö#òΫNÙž|gíæ»#B¨Ãð1;9?ét:™L&•J@$‘Ø(%%eË–-¤€J¥"'9Ž“H$âäUþ€”!‘–L&S«Õùù¯úüTÄk¯M9sB^ÞÁ&ÖƒPÛG"'¿'8h-/¿¬[¹ò™§žõÉ'¸X !ÔFù2GÓõS,ÃÃÃU*™íd›K3$$D$UVVªÕj9‘èŠa‰D², •x$"]Pä@"‘Èd2ß Þ|³ ¥ÚC¨¹u˜ø Þ}wgk7!„áK/T~~>9P«Õd†8Ã0¶ýIÇÅÅÅ‘™RF£Q"‘Ø®Ë#%ùò`ÓEN’˜L&“•–þ£I‡B!Ô<|ßf8::Z$‘~#-‘¾%‘HD’?Ñ4››ËF‰„/|¯?®Gz¡H‹ÅB¯¦<B!„P3ñ:„âgAÉårš¦IÄ£×ëù¶³šø°‰tMñ“¥È1y‰¿ãc)‰Db±XD"‘T*­¬ü¨ÉψP9½µ›€B¨žI ÂÂÂH»X,&‹ìl“?ñ“Ý,(?‘ìöÎcYÖb±(•J“Éä[ êxÚËz:ä_/þ¾+ó€þÜ—kn™šQGåcEæ6ÙŽÊ FÇDüØÉV@ “˜‰óy|/o‘ÈŒ¢(µZMÖú!„P'D~©ïÚõ‡…O<1·é¿à±æ–©ulÞ†PõAºX,&ÉI%‹‹‹‹5 4DBr¹\*•’‰á$*"ÉŸHüd×ç6ñ4̦2›Ídiž'Ͳýë!ä ~R<”•5çÂ…+B¡ãj?úèIqÎ[¶lêêÕ-øåKêt¡EEÞ½ù$g€}~`@àþ·û‹/F$ëÙS¼`A®k^°àñ»ïîËqÜÍ›··n=`6_ñWÍ'>©¹s§Öj…;?þ“¿j&âãÇMœ¨q“5͇šÉ?rüÞ{Ÿ_¿Îº*‰:*ïB(2¬&“Éøõt|’Á`°X,r¹œ“ÂÂÂ222 ?ЦišŸÅ÷EñTÀr'“Éhzû½‡—,i¡‰j×ð“â’~}øð{ž{nÂoäóç…B¡‡ñ“mÉ)SB¼ ¡Çý¬Vë“OºÛHtï^ùsÔš5lðàCÍž!‰æ|pPRÒ$WY‹}¨ùðáêÒÒSV+õ^º4æå—7û«f:4(0Pì˜j¿é5ã6œw!”Åb²‹m&†aD"QQQQrr2©TªƒÁ@Fý€l“'‘Hìz¤lc)‚|Iº£mUÙ !ÔíÝ»ÍÍ«æyó¢ +kÎîÝ'Ôê»wþùH²õ¯LÖóùç#»wïróæí÷^¾Ì8-™š@öÒÙµëØèѪõëK`À€>ÉÉ‘N “®WûSíÜ™óä“ó\uœ:evóDM©ùĉúÎ!£ñbß¾öCv5 r@θ¯ùÆúm¡E¢†¹éÇ6‹DÂØØ°œœÝ£F9Ùó±)5#äKEÆæÈ™!.‹E"QIII\\œT*å äää¥K—’Œš ÃPä¿¶ËôHf7qê÷&zE¹ÿ!ˆBN5ºÈ14t˜ÅB“ã_~¹º}ûaxþùHrfƌ𲲪}û*ÂÃÕ3f„gf;-™–VðÁI$T …Ï<3V"3 ;~¼zÿþJχí¸ÙÛª‰­ù±ÇF?nrS€ŸÈ1£¸¯yùòØþý{þóŸ_x×\·5GG?\VV}íš}XÖô𬝾ӭ[×~øeÇŽÃ558×éø2œßl¢(’…<##cåÊ•Ð!‰D¢5kÖÄÇÇ“9¥R™žžÙÙÙEEE¶ƒwä€ß;?à—ø5ª‰ë½—,™äao–ç%›ãòfÒ6[…P³Z²d’›Ÿ©©±B¡annÞü 9£×Ÿµ+£RÉ7lØG§M ãÏ;–äÕÕÕ••U{ß×_Ÿ9rèo|ZZzÊUá¶iÔ(•V«Z»ÖÿäÓÓ ‚ƒS§ŽY»v—_*0@zï½22ŠüR›W_ý˜¦¯'OIJŠÌÈð%òCíšw!”D"¡(Šï+"üp˲•••üÒ3§'|þƒŒŸcÛh ž—lŽË›IÛlBͪљõŽãk·nÝqUØn ÈMIØ¿¿ò¥—¦\½z£²òýô¨ŒŒ/~ûíºûšmg¹šidK¡èKFŒ|þ¼ýB?ŸÛ|èЙ¿ým˲e[—-ÛZWg]¶l«]üÔ”wC,îBÆ»_š‡:ïz¡”J%Ž(~Ï;»|Ç­]»6%%…«HÉøøøøøøåË—GGG—––@DD„íÔrÛ¹Põ‰D"EQ¸Ñ B¨ úøãCII£¢†ß¼ygãÆ½nJ––ž~ýõ¸[·îέ²²ªþýCÏžµ€ë O<1×v‘­'Ÿœ9ÝU·ñÛo? "Q9øûßí÷xð¹æ¤¤Èk×nþõ¯@m­Õ±Ù¶5ÛÕï¾æiÓÆöí+á¸Úk×n~øá׎|ns£|®yáÂènݺv¥¨š´uxÞÎ… È…†}…ùˆG"‘Øîy§×ë cbbøèŠŸ8•žž]RR²ìÂ… SRRøùé_©V"yÔŠB# î\á)êÚÛoæIÉ;ŽìØq„??lØ]û÷WcWsÉ }≹O>9oçÎÛó®´wŒ™üU³«DSM¯yݺϛ©fžã÷´‰5ûkÂj¿|ÌNNQIÅoÏBø4Q™™™ …B«ÕÚÎ:'ÓžòóóU*UQQ‘N§Óét .äç•ó8 **Šì4ŒCy¡ŽdÅŠ8–½óÙgG-I†™ì~—“)ðMœ¹ˆ5·Lͨcó1„2›Í¶[¯Øå sÀ—.]š‘‘¡Ñhìæ‰‹D¢èèèôôtNG2ðZ`³/::Z.—7e¼õë]þ 1wnŽ«—üu/¿ß!Ô1¬Z•ßx!„«ø/ýøKkn™šQGåu•œœ•›»ö æ# ñkë '¯Y³&""Â6<‰D)))ÑÑÑ@º HF6!e”J%Ã0v)7½¥×ëOjµÚœõó`ž_£þ^Z­V¯×kµZŒ¢B~Ñ|¿Î±æ–©uH>öB€Åb‘Éd,Ëò¹4Á&MÿåÂ… ׬Y£ÓéàÙžH?YpGb/rL‚°ÌÌL™LÆ0ŒÅ2°)ë×ÿaéòܹ¡dÒ ã'G^EQYYsΟ¿`­­µîÛWqð Ëu:-†dR€û?<ÛÊ +kŽ« !„PGâK]\\Ì'…¢išÏ_@Ó´íÜp2Ó|áÂ…eeeééé|h¥×ë•JeFFFTTTeeett´Ùlæ/Ñh4aaaEÑ4 ÐÍ/ÏÉ Õj¡ùã'«(*=½$ñüùX<ÓÌ­k0ñY•B!Äó%„R(ž(vœád—“˜$ɦM›òòòÈr<‘HD&’“WÕjurròÊ•+ùaÁÂÂB (Ê`ðsüDÆïsý[¯­VëÛ… Ã~úé·Ï>;„P¶:|ô  W¯ÀÄÄGûôéQ[kݲe¿ÝòÍdÑ¢?õé#©­­»uë÷Ú'Lx 2òA«ÕZ[[—žþûª¢®]EóæEUV^ؽûD ´ !„jy>ä‘Qü&²‘0é‹âWçÙè±,›˜˜˜P\\Åý‰D"²' ‰ŸŠ‹‹IÏVII Àà&?`+°€åC,õóÏWäòÞn ̘ñHIÉÉӧ̓õ›5+‚t_5·Í›¿!©xî?sæ„·Þ*€ØØÑË—çÕÔ°=züìvïÞõ¯üí·U‡µrGB„í$è6hÉ’I81uH¾Ï…Љ‰),,T(‰Äb±вœŸ$n»°L&£(*!!!99¹¸¸¸¨¨H.—[,–ùóçÓ4——·iÓ¦ððp“ÉT^^NQ~ŽŸHÔ1½|í"j#‚ƒõŠ~î¨s¥_?IRÒD‰¤{]]Ý]wÕ/Æ<}úüÌ™9b´Ýpô•Wžøâ‹ï¾ûîÇ–iBÚð<èF7ÒA¨ýò=„’É&k4FƒÁ R©”J¥Édb†ÏtÀç.ç'‰óE­Y³F©T’ÌRR©433rss)вX,f³ùÀßwÕæY@«…¹9Ð?Í››ÓÜCxM7hP_‹å*9¶Z­B¡ ®Î* ùÏx÷Ý],Û¢[k%%E~øá×ÕÕ–nÝD‰ääúõ»U*ùر÷¼n]ýFžÕÕ‡üý÷&Ovu@!„Ú)ïöȳö‚F£1›Í‰D£ÑˆÅbÚ†Åb!›ß1 CQ9àÇï–/_Nº©Äbqee%¿×^yyy~¾:0HÄ‘ã:;T$‘ˆ§MûÍ7õ;·_¾\3dH„†kˆ À`0O˜LŽ•Ê –iX÷î]iú„‡ó'ûõëY]m)((;>!aÂÿ»¯Ú†Bµ¼¦†P V?+•JËÊʤR©B¡ˆˆˆ`¦²²’q»3‹X,...fF­VsW^^^\|©éqjÞÜœ6Þå*—Òñã??þ9Þµ«~JÁõëlNÎîjYxð`%Ÿ­ê³Ïêç˯]»Ó®0y«¶lÙßb-DµGN“"»¯ Ôù!„¹üÏ116·™L&™L&•J£££YdF¹T*•Édr¹\,“0›Í Ãø=oîÜP86WßögA!„P§²k×z÷Ö­ÛÓfgÊ#䟊P©¦«T@Qÿ³X,4MK¥R©TʯÔ›LQ$®¢(Êh$«÷›+~ò9?S¿B¨Yyµa€NZTäQ‡J‹íC•5çøqSvv}w5ŸUÎÍóü©Ýs³îdÑ¢÷]½ÔŽu`þ ¡™l²ì÷¹Å@Qÿc†O$_”H4,¿ßÙ^Kf"Á¬'u0žo0eJˆç¿k[l‚AƒdC†ýø£w©w›é©½%V¬XÐ×M™vý€¨cðeG&›ÜÜ·@¡fb·a€cšþÔÔØ€€²§dZZ‡›´À>;wê§Nóì²=)“õ|þùÈîݻܼy{ãÆ½—/;Ÿ±ÚLOí!’ÀeåÊ•nz¡Úõ¢£ÙC(„j×l7 pLÓŸ–V`»¤ç›ø¶Á²eSW¯Þîæ*Þ‘#Õ?>bøð{NžýÒ[^Õàþ’¿üyÂÖÏ÷ùЪ'¾ ÊA¯/˜žñŸ]'ªLÞV’±4iñšÆw]h ºGÍ¿\.=jðü’Fß:þ]BykÀ€P¤CíZ“B(Ûø)&&F¥R‘½\X–%{ä…„„hµZ­VKæBd¿áÂÂÂèèhš¦Åb±Z­&C{ …Â`0°ì?Ãù¸gËùúðÉÏ¿9jµÂÝA}ÿñ·Ù3þöæ»×°Aòû•ϘÎ7GåÓ&?âCE QÜõúügÞûÏΓU?y{m€PØvâ'ùÀ°Ï¾>âÕ%MyëBul¾‡P¶ñS||ܱ'jìCó¦M^ùyž¼uN«úÚõ%oÿÛ¶Nßd»ÇAÈ¿0©B-ÏÇŠŸt:\.·X,‰$%%E«Õ’óÇÆììì„„NDz,Ë#c|,ËÊårŽãâãã )Š‚†™æ ÃH¥R•JURR×ú!ÔK«7<<4ñéIKßûOóÝÅj…M…{gO¤?u–?ùà°AïlÜß5$ÅFÙ]ò êž·ÿ½ö;ýâ³õsðƒúöNIŒéÝ3°¶¶nà]ýo¢rwÿ>ðô$Š Øú¾â‡)ãG?ó#I”âxmm]ÝׇON QTzô‘‘êÒÖ“ ÷;íXÛ¾c§ òG³¬O/r桃H¯ÒÁï+ÍÔ9ÜýÇ—t¥G $.q}/ûjÇŒ¸ïùåÿ"év€Qš{?*ú†¯üà÷ä­›;íqß:§Õ:m€Ó7Ùîqò#Lê†P«ð%„¢éú5ááá*•Êl6'''GEEËÖ~‰Åâ²²2¥R©ÑhÈ—0 ‹Åh4r²téRÈËË '½S,˲,K¢(ŽãŒÆm*ÕtÿT>Aû ¡úœ]áÓÆŸy8¸äÛããCàOöè.¾rµ&‡?ÌŸ¼Ãqݺv¹uû;uvÊø‘»¿€û”w»Ÿ U[W·&·`å ñóž‰ÎÞVìôZê·kŠžýô¤·7z‘1™¨øáçq!ê=e'y8ØñÕ ¾ÒSÆsç.^Ê}c!9ãá½¾-?÷ø¸ÿìüšŒ¸Õ\¿©QÝsÊø‡éðü[wÊX¿Ai£ocµ®àôr|Ô–áJ1„š¢“Œ,{BI$õñu: wHï € éaª¬¬’]Óh4êõz©TªÕjU*•J¥â§™“ª–/_^TTDê!g(ŠR(,ËÒôžÖš5'î±þ}zßájéæ½ÍŸµÀ«ºpæÇó|<‘ýÉÿRŸŠ‰sƒ½µöÃB»Â9Ÿ~õêœØ''Ž>Qeâw$ø÷ö’·ϼÊÜ8j0ò'?ÿæXæksÙ[·_\½áÿò¾\ø—?°|žH`¡~[‘ù±û&ݾý‘õÉ›‹žõT¤«k÷>!—õ9}ög÷U9ZÿéWOšúäÄÑå•?’¨l½<ëÉb¡@øïí%üIOî•ýÉÿæN{üÿRç×ÖÖ±·ïümí¦Qš{m'™À€þ}þùj²@ xkCýß¾uŽÕºÊªìôrú8!„Ú/¯7xá³'$$(&&&..Žô'­]»¶²²2>>ždˆˆP(Ç 2É\k».D"Qzzz~~>™ Å0 MÓááád\O£™å¾Idƒ—yS‚lSk~ž•ª×ëóBajM¿›÷ø/—é^æ DB®¶î‘‡ÕOO KY»©™î•ùÚÜWÞýt&&sB  ¿U}k¢ã/»>·`/BÐЙ4`@¨ºÚا#ñq:yXX˜X,¦iZ"‘äç燄„¨T*ŽãRRRòòòŠŠŠ”J%Çq …‚Idš9à«¿±H$‹ùiæÉÉÉ………ü«,ËZ,•Je46é™W¹4‘>X>ï&{ë¿;¿öíòÕ‹göìÑ]‚uÿÙÙ|÷ZøæzŸZ‡B]dätü‹ÂïB(…âr •JɆ-$JOO'¹ X–ŽŽÎËË #ñ“mä y ??¿°°0;;[,Ëår¥RI†ÿH’¯\*•z>–g»]C‘‹A«ÕŠ{äù‘á³÷`öý>^þãWõÁMdOˆt2“ÞŸ÷â}™óú‚Æî…B¹ç]Åo ,‹ùT™$ÊÎÎ^¸p! OóçÏ“ɤ×ëe2YDD_’¦éòòò¼¼<š¦Ífsee¥V«å8.::Ú`02b±Ød2…„„H$Ûvŏçª.zZ!ÔiUoÛÛÚM@µWÞ…P&“ øT™$“9>pà€N§S*•dJ8MÓ[¶l1b±Øl6«Õj¹\N2Eñq˲ .$ñ“H$ŠÏÈȨoVC÷ÙqÏŠB!ÿÉÉ™;o^ãÓ$<\çÃŒ«Vç]e±X !„"Cxd„ŽLlÊÌÌ\»v­H$b&==”Œˆˆ(**Z³fMFF†Ùl6‰D©T†„„DEE‘üO„D"‘J¥&“‰ß†òC!„PÛ‘“3<Ž¢víj¤Ìºu{ÚãŒ+_B(>óØ$& ¯–––FDDH¥R©Tj4I¯’R©\ºtiyyyDDDDD„m…¤ËŠ“¢££×®]+•Jm#'Œ¢BmGVÖœ ìwFÊÊšsá¡PÈqµ}tÀdúuÙ²©«WowUž§Ó…uŠ :¨#!ñìIå* ,Zô¾«—?Y¶¯òŸ2ùýã&ôá¾ßˆ€øî¢¢¢"R†_‚$©fYYØ„\|ÆO«`ñÙ¡H×Tž!„ZHZZÁªUŸîÜ©î¹ àáOö)SBš¹]ù™müäêŒÙ}²xB¡Ð«ø šáãæ]L&£(гÁg%‘HD¦‡«ÕjN·eË–… ªÕj½^O¦:MF(þÐëõ$ ”V«•H$üä'» œ!ÔÆUT˜çÍ‹gO2YÏçŸìÞ½ËÍ›·7nÜ{ù2“šš ii­Ób„¼äIŸ“ßÙ~²vï>¡VܽûøóÏG.X°á©§´·os_~Y?¬5Jµ~}É¢EêÓGR[[wëÖí­[˜ÍWì>n½z&&>Ú§OÚZë–-ûíú·<ä]/”R©†aHGÛÀ6Êá;¢ÂÂÂhš.++#ቇ±XL¦OQ¥ÓéÈDr±X,‹ É®IŠvD!„Ú‹ÐÐa íô¥3ÂËʪV­Ê?t¨jÆŒpHK+¨­­MK+Àø !÷l?Y¿üruõêíGž%_>l=º>q÷èÑ÷>l€Í›¿Y¹ò“´´ümÛ¾9s8|ÜfÌx¤¤ääªUù›7—&$Œ÷­U^÷B€Åb!™3IDú¢ø<ãååå¤kjñâŤG CqqqTTTHH‰·Š‹‹óóó+++išæ8Žï£Òh4dà‚'–e1ˆBµq©©±B¡annÞüÓ*•|Æ=pô¨qÚ´°–mBí•ã'K¯?k[Àb¡9®N¡èKQ̰awmܸúõ“$%M”Hº×ÕÕÝu—Ô±ÚààAA½bcÇ@``7Çžð%„›åx4M“½ù5t,Ë–••‘YMd/##ƒeY†aôz}^^žÑhœ?>éÊbF©T–——ó™Ê£¢¢6mÚDîÒÐ õ¨oφB͇ŒPTMVÖWàÍHœëiµ!{ŽŸ¬[·îØ9rÄ8z´Êb¹zâÄ9Ž«€¤¤È?üººÚÒ­›(##ѱZÞ}wËÞnJÛ¼ ¡¦>34EQr¹&ƒ3 CÂ2®wàÀB-]º”L„’H$dØŽ¦i™LÆqœT*ˆˆˆ‹‹#ÝT¤Ëd2­\¹’Ü"""‚Oš€Bm·£oFãÅÐÐ!ž5jXU•…œä¸Ú®]EŽÛl#Ôf9<Þ*¤xGÿßÿ{Š¢jøwÝ»w¥é̳ý¸ æ ‚¿úê8(•A¾Í…ò1_€Åb!‘$~UFÒ¥TVVFöÖh4EEDD&$$8pÀæ‘ê+áó›1112™Œ$óD¡¶@ p·6Û½?>””41*jøÍ›w6n¬ÏŠ^Zzúõ×ãnݺƒÓ¡P{1oÞz»(ªuã' é—.ÕÜuWïêêúIòó¿òŠ®¦†5ÎÕÕÕfm?n[·HH¿bE\@@E]{ÿý/}¸¯×!Trrrnn.ÇqE‘Õs,Ëò2ù-\lg‚“~&²‹°Åb!ƒ}|þLEGG—––ÚÞH¥RQÅ'8@¡V§TýòËUÇ󎙟ø3üE]{ûíÏìŠíØqdÇŽ#þn&BÍË6ŠjÖøÉÍ'Ëîxݺ"ÛbVN'_¼x1I† ‰ l#*2#ФÊ$ûºðŠ‹‹×®]K¦=Ùîµ ¡Xqq1Y»·eK…ï…B!Ôœ|Ù#þ{÷_w]ß ü]8è2wÔ3Í·À¢·B”lfZÛˆÙˆX¥Â˜¨ÝŒmyX'löbÕÞÑqË,£Jx¬„úxôn¨ŠT‡®sånyìQ±h®ši|Ðiîz6³‘y³ËÙ8ÒûÇ7CSÚ~Òœüòù|ø¨ß|ó=ßïç䯟ÏûûþDŒÿbWW×èèh¶;Þèèh<‰J¥R[[[`\pn<úýˆˆ¿?ëÞ[o‹_—|“·wÆç÷ÍøÐ¦éŸoŠ·¼-á#=·ÄúëNtAõ¯óÖIç–¦ýúÈ4[kü$z4Ö½;nÞ>üô£Ê<ÊO1ЯcÚG6CEA„8¾GÆ5?¯ý•ˆˆÑŽîwF×òXù¦øæ7""úöÅ×N\<üíxkGDÄçÆÇ·ÄÛ;cß—â‚s'~{Á¹qûÇÛ;㯿2qò‹•oŠ·]ÛoŽW6ûôÏþi\º,º–ÇÛ.9ѳ¦ÞößÇãÃ×Å¥Ëâ²qEW<õTDÄþ)žóœøéÂG˜=ú{‡'>õÞ«â×ß—­ˆ«Þ("â­ñä“ñÖŽ‰g÷¶qçí±êן1€©¨©_Ú.ä,\«¯ˆ[wÄkyâÇ?øp¬^íoˆCÄ»6öþU¼±#núX<þ¯ñ‚ÆÝŸŽ+&ª@ã¼—ÇïmŠˆø½õ?¾ÛÏþ\|~_|ã@|胱ü’ˆˆ7Å»ºãò+cï=ñ£§âÛþ0þêïâ…/Š‹ˆg}ÖÔÛþÁ‡ãÅ/‰ûÿ:–,‰‹3Έˆø_Æ&õjøùWÄïmŠ{?[>½qÓ­ñ’úˆˆƒÿ;6]÷|)¾Ð¯lŒ/ôýøëO½mD¼¨{¾|ìŽùCMý:0Wz{×ÎÔ[·5ŒPùü#1<<\*•J¥R.—Ë:444D\T»ç̈ö7Äî?¶×Å™gFDüÝ߯?<¿1"â‡ÿqf.Þº*î»;®þíøËûãÏÿz⃿~Ùqîvéʈˆ¥Eé'Î|ýkñ‰;""ÞÜ7L)9zÝëãÃ×Å[Þ+Þ|¢gM½íƒ>K–DÄÄ´SDô÷Åï\ÿã›w^:1Λ>:qæGâúõñø¿Ä™gÆcß=Îø{Ûã`êjê×9ÑÛ»6f.EÕ$BÝu׆¬yÁ1²š±3û¿õë×?ýjÀüòñÛâýï~7¶n%KâèÑøô}Q÷SϸæŠwÆûÞ?ó’øå_ç?âäÙÇëÓòÜçFÄÄ}Ž‘å’c|¢7~(>ÿ¹øÜ]ñ?ï~Ögà¶UO>}7~áü}ÙëÞôÉh½8žøqQó‰®<ÆÔ÷5õëÀ,ËòSõøôSÔLÖB=°sç5;w^sL~*‹ÙVÄÕQU===;w^32ò…ÀŒ83Ÿè#ÿ7nŠˆøÕ7Æî?›øUµÄçgÿK4¼4>~ãWÖNÝ«[ã+_ŽˆøÊ—ŽóÛÿóýh½8>ôÑxä›iÏzӯŷOšlÕìkûã5mϸfß—""¾üÅh½xâÌÿýa¼ø%wúÇ—=ç¹ñÄÓ{nM½í³9îjê×Ù49?=Û™T36 µsç5“liiijjÊçó‘ý[©Tr¹\¹\Î:’ŒŒT'¥öíÛ±oãÆ££/›©ñœ¾ç>7vìŠÕWÆ-7ÅæÿýýèZOþgœû²ØùtÔX¹*¾ÿqák’o¾éƸvmüéÎø•×G>ìo?ôÁøáã©ÅïäÇ'OåY›¶Ä~4.]¹\<ïìøì¢¿ï…PñýÃñ¶KâèÑøäO?î£ñîUñÂÅVÄ™OÿÇõo¾'.[gŸ_è;ÎmÏx–ÿ?îê¸_fM-v˜U©|u×®]ÕÛÛÛ›šš …B––¶oß^("bÇŽýýýù|>ŸÏ755566Ž>|8Û–8—ËmݺuÕªU…‚Ý©€¹Wmwtö9q÷ýÇÕÀ1Ù×Ä•W烓'ŸüÖቃó^÷þEäΊ¿üR<üÕcoûéûÒžU½íÙçÄÞòŒOíˆ ŸqæÚŵzÆ™UWŪ«&Ž?øû×Ý×Ýð¬·}¶^pœ?Ôq¿,h§¡¸cpp0;nmmmnnnll, •Jexx8‹VýýýíííëÖ­kooߺuk.—«¶,onn.‹ÃÃÃccc±gÏž¥K‡[[Own `vt-ºsbÇN~åq½û1öx=[·×ðY_|`CNâ´"ÔäüÔÙÙ¹téÒúúúuëÖår¹ˆÈBÒàààŽ;vìØÑÓÓ“å¤lE/ŸÏ—Ëå±±±|>ßÒÒR*•FFFòùüÁƒ+•ÛÛÚÞÚ_  æîð´>þ™½³÷¬*ýÄaFL?BU*_­æ§«¯¾º±±±R©dùitt´\.744ÄÓAªµµuÇŽCCCÙyYÆÊj¤²-‡ëêêŠÅâøøxccãÐÐP¡ðéêF{Ó3íý[NjšjrýÓÞ½{»ºº&ýª²eË–ÑÑÑîî†ýû÷oß¾½¾¾¾§§'ŸÏ¯\¹rÏž=ÕWö²¹¨l]/‹P•J¥±±q`` ¾¾^]0m6Ô0HL3BUóÓ–-[²ü422R__ŸËåöïß_*•ÚÛÛ‹Åâ¶mÛZZZêëë÷îÝ;00ÐÔÔÔÙÙY*•öíÛ—Ëå²ô²E½}ûöÕÕÕŒŒ´··çóùæææ¾¾¾U«D(`šn½õ”*§—´¦¡ÆÆ&ÔÜܼ~ýúˆØ¶mÛÀÀ@KKKWWW___OOO±XŒˆb±˜­ÙU*•B¡°yóæˆX½zu___õn¹\®úcCCÃÐÐPÖDªX,®©éÊiŒ ">ñÓ^é›NkÍ={öd­­­Y·ÌR©ÔÜܼråÊžžž¬ª)"¶mÛVWW×ÖÖ===Ù»xÑÝÝ”ËåžžžˆY¶lÙáÇóùüúõëÇÇÇ …¤næóHr„ª«ûûì º~›6mÚºukkkk¡P¨¶ Ïçómmm---ÙT–™²µlÙ²ˆ¨T*YÕùªU«J¥ÒoüÆoDÄÆGFF&ß `^IŽPÛ·Ot/ÉRÑádzãˆX½zu¹\Φ²·ó–-[–ÕŸËå²hÙ[{…BapðS3ñ5fÒ4ËÉÛÚÚ²bðžžž–––,B‹ÅÖÖÖ¥K—V_¸ËÒR__ßàààèèèèèèøøø¦M›²ª©ÆÆÆˆØ·oߨØX¹\.‹[·nˆk¯½6"FFFš››³VRóÊ4#T¡PÈ&ŠòùüºuëvïÞ]©T¶mÛOwÎÌÂÓàà`___õµ»lb)KN ÙÞŽ;òùüØØØý÷Oì¡°k×®êËzY8˜WR#ÔDÕzuçàñññ|>ßÓÓ“-ÉeóOù|~hhèþûïÏ~ÌÂPCCCÖ)*û`Där¹mÛ¶U*•±±±õë׋ÅJ¥ÒÚÚš%§ááá–––¬2`^I‹PYñxµUADÔÕÕ•Ëåööö¥K—fçwïÞÝßߟKµ´´´¶¶¶´´DD¹\îëëÛµkׯZFFFúûûËårssswwwD¬\¹rtt´®®.ËX•J¥®®nlì=6€ye:ªúzÝä5»­[·îÞ½;—Ë íÙ³§¹¹yÙ²eY9yDŒïÙ³gÿþýccc•J¥¹¹9"6nܘ½ —5êܵk×þýû³›Wg³ªY `þH (¥R)"òù|–r²B¥jÜÙ¹sgwwwcccOOO}}}ö‘ÁÁÁÝ»w—J¥J¥R©TòùüöíÛs¹ÜÁƒ³êò¬x|lllÓ¦MõõõãããÙÂ_vçB¡ EóÍtÒI†"¢\.Ož(êëëëêꪯ¯ÏòÓàà`V`žinn^½zuV ›6mÊårÅbqÕªUÑÑÑ1¹wT¶9qDdÛOÿûÔ@Z„*‹£££ÕU¼l.*KQÙÉžžž-[¶DDVó”lmm½úꫳ\•­ýe¿ÏÞÂëììÌ6>fÂ)›åÊn0¤µÖÌú”Ëålf¨\.—Ëåê¤Tö"ÞèèhDëkÏ糩žžžÍ›7¯[·®³³3+¯T*[¶l9xð`öñmÛ¶eWnܸ1"ZZZ²•»,e=¢²Çe*—»xF¿2ÀéJ­…º(bg<]•-ÆUK¿³$444”%¡,?íÚµ«¯¯/KHÙæ0Y;ò¾¾¾ˆÈ¶Ï››²NåÙqV¥ ˜o’÷ÈËd mY-T¤²ãé½ð²Ë®¾úêlÍnlllÇŽ±sçÎR©´jÕª,e+€mmmY³ƒê #¢££#›Üš‘ï 0ƒ¦¡><ù½¼ñññ,EeHY‘xV•ËåöìÙ“ÕQmß¾½P(lܸ1»2›ÁZµjUu!¯Z<ÞÙÙÙØØ¨£0%”îîî;wFDu /{#/‹JÙ«yƒƒƒ±lÙ²õë×777···gŸÝ¸qãèèèÁƒ#¢ú_.—ëèèȺœW—ð"¢©©iò¢Àü1Y¨‹²ÿ˺eV_Ê«Î!U*•R©”å¤îîîöööêÜRWWWV•U>Ug˜Êårkkëä´´cÇŽúúúJ¥R*ýÜi~C€7…¼®®®xzý.‹GÙtQµªR© Tž©\.···777g;ße] ²šôuëÖõ÷÷WïßÒÒ’UGeýæ›éD¨úúKãémÀ¼IIDAT^&Ï?eõLÙ¿ƒƒƒÙR]µafu±orxÚ±cG>Ÿ¿ë®»bÒ¤ÔÞ½{³6QÃÃ?=sß`ÆL³œüÚk¯Íj¡²FÕ,UP‡ŽˆjuÔä³ð´k×®|>¿~ýúê=³Å¾}ûöe÷¬¾Ö0ßL»©Á/vvvf»×ÕÕ•J¥jW‚jœŠIK1©ê|ûöíù|¾»»{êmwïÞÝÖÖV©T802ò’é  Ö¦ß2 ¡á­Í͇‡††FFFÆÇÇ …B.—«EeÓN1<<¼sçÎíÛ·?Ûžwûöí[ºtéèèèÐÐÐþýON{`µvZ]—ÚÛ?ñ‰áááæææB¡0<<\m2^,ãéY¨ýû÷oÙ²eß¾}ÏvŸºººþþþB¡P*•FFFöîýþéŒ  ÖN·qe{û‹ÅO ,]ºtéÒ¥ãããÕ¶O±ÿþŽŽŽ÷vÚ¼ysggg¡Pxâ4‡Pk3Ðû»¹ùÍÍï¼ÿþÿ^WWW,;::ÆÆÆ²ªð|ªX,vww·µµ‹ÅñññR©tàÀ] €aƶOéêúØððçFFFÊårCCÃÊ•+«ïèU» …b±X___(êêêFGG³þOCCçDÈOÀÂ0“;Ð55]ÙÔ¥Ò—FGG³À”E¥ì]¼ˆÈÚAer¹\ößèèË"ΙÁaÔÚÌoâ[_i}ýÄñØØYyöR^>ŸÏÞÔ+V”JÙ%šg ÏÌG¨É …SÎÔô³aš­5~’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 Yî¯;ÿü¦šŽã¤6lX±fÍs;€Ì©F¨ˆ8th¸vã8±#Gž«GLe! ™L„H&B$K('?½½k³oÕ‹@Í#ToïÚ£GÞqÇšê™%K–RÀ‚VÛ…¼,?-™¤z¾¦Ï¨©ÎBUóÓä9§µk{#bêy€D99@2 ™¬VµPYÁxV?>µx¼z^9°Õ°œüèÑ£'¾ ú‚ÀÂRõqãÆÚÝ`Õ0BmݺuãÆ[·nú«ìüÍ7ß\»§ÔN ËÉO< eŽ X¸j¡Ž;ÿtŠ¿˜Ïj^ õl³Mf¡€…«¶µP'¾@-°@Õ0BéY,VµŠPzf‹˜ ^’‰PÉD(€d µPGŽ<\»q, §¡6lXQÓq, §¡¼aP¥ ™L„ˆ—¿â‚—¿â‚¹°ˆPßýΣM¿ðKs= `Á¡ä' Y ·X@†¿ýÈ\XHÌB$¡”“ÉD(€åP@" @~’)'ˆPN$2 L„PN$¡"”C‰D(ù H¦œ B99È,@2 @99L„ˆP$:ÕZ¨óÏoªé8NjÆkÖÜ1·c+ù H•PN~èÐpíÆqbGŽ<Ÿ€T3¡Ž›Ÿ²ôŒüôÇU+EóÁð·QQœºYjjP]¿ËòÓß¼áŒoÞ0;˜q3¡²)¨ãþj"?Eœ±ºãŒoÞнæŠî5WTS”‰(`néN¤šùY¨ãVAMV} orŠ˜[Ê¡€$³ÑZ3"ÎXÝQ=Ö ˜oä' ÕlD¨¦î5Wìì½á©WÝ4 Ã8µä@{ä$›ùY¨ Ï:ëë½k«åP“·yÉØ&Xèj> •¦m/yAö¿Z?`Ô$B]xÖYÕɧ©³P“eûåÕb µ3“êÉ5w|ýÉ'³ã,Ee¢ª“O×ÿÓãÇÄ7oðŽ°€Ôp!ï³κð¬³~ó…uŸù×ñˆ¸þŸW,3¡&ODED–Ÿ~ó…uÕütÌÞyO½ê&SPÀ‚3ó³P“SÔ1ùi2ù X¸j²—¥¨,HÉOÀâS«îäYlšÜ *SÝNX~®ÚnðRÍOÕä'Üï`A˜¥m†Å&`1±G@2 ™,¡êÈ‘‡k7€äT#Ô† +j:€äT#Ô­·>PÓqœ” Ì y‡ ×n'f ˜W”“$›¥Öš³¯v Y"°8Õ´Z„§S|nzIkæ#Ôcí9•ËÎ;oÕŒ?`²“¾ 7핾ŽP=¶çøÀ©\yÙe—­YsÇÌ>`vÔd!ï²Ë.;ñ_üâkñ\€ÙQ«Z¨7½éMÕã¯|å+“µdÉ’=`vÌF9ù%—\2 O8®ÞÞµSOžfAQ­"Ô13O“™…fÓš5w“¢N¿ »†Ýɳ¨´ä™Ž¹ækO¬ýÚÇ †3hrfš‘Új¡Ž=šý;ÙÔËÊ益¢€ZË’ÓL5¨a-Ô’%KŽ=zÌÌÓqSÀ,˜Á†Js? GÞQ0, 5ŒPÇuá»—¼ú]ñ±{.{õ»Bl¨Z-ä=Ûkw¯~WœwÕ«#b,ÊWÊåx";䅯ݳö5ÏÓ¯˜1ÓÞ¿å¤j¡&÷¿ì²Ëª?~ìž“4.˜ÓÛ?øÍFkÍStèmù¸ÏD0–/¿rùò+kwÿZE¨c¶É«þøêwäƒ/møÁ÷F~¦F£8·lîë!§ëСášÞ¿&껟`!ïüûÊ—¿bK-Æ0³jòFÞm·ÝvÛm·÷à¤LAóßl75ˆˆÇ>ûÇ>ûÇ?{(îy,O);ù³÷Œ™‚æ‰?ù“÷­[÷¦ê·ßþÞ\ÜÕuQíGÌ;5YÈûÀ>ðlÇä¤{¿³iò¦ €yâÜs‹ç÷âÇûç“^ùk¿¶ôþûkõÖ40oÍp„:ï¼UÇ’?›ÉÖMAóÍ¿xàío¿ø–[þ|òÉbñ§~û·—?ïyg=ñÄ~êSþË¿Œä#—Ÿyæ™ùÈåqã÷>ÿùg¯^ý†¼àœýèè]wýíáÃ'O`À5ó³PÓÞ}Æ0<ôÐw.¹äU¯|åK¿õ­ïUO^uUûþýßþ›¿9ÔÞÞ|ÕUí==ûn¼ñÞÛoï7Þûô¯ëëûÖ£Žœ{î‹Þóže[¶Ü;GÃjnîûBåï)™‚曣GãóŸèòË/>xðûÕ“MMõwÞù@D|íkÃïxGÛÔOþϽøÅÏ¿üò‹#â쳟;k£fßG¨×<6ü LAóÏ#|ÿÍoþ¯mm¯˜ú«gÙ3=–,‰üÏËåÿ¬íÈ€y`ÞÈ;Æ÷F~F~æ§Ïþ«oyKkÄĦŸÃÃG.ºè¼ˆxÍk^þíoO¼P\©üè9Ï™øÏуG^ÿúó³ãÆÆÏúxÙ3÷ yóÖáÃ?xì±¾ðÂó²?ûÙ¿{ï{ߨÑñÊ'žxòSŸz0;ÙßÿèG?ºê?þãÉo¼÷3Ÿ¸úê_ýØÇVy晣£?üä'ÿbîÆÔ–p¬k®¹³z|ç}ÕãÑÑÞ|ó޹ø¾ûºï¾‡²ãÿ÷òwüÕ,Œ˜s êÈO"N=Bmذ¢¦ãX@N5BM»ÛÀ⣠àX×m^3×C¦é–ͽÙARÒòåW:4œô  Xœ–/¿òT.Û°aÅ)^9™,Z'[šöÛrsßZ`Á9ÕY¨¶ÖrMÇqR¿õ¾ßY»¶wnÇIXÈû­÷ýNíÆPk½½kgªÉÀ©F¨ýòû˜ªÞÞµ1s)J-°øeùiêñ´‰PÀ"753~ŠÒÔXäj±ÉŠY(€d"@2 ™Z(`Ñšöþ-'%B‹Ó† +jws Xœn½õS¹lzIK„­C‡†O|Á´Wú”“$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H–›ëÔÊ‘#×èÎ"°8mذ¢v7¡€ÅéÖ[8•˦—´D(`Ñ:thøÄL{¥O99@2 ™L-°Èõö®zrÍš;Nçžf¡€EnjZ:Íü"ð“`rf:ýü"ð"KN3’ŸB„~rÌT~  `D(€dš‹Ö´÷o9) Xœ¦·ð)Z$jùò+¿ü¹çzÀ|±|ù•Ë—_Y»û/†õàƒŸ›ë!‹Ê-›{çzÀé:th¸¦÷_2ƒo÷ü„ðF@2 ™L„H&B$¡’‰PÉD(€d"@2 ™L„H¶døÛÌõ³PÀ¬zù+.xù+.˜…jJ„fÛw¿óhÓ/üÒ,üP;"0«ä'`qP ,÷GÛæz LîñÇûæz Ì’£GÎõ˜Ü=÷Ü3ã7½çž{î¾ûîZÜàÔÕ.“x# ™L„H&B$¡’ýlÌV9©tIMEÕ ðQHHIEND®B`‚jpilot-1.8.2/docs/jpilot-prefs-4.png0000664000175000017500000002063212320101153014152 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝ{\TuÞðï™”›É¹"^% EÁË2³µls³(u÷Ù­uËÝ­¼Ëf—míq׉Ï>me)Jša­R*xWä"¢(rQåêÌyþ8ã81çœ9 ·ßçýêÕëø›ßüæ{nΜ3s†Û·ouØŒ3:e…:-v:>ÊË/¿Ü)ã(ÔY±óòË/«:£€Þ !LCÓ‚À4„ 0ÍJ´•çy™çp×5Å€%6†n^éú-´—Ô+Õ.‚Ð÷ˆnÆí„>©‘•?ñÁó¼á&$s`‡·Ã@Ü=d@ 3ˆçy™ÍËxd€®¦ßtõ›œü É#A©}›2 dŽÅD·'åÇn†ÛÇqmþIF˜q%ƒ#Ó.út©—†^A¿Z•¬D B;†]›Í«]1aØßø Tª³q~I Ò¦›¾Ý0ÁåŸnxDŒìÚ¬5™•ˆs‚ ôÇ0¤„¿´&ßÈÜ®§›×Gtvž*F ™cü~¶ëŽtÚûÙ¼ û´ëé†)#ÁÞÈø¼ŠÔzD2ÇÒvi“õ()¸ƒ3%sÀ(D¡¥-4׿/½þdˆèzÄ9AhÓk=ò—å;(ìӆɫ1Ыɼ×]Ñ’G‚Ø,  Ã##;9hF&¶9·(zUD¾ƒÂ>¢³@÷.}?—†{;ã #R™&‚XëŒZцí&¯²™¼øÐÞ§›ñŠò-2 ôÊ·=Î öeRŸ•=„`_†Ô0 F€iA`šÝûÉ’Žë¬qBìt·hÑæž® Çàœ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 ·Ò‚_ ìéL¸p¡ §K€>!÷Z~Ä$&.Æw=¡™ÁÆF×n¨C![Û*‹ªGT¯(²—*/Ï nÜ&-aUZB †,­“lm«ä;˜ÁÆFךšœÎ«§£>ÿ|ÍÌ™«zº zE‘¢{ºEºm›´„Ui 5²´zLúüó5òozÓ…‘ššó=]‚i½¢H%V¯~Ê¢þßý,aUZB †,­“”lâVZu$XSsþèÑþW¨W)%&&Ú2Ï ®^ýÔêÕ{‰¨¼==1-íÓC‡6åæîëÈPûöÅË<ªß[Mî&ÊõúKge}ö¬““Ïóuu•2= Ò‡Ÿb<µ¨Ë«$ŠŽ^LD-- gÎìà8òõ£¤Î¤¿¡RqcǬ_ÿÍ;ï̶³ë×ÐÐLDnn/žFÄåå•êŸ"Ú˜ðÚ9#Gz8Ÿ_¾pá''{†ÿâ‹ô¢¢ëD>Y´EæH0:z‰0±o_¼~Z¬›Òåo’V«ih¨µ³ØØX×ÚÚÜ#¿p_Zšãá1¢´4ÇÓ3¨]Oäy-Çuòû¿ŠŠüÂÂã/ÚØØñ<_\|†çù.Z,ú½µw“Î Á††ÚÌÌä»w›­­ûkkûݽے—÷CMM)Ç©T*«I“â8Ž;yò‹ÆÆ[*•ÚÊÊfÔ¨' ð0§¹ùvVÖž¦¦:ŽS…†Î8ÐÛäK·´4ôï?€ˆ8Ž{àO©qÒÒ>Õj5úÃýttô’””µO>¹’ˆRRÖ6¥²2¿¥¥aÔ¨'<STtŠˆS©TQQ‹•/(»é99{…ÐxiÖ½Djäç¼~ý…‡Ï³³s’Z¢¦5##ÉÕuH@ÀDÑRõ¹ìsíZõ­[ 99EãÆ¤¥] ¢çŸµ¨¦¦$+k·°zrs¿2$Â×7¬´4›çy¡Û… ©S§¾ncc×ÚÚØÞe5`€Ç;7…iã¥Ñ¦N©bg絸¤$+7÷û{K[tˆ4ÑݻͧOåãæë&U§>w&Lvút:uåÙgÇ !8hË–‰èÌ™+ D Omþ)Ly»»ˆ ";;]Àåå][°`Ê©SÙÙER-ÊÏ JͲèò7ÙY”—WÈ‘#[†ŸR^~~Ò¤Wõïþ¤V–µµÝäɯÖÖ^;~ü³Ñ£Ÿ¦33¿ÇŒnܸ2`€{¿~#ÊÊÎûù…>*µ‹ÙÛ»M#¢ÌÌdù’Ú»y×ÕUèeÜ.5k¢{™¿ÿC¾¾cJJ²ô{™Œ6»IGöGꬬ®¾:vì"òö—·_h¬¬Ì‰ùƒ0mmm+L46Öff&·´Üá8ÕíÛ7ÛŒsãFá;Õ. ¢ÖÖ&%/=|øÃÞÞ¡7n\)*:UUõó˜1³ÍGàí=Šˆœœ|ë„–šš«áás‰hРàììo…F7·€ììo½½G{zŽP>¸1ù¥!3#ƒ‘—WÈùó?-¢«@´‘ˆŽû¿aâ ’{'%äNÿþÖ¡¡~ž³f'¢í\]«ªê‰D·TñÍ·¹¹U˜à8ú製MM-†&& ôœ8qDTTІ ߉¶(?”šåŽwÖS«­œ|óòöècee£o—ZY>>£‰hà@o­ö®—×(aº±ñ–Ù5\»–íå5šˆ¼½G]¼øc›”Ú¨¼¼B–ÔY›·Ô¬ïeÕÕÅBO/¯œœv_ë`ÁÝ}N0339,ìYgçÁMë?¼oÜ!2òe+«~íÓÞÞÙÞÞÙÛ{tjêß;2©Túb¼?ß>¯ºújIIÖÕ«&üº]/QWWioï"L›\dîŒÈsqñ»~ý’§çH™7BîŒ;$7·$11Uhœ=û¡ˆˆa))g *ÆŽ 8v,ܸûï_D åæ–FGíߟMDþþîÂ9AÇË—+ÊÊjþú×ù÷ÊkÛÒ‰W‡ —¿Ù{äÈÿLšÔö ¸èÊÒoT§R©Ô÷šM{·¥²òRuõÕüüŸˆ¨©©^8A©ï µQæµ|Iíݼ=jkËœ+œ±½Lt;ä„s‹Z­Fþð°#û#uÖGdœýÊË󈨬,×ÅÅOhôôYPpD˜Ö¦¶¶6 ÇêW¯fãîX\¬k¯­½¦ä¥oÜнժ¯¯NJ£RYi4­ÆÓòœœ|…kpyúƆ†ZgçÁÁÁÖÖ–)D¯¥¥áüùÿèOšˆ. ÃÚ¤Ƚ¥}^¿å‰®ÑF" y\­¶–ÿ“+äNDÄpý›Y"ÊÈ(®oß~lêÔQË—Çz{;kµº T´ÑжmG† q_µjÎÚµÏÍš¥;~Y¸ð‘•+ç,[6k×®R-Ê?'(5Ë‚6Ë_¾³Œ½gÎ\åääcØhÆÖkF ååynn11Kcbþ󇀀‰×®ýâ;]ò»˜íݼ‡ÌËÛßÒÒ@D<Ï2Kù¬9;ÖoÒúF;»µµ¥DT^.òÕ7ÃÝÄìýQ`æ‘ þ˜ËÝ=04tÖ¨QOdf&ž°²ê'¼!%¢'òò~8th“J¥V«­##_á8.(è±ãÇÿÏÆÆÞÝ}˜ñaȨQOž;·÷ðá­Vcgçñ+“•ŸÎÍý^¥R«Tê°°§eÆñ÷øp‚••MtôÃiùñCBž8{6éçŸO¸º¨ÕºÅ••õMkkü˜Â%––ö)Çq§<8\iRtiÖ&µ@ªÓÓ7Qxø¼{³,² Dï=4#'络œ½¡¡âù" ïFõŠ‹«V®ÜND×¯× —5ˆ()é¸0!Úø›ßlÑ?ýΦ͛´y¡¿ýí[“-Ê¥fYtùË,3˜±õšQõk9~~ãõÿôò 9{v×°a÷ï|!¿‹)ÑÞÍÛÓs¤FÓzòäç<ÏkµW×áu•ÏZHÈãI?ÿ|ÒÕÕ__spðcgÏî²±±óðn<#†»‰û£!|wØ4áSåå ¿j£×}¹Ò¾;lÈV¥%Ô`ÈÒê1IÉw‡{ýç»Áñ㟠‡úaaÏôt-ÝGùµˆn`9•@߃4-2òåž.¡XTîXT"Cƒïƒ8K¸‡ þÿH@è:8'ØÉzE‘R,öœ Î ö,K«Ç$ÜOÀG‚–ÿŒÐ‰,ü0P›%(·tiLG¯÷–Øm:Þ@Ÿ%üF«<„ 0 !LCÓ‚À4|m®}”œg€1hP¸éNF‚í¶wo—ÿ:´×† ?š÷Ù)„ 9òË̼-0t…W›h‚s‚À4„ 0 !L33^[ºôIý?ÿû'^•éÿÎ;³õO4~tܸ¡ï¾;{ÅŠØÕ«çÍŸ?©k~º¾C6m2qWýŽ˜ý¸n"Ø·íDûçÇJ{ 5öïÐË/ %Ľ@åeDDßì G#é±I´g'Q}Í}’Z¥P«¼Œâ ~æ·Sfzó/ŒXY©…Ÿ urr°µµýu1½÷ÞK–zèÁý}tôÆûêë›T*.::ˆã8%?ÀÜg$ÿЙ£iî’ºó.wmþýîÍNÍ$ãEa²€ì³äàHƒ¼ˆˆ>XKÉÿ!++zz==‡>ÝHqKÈÚZò¹ƒ¼è(ó ×áÒ¡×2w9z4?2rÄ·ßž™4iıcù~~®BûoÌprrÐh´ÍÍ-Û¶)-­&¢„„× uÌÐôé¡II'ê뛈H«åÒý²¥««ã+¯LµµµnllÙºõ§›7o ãìÞ}jìØ!¶;v÷ñq ìèhûõ×Gsr®*é U^JJFh¨¿ƒCÿíÛfg‘›Û€Å‹§qyy¥R !Ø—þø6ý'…ªoÒ;k(?¦ÒÍ*ZO~Ü|*/#++²w ÕïÓé_Kö¥—Óñ#÷Š˜HYJåd¥¦µRèóKmmÕ¼'•ª®‹ «çêFDäê®tɈÎZ›EѦ㠉h÷Nzl†®¿ÚŠšI­&++ºVBç²iÙò_ùÕ¿é‹ÿ%NEÖVôÍ~"¢éOÒî$]¶™`„ù!˜‘qåí·ŸMI9;n\Àûïïž?’ÐþÙg‡kkŸÛ‚Ñë×ï–ÇÇÇ¥¸ø†qûüù“Oœ¸”–vaòä‘óçOþç?u ·o7¯_¿ÛßßýÍ7gnÛvD˜~å•G„Œ3ÙAª¼êêÛwЉ’R('“~=‡V­×M/û½nW_ó=3—ž_@IÛhÍ;´ùß´'•ˆ¨¥…â^ ÙÏ›XÈïm O"¢ÜlZþ%¥Èu2T·Ï¿þ-\D“§Ð…óôöh÷½¹4£ÔÑþº‚‰hí»âà ÒÎ<¥tÉ(™µ6WHD§OPܽŸM]ó>-]BGk>¤¿¯§?þ¥í€û+8FÎ.t«V×2z }ò¡ä, ÌÁææ»•±± ¯75Ý?ïâââ÷ˆƒƒ­V«õðhöøž[¶üHD§OÌ;Aß~êÔe"*.¾ne¥>}º@˜vvvPØAª¼Ó§¯Qaa¥““ý œ9seÁ‚(©:ŸšMD4:ŒZZh泺éò{?½qŠ6$Í|†Þ_£kÔjiÙïiøZòº‰…PVJoýŽjn’ZM?_1ÑyÆ,Ýıt*þ™>ZGDTw«C¥’VŠü˵kÖd*,+%7Ýô´ÇiÚãDD9™ÄóÔÜD¿YHÄÓÂE1‰ˆhR4½û&=5›b¦ëžâáq¿$`S‡Î9rñí·Ÿùàƒ=†qqSÿõ¯ƒ—/WôëgõÉ' MRZZíççVPP!Õ¡ÍéÁÖVШÕjïÞÕ Ó†×Rä;H•§–ÁPŠÎKöëGDÄq¤VëN?q\Ûš‰ˆ *üë "¢w×™üÍÿ¢7Ò¸jl ð‘mÞ'ú ¦MÿKDdg¯nž¾ü†;¡TCRÃJ‘9ùY3ÁÔ¥³ ïSüßè…gèë½Äké…gèÐ"¢ÿN¤ŒS”¼¶AŸíhç‹BÕ¡È]_¼8±°°Ò°ÑÖÖ¦¶¶ˆ&O–>ƒeàÀì¹s'8:ö'"•Š{øá`á½gAAyxø"?~è¥K’Ù^ÊË+(¨;6€ˆÆjöË‹ ÿ¤íÛCã'%ü7]ʧþA*˾¾ŽÜ=ˆˆv|)òèžTÚ“ªK@CQÐןë¦s2Í/•ˆlúQcc‡†•"?kz†ˆVèåC×¹uìßGÁ£ÉÛ—ššH¥"Nu„k%4.‚þ¼’Îßûõ°ÊJò¶˜kñÐ#:ÿks;wž|óÍ™õõM¹¹Wå/ 23‹¬­­ÞxcÇqjµúâÅRáÒðW_‹‹{dÚ´Ñ­[·þÔýåmß~lÑ¢G§N•Ÿ_¦dFD­ˆ§e¿£%’ƒ}¼‰ˆè“ÈÏŸæÞ;—¯?á%êÏ+é×sÈÙ…¦ÄZñ¬ÕëiåŸhæTjm!_?úÙ”‘)•ˆ^x‰fÅíI5sX) gꡄ ÇEйlòõÓýón+mMÐÕö§ôâlÝké^ô ª«#­†þ´B×r.‹ÆOìÐŒ@ogú‡–ð{†„Ÿ|Äw‡-Gf}¶…>ùÔ̧¿ù[ZGaæÜ|,ÈÇ«EÃJØañ“›Ð— §ú:݇¥Û«¢œjk‘€¬Ã]d ×ÛºÍÌ'z2ÿ¹ÐgàH˜†¦áí°9:rG°(ÁvÛ°áÇž.: B°} Çg†úœ¦™‚'~ݺç&LFD¶¶6o¿ýŒ••¢Ñô7Xít¢wlí ãÛ©¶÷Ufμÿ9´®¨Ð<ò·¹•'z‹Ù.½ï,@×13çÌ™ð÷¿÷ñÇ{çÌ™HD3fŒÙ¿?G¸[I27X©OÉ7l-ÛO„õt "ÚµÌÓÖ°ÀÌs‚Z­ÖÆÆJ«å5­‹‹£ŸŸÛ®]' ;DGOÂó¼F£ÿÅþ¦¿Áª|ŸrFŽô>p ;?¿|áÂ)NNö ÿÅéEE×õ‚ƒ}ˆøÍ›Soܨ3|ºèSû÷·ž7ob@€‡F÷¶Þýàƒ=<Ï`g<¸É۩Κ5.4t0 /æÿÐC‰‰©D4hÓ«¯N]·n—ÐsÅŠXµZ½bE, Ó§‡;ÄÑÑV÷VÑôä¥ÜGVê6·¢ýE—‰h£Éug¼Þe¶€®ff~ùå‘×^‹áyúòËôgŸ¿{wÛQÆÆ>´|ù×õõMööý¤‘ïSYy+9ù$-^ühjê¹¼¼R__——^z8>^—/µÉÉ'##G<ÿ|ä?þñ‹û²‹Þ9uþüIµµ kÖ$ñ<ÙÛ÷nÓ0þ$ãÁMÞNµªª>>>YÿÒ99WçÍ›èàÐÿöí¦¨¨‘ééõ=×­ÛµiSœ>‰¨¾¾aýúo ïÞ*Zƒžü£óî#+E´¿è2‘ZPòëÎx½+ÙZºˆ™!˜•U”•UDDþþîDœµµÕo;ã(5õ\~~åå][°`Ê©SÙÙERƒÈ÷9sFw§Í  ow÷±±Ddgw'9{¶PèöÜsmo"zçÔÐPÿwÞÙ&ÜÏîÎf™ÁMÞNµÍKkµÚ'.Oœ8üàÁócǬ]›$³èŒïÞ*5ƒJ˜wY)¢ýE—‰Ô‚’_wÆë]ÉÖÐE:ú™gžÿùçiË–Íúàƒ=*-[6ë/ÙFD‰‰='N´aÃw¢Ï•ïÓܬ»[5ÇÑGímjjQ^•ò»J Þî›Ä¤§_|ýõ'nÝj¸xñZCƒ\©Æwo•ŸAÑG…÷×UUõ ûÉÜûÈJ‘è/ºLÄ”üº3^ïJ¶€.Ò¡S×cÆ ))©ºy³ÞÆFÍó¼VK66ºTuqq¼|¹b×®ú`2¦¤åæ–FGën€êïÿWpôw<½|¹í-WE•õóôéaB4èßv‰nòvªÆ/]Ss»ªª>66Âð½°àî]~±´ke]·n׺u»„4©½·¹í/ºLL.(Ñâ×»Â- +˜$¨V«{ìÁ÷Ñ®]'ßzë)"Ú¹ó„ðèÂ…ØÙÙ¨TÜ®]'¤FPÒ‡ˆ¶m;òâ‹Q«VÍQ«ÕUUu7~/´»¹ X¾|6·yó6O½sê×_{«VÍÓh´--w?üpÏ󢃛¼ê½—¦Í›ïßõĉKnnáW®´MäC‡òV®œÓÜÜjxfPÉ *yT‰öÞæV´¿è21¹ D‹7^ï ·€®Ð[oª*sq³§Ì›7ñæÍúÌíéB@GÉMUñµ¹Î±jÕœ¦¦Ö={N÷t!Ð>½5-í0pÍš=]˜Ÿé¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜†¦!€iA`B˜fe²GyyF7ÔÐ#L„àÒ¥1ÝS@à-ÚÜÓ5ôœ¦!€iA`B˜fâêpPP`÷ÔЖ.‘¿ükús‚.t^=ÝGÉÇœñv˜†¦!€iA`B˜fúê0€y^»v­šˆ×hø´´ G^ìéŠD ¡ ÅÇï""‡þK–]0wî}ûéÓWˆ¨°°ÒÉÉAh òvwADvvýz¢Xèû‚Ð|}+*nµiäù_ü³µU#4rœ®…ãè£ö65µtG‰À*¼†.çàÐî܉‡ŸþYPP>„ˆÆzéR…ÌssK££ƒ„i÷®®Ø„#AèB+VÄò¿1žwôIDAT<¯Ñðééô—†¿úêX\Ü#Ó¦nllݺõ'™§oÛväÅ£V­š£V««ªê6nü¾[ª¶˜ø‘  @ÜEz©òòŒ½{åSo‡€iA`B˜†¦!€i¦?"£ä&ý½”‰\º4¦{êè&>'зᜠ0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0ͪ¦&µ§kè1ßæ'¿Xb•””Ôéƒ&%%íØ±£+F6u]ªàœ 0 !LCÓ‚À4„ 0íÿÔÖ·>u¡tIMEÕ Ïz*IEND®B`‚jpilot-1.8.2/docs/jpilot-print.png0000664000175000017500000001654512320101153014036 00000000000000‰PNG  IHDRïñ¬ÎwgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103ÐËIDATxœí{TT×½Ç3 ‚ P¯DAð­h#%ŠªõUm4*VÛ{5©½·‰8! V›æ¶±¦.f%)­1*‘D6WŒ‰Æ1¢D1‚AE‡ Ï™ûÇÖãqΞ}Îæ¹ý}–Ë5œÙg¿æËæÌ9¿ïþi<âPfÍše¢šDzbÅ °†W¬X¡µFÄ)@5#ü€jFøÕŒðªánÕl4F££{ô s¢¹ãî¶ïR¯ Öh4ÒƒbHja š“Ö¬¤W4¡¼†ÞÍu1â3)^›5÷ч­ðóf¯ÜÒš©,¨ß¤ŸŒ>˜Ô |h9ž4!þvÑq™¬>&_ Ÿ̕†Kÿ­t,J¾t:-Ô‹.sq5÷ñ7 GýJ˜»¢µ *gŽ`üA¦ š5KïâHX6Z®ÌÕorÜDˆâ㌤Ãa`¼‡’ÂÎ çßÍG|\v ¨•(©™Ñ£²Ç•·B­Dm7\µsèŒjfÜ:EΨæ‡P¾ámÿ×ÍÈêáw¸g3DÇ‚:DûhÒÒrݱxÝŒðªáT3¨f„PÍ? š~@5#ü€jFøÕŒðƒ3F„Z@xx˜£»`o^|q>Ç55@EÅGwÁ~44”8º Î^i üÀ›šsrÒ\èÿ††\e­'1tááa®x¥ÑÐP’°È‚ž74”ìß¿ÏΊð¹6;?®ÒOׂ75§§ostá*ýt-xS³«¬yJúé*cqxS³«¬y²ýYD"¯æììU:]rffJFFRpp ú1|xàË/ÿ"3sÁ† ‹—/ŸB®[—¤¶éÇŸ½JüãÖ­©ŒÍeŽÙ³£©¯-è§¹wQÐÊQôô$+kŒ3tÙ²ø×_ÿÈZmkµZƒÁ@^¯X1õý÷¿¸xñšV«2ÄŸܸ1_mÊ×fj‹j™9sܧŸ–H_ËÂè§T¾99i®ò7DZ¨xXQQ—ž>Ö¬™åççÓÓcèèèܱãx]Ý ÈÎ^UPp6""À˜“s¸©é6ôïï½|ùÓ~~ýzzŒÛ·U[{M(9zô‚‚ÒââR¹×Í›m`0¯\i&³³Wýú×ïètÉäG>ýÓÓ·Q«%(ÿà©-26ªÓ%»¹¹ Ý^geía|ãÆ|F?Q¸£BÍÑÑ¡-›{´¥åG6,`éÒøM›>![òóOÆÅZ¼8îí·?€%Kž:|ø\yyÝãû?÷Ü” ö’?üp+?ÿ¤¸ò#GÎétÉõååWNœ¨îé1o‘¿ îînkÖÌ,,¬dT j¤Àh‘Š´Ñ¬¬=[·¦’î€øµìÀQ²¶@‘šuºd­VÛÚz'7÷(øûû¤¦Nõññ2 >*;}ú"œ:U³hÑDr$<|H``ÿää àíÝW(yêTIû÷—œ:¹víl½¾½¬ì{ƒáþßñ€€þë×'hrr È‘;Ž?ûìäÌÌnnnÍÍ··lù·¹:§L‰X¼ø©žžž®.Cnî—â·æÍíÚí—_žO~ÌÊÚèVºæ}øáñgŸŸæÎ®wߥìеkWaZÚŒ„„ŸVV^*bèÈÓ“}û(OnÏY–ŠA¬‹Šëfr½arw™8ÛPʈ3 ú[ààÁÑâ4À¨cÄy°äž*qN0"áT3¨f„PÍ? š~@5#ü€jFø]®? Ëá¥WÄLEüTböïß&»áСåä¤=ñDˆpDÈÉ®09»uÇ3P˜°^œ)ž: ß+l‘¢îº™êr•=+6vDiéå F¨jK«µÚ5½U)LX?sæ8«Ô£Ùæ,ÀŠóìp,q¹šÀv¹jµš¨¨á›6}¼n]’·wß¶¶v[öô±ÆÇG$$üÄh4öô6lÈ7éÉKDµâÄYãIºÛÄÄqQQ!¾¾^BI¡F[Ô­Y3ËÏϧ§ÇÐÑѹcÇñºº&ÍQíÀ¤¥M0ž;wå™g"ÉV ìÉijº¥Ñh¶m; ƒû=ÿ|‚Iê^ÂjN*s.׈ˆ úú·nµ=[3üر ÙªìæcMN~rýúz}»àR¡"µâL²Æ€^ß¶iÓÇҒ춨#ÊÍ=J2̰tiü¦MŸ˜4Gµ/^wäHYaaelìHa˜ìÉÑjµ6,òññlmmŸ*N¾-Ejŵ $£-êˆüý}Ö®™™²lYü!þÒ¶¨“:èôé‹@þ¿7vÖä †'ª'Néîî5¼¨¨š=Fgƶ.WOÏ>‘‘ÃÂÂÍ;}Ôû±Ç|››õì³ìæcݶ­ ,lÐĉ£&Oë­OÍÕ)µâZPRa[©© ï¿ÿEuucß¾î›7/—`OõªÐÜä|õÕùÕ«gÞºÕvþ|}[›ŠÙv6T»\URVv套v¬[·cݺ‡ŸUõ]ÐÖ>VßêêÆ={N ö˜£ƒ3ųa´E‘——GKKLšNmŽ:955?{GQQ÷ï ÉNÎÍ›­ÍÍúää .}™–¹\M`¸\'LyôèwÂ%%SS§8pZa£¶ö±._>ÕÛÛC«ÕìÙsBa—LgŠg—d´EÑG\»v¶^ß^Vö½ÐaÙÄô»v¦¥M›6í§õ=ä,ÙÉ€'ª¢kj(Zw!ÐåÊnnÚžCTTÈŒ‘o¼±WáY N¼~]ÿùçe6í›­A—+oüîw³ûõóÔhàÿøRá)™™ ÚÛ»öî-¶e¿ì%Y|ÐåŠ8'èrEøŸ§š‚jFøÕŒðªáT3¨f„PÍ? Ëát¹"ü`s—kvö*.933%##IšÇ„mUnêt~Û,bìárÍÊÚóÚkyûöZ¶,þ¶µZ¶ Ôº¦NÇÚf;`s—«@EE]zútxÐ|ºre‚93©ÔCJÚ?Ùí:‰m±6w¹ DG‡66¶×‚ùtåÊ¡€‰™Tê!%Hퟲ}s6Û,b#ì‘ËU§KÖjµ­­wrs’#b«©€B3©¿¿OjêT/ƒÁ0pà£J:`·ô¯ÄÊZTt¡´´VIÇëb5K×W‘ùô> ͤ²öO)Îf›El„m]®½„ê!¥Ú?âü¶Y¤7ØÖåÚK¨RªýS!Îo›Ezº\~@—+˜Ëát¹"ü€Oh~@5#ü€jFøÕŒðªáT3¨f„”Fë+)†Aı(}zbbn•òÖ[ŸãSı¨xȰ®Y³…qâ“O†%&Ž%¯*=yÒ©E¿uk*I³‡¸6Ö;vØŒ‘›7ÐëÛ}}=W¯žÕÞÞe’KÏ´Z­Á`°J­X•MëDd±¹šÇæå}£×·€^ß¾{wáüùO yN¥iR©)JìiY5i4""À˜“s¸©é¶¹~Šë$Æ0s§S½ºÔL¬ì AÄØ\ÍAAþ—.Ýÿ.]º4@øQš&•š¢TŒÝ,«b[òóOÆÅZ¼8îí·?côS¨“}:Õ«k&«Ì„ öð2:[©FT1v³¬Š!©QOªY´h"»ŸT¯ôtªW74tÉw}úôÅçž‹W8!ˆ€ÍÕ\Ww=$$°ªªü(ÞCêl•5¢ÚÍ²ÊÆ\ëT¯¶WWÜO †ùÐbó§'‡MI™èëë >>ž))qgå©FTå%­hY#¼[]ݨ¶ŸÔÓ©^]j&VU =äØ|m>s¦ÖÓ³Ï /Ì0h JÏœ©e”§Q•—´¢eUL@@ÿõë“499jûI=êÕ¥fbUÕÐCŽ"—+{ç.X³fKHÈOy}z’½Šl/f‡Ó-ËÄŠT¬ÍìG$ˆU° +" tm&Þl6¼®Íˆ« hm<8•Š8?ŠðªáT3Â2×Í ãô-Cû«#ÿ-P6Nß0´±ŠîiT^UÆÀà/¯Zÿ×A¯›ž@5#ü€jFøAšÓ–¤' b¨•;Aò½êt ^}áøñaÂA ê‘}‹=ÖŠ-š ýüù«T[€Ÿ©ÜcËÎÐ:wnLdäP``Åyi «¼½=öï/™:õ'sæÄ¬]›ëæ¦Ý¸ñ—/½ôÁ`¤vÀœ£ÖÜ ˜;…:“T_0$&ދРñõõ’Vì Ðé’ÝÝÝüý}ÿú×ý&o™KÞ*uÈ€——Ço~“øÍ7U……•²*ôز3´67ë7lÈg`Åyiü±… '”Œ9¸©éÖ!<==¾ÿ¾™ÄìS;`ÎèJõêLR}Á ×·mÚô1µrp×XgQ3ù¤ÇŽ NNŽ}óÍ}â·Ì%o¥æ~]»vÎÁƒ§OŸ¾¤¤Q…[v†VåXB]ÝõAƒéÓÇ-0ðÑ#GÊFŒø//ªª«ŒsÍUÈÈ~K=…:“T_0»rp×XgQ3¡¬ìûÔÔ“ƒæ ¡ÔܯÕÕ cÆ ûöÛZ†S†QÕRª6C+Û—j4kk›ââF56Þ¬ªºš”4ÁÛÛ#?¿ˆq®¹ Ùo©§¨JƒËN­ë$^cœëÝðáoÜh59¨*yë®]…ÝK—ƳÓ›ƒj)eghUh€祭ªj˜9s\eeCSÓ퀀þƒû]¹ÒÌ8×£+õêLR}Áʱ§×Xuks|@gçÝÇN[Ö(.Y£ÑÀ3yKmòÖ;ÿêW“Ÿ}6~ûöc è ZJÙZï9X!'ç0£q^Úªª† bÉÕÅÕ«7[Z~ÆE=×£+õêLR}Á½œ1ye‘qR«Õã4ÂÃÃ0ê±:Îu¥ ½ÕŒðªáT3Šîi`|=âÈ«ù­·>·C?¤÷Ȩ÷…A\¼nFøA^Í$”>33%##IúX•ün.D=&&4##I§K~õÕ…K–Œ°^¹2Á\ð»8Dü>#óòN,UƒñË/ËÉqsÑÜŸ|Râããµ{÷7AA"#‡úúzíÜùõÙ³ß+) <Ø?  ?#Z<6vä·ßÞ 4e牢¦–b@MZEMo% ù.œB œ—Ή¹kýú¤úúÅÅ5¥¥µÝÒÎëtÉžžIä,éfÕJ’Œ™Œ]j8}úRlìHkª9::´±±…¼"¬W®¼Ài<.Qäùr“´~sÑÜ­­›6}¸víì;Ž“×+WN%b•- <Øñâ8F´øÈ‘ƒ Jïu••'ŠšZŠ4i˜IoÅž+é)ÔÀy霘û°22v†… Љ 7o|míµââš²²+ÝÝ=Bs'Š;ÀΩ%»ÔQ[{mÞ¼™IT¨f.Y«Õ¶¶ÞÉÍ=JŽP3/±ã»e1Í]TT —/_sww#–ÁË—¯ ࣰ€ò`v´ø€¾·nµ‘×ìx|jj)6Ò03É÷º*ù.@ œ77'RŒFcuuCuuƒV«‰ˆx|É’¸å˧¼ðÂ?” Š ›SK:v©=¢¥¥Mü‰›CÅu³jæ%v|·@]ÝaÃ.\ D¸L.¡…j Cw·AÚ»€š`¥×î CÔ{ù]@Iz+ó‘ï,T…í»¹iÃÃÆ1bPyy½Z²áüjí¶½C'Q(((MI‰%Yª´ZÍ”)äϱl4·e(ögG‹ß¸¡ä‘~ä5;|žšZŠ4ä_LffФ«JçŠ8Oꇵtiü† ‹'L+)©Ñévmß~¬²òªÂAd­Ò±Kí>ê}ýº©ýYŠmTâuáà·ßÖöéã¾fÍ,Fãæævþ|¹˜“æ¶ åÁþìhñêêÆàà€ææÛ`&D}ݺ$òžšZJx—Š4i•€·w_77ÓEGù\Qç©sBý°**ꉇÑö\QÇ.µG)'(Ê{‚Àðá§MóÎ;‡•V•ZŠ´j̘¡>røð9uÝu&ìzþù„#GÊ.^”É1î\.WgæâÅfÏŽöóóQrËÙŠ©¥ÎûþŸJVŠŸ_?ooOY)®ÍO8lo}±vJÇì­  ›’Á{ë#ˆ(±Œ`D(¨f„PÍ?ØJÍÿ‹…'Úhû~äaÀVjÎy›rðö-ù—¥Â¾Ã y”‹ ò¨{øc+lÌ„3%àæž^°shµº®‚»;ôóWÿ£ÂaÞtèê‚yÓöŠžÏF†Yóaz"xyÓ›`oßñ8¬H‡¯‚FÛCƒ>ü'l4ZèãR5 „+Ô©ùõ Ÿ~ Üj­`ã[0p@Y)¬ÿ=䀽‡aLð:&þJŠàà>ØüDŽƒŸÏ‡øððP×ãá#à¿×Þ]°AÛþð¿„‚Bà·ZÔU…p†:5ù?8Rt7 ø‘{AÞWëà÷ÿ 7¯ƒ›\2_ ÕÂøX ==püKÈZ/½§Î«ëñÏ~0k.l|åî‘§â!c-ÌI‚i‰êªB8à QGk Þ1àND–)ÜÝ_ƒ{áÔIx*fÏï}ûð·mPRù»`×vÈÝm… EÝ·­3á­wýŸuým°ûƒû%=úÂ;¦§¯ÿ=̈ƒýù0s:Yo„§T÷ø³÷AÌ„»Gê¯@ÌøÃ+ð%ò¡nm^¿þø ü| ¸»ƒ—7|¸´ZøÃ+°l ð‡§§Ý¿ñËç`î4ðö~àê9.2²ÀË‹Õuûþ¤ŸAþ]'\©…_<F#l¹û‡5pû6zàtªFƒð†öÖï CùGwqJR2à}]„\L͸0# \LÍÂÕŒðî­ðî­ðƒÌ•FBÂ"ûôƒc^|qš£»À ²3)¿6c¦ˆÞ ˜Þq{‰’íð[ ¨f„PÍ? š~@5#üà{„fg¯ºzõ†V«íîîùàƒã&i`Øû"Ïž-ͳô0š˜8V«Õ¸¹¹UVÖïÜùµ’~)ܲÖ>¸€šÁÚ)Þ¸ÇEsØõ×P3ÁZ)Þ¸Ç\;åÉæ¨yÙØ¹ÒœWR³µR¼q¹vÊ“ÍQó²ÉæJs8®¡fû¤xãåÉæ¨yÙds¥9×P³uS¼q¹vj’ÍQ° Wšáü5k÷˜Ëa§<Ù5/›l®4‡Ãù'MÍÆ=ærØ)O6GÍËFÍ•æTÈx¶e]²bz—Mq€ÈBf’-Wί4‡ T3¨f„PÍ? š~¿C‡é\­N£Q3ú­N£}À¬ñ?àu3¨f„PÍ? š~@5#ü€jFøÕŒðªáT3Âî7oJ’»#ˆkòPlƒ<$¸çååY½Ò¼¼¼Ý»wÛ¢f„l'¼nFøÕŒðªáT3¨f„þêä%ömÚtIMEÕ \¿iIEND®B`‚jpilot-1.8.2/docs/jpilot-toplogo.jpg0000664000175000017500000002124212320101153014347 00000000000000ÿØÿàJFIFHHÿþCreated with The GIMPÿÛCÿÛCÿÀDÊ"ÿÄ ÿÄO  !W$1Ö3AS•–—Ô"#4QaqÕ %CTc‘“ð&DRXsƒ˜¡¶ÃÄÑ×áÿÄ ÿÄ? !aA #1FQWXbfg‘¡¨$B"'(2DRr±ðÿÚ ?ìM4Ó§M4ÓN4ÓM:tÓM4éÓ^­¶ëî¶Ë-ºûﺖÙe´­×]uÕám¶ÛJV·]ukJR”¥kZ×…)Ç^u7s¹ðñl¦vsÒgKm@ «z58´ëu‡!r¨]rã²µ£JUí{)i. ­VK>p²bîSäõ8Ú®¦+T7¶n{m°õÍE¬` Úm›‚F= 6Î$½E%Za5¦Ë²; WëôëÖ0ceTÚ¹WWeé0Bœi ˆ2Ý•±™ 5c(ÃÍäiƒPŠ>«LNnòœr~lÝ>$ÁLd;K¤m¨V”¹1j© ^’å§¼Jz’‘jVq¼VJ˱e¹G»MYk¦JfAʉ‰1ùü°×‘`¯î¶ÅieV¢–©Z³Æª³«ƒ}É«}ãUÖYq´B½AÑm³PŠ}l¿'I •M |x2ŸOæáãÙÖ/‚·¡OEÙìý–oàîßæ÷w_ýkæ©À´»`¡yâg~¾äg1Ët}£dãÞÖ±,ˆƒ­ZÍ&Õ¾9âp=ÖëzêòEõš€K c ¾Ý6ÎJ鯯¦<ùcnêÛlnv—¹¦k7_W‚Ƕb½j±:øÎ1—‹,ÄÓË't¥oÓ¹ËCƃ§×N· è9‘ «ÙðøÕJž,wÄzµ9bU|=™ËôÄç†cBü AKkE#OŽ¢ŽŠõ9•’ŽMnš5•×êYÖrB­ÝKzÆW«NÛgÞ‘¤öñ”dØÂo¶Iˆ&2g¡œ%3§+¦èh rÆdi1Ùß=O*`®&YJÔ°«u ÝdM—o~ýån;à¨V×òãI$,Ÿ_¢²€ä*ãÜv¼™žO‘ŸQø2Çâôy—"Ë&ÛiR…j”qa„eónàßú¾¯s³;Ä”º2ZåS–ïmZ^Á¼h·õë×®álšÎËOpFÃ噃Ø-âS¦©Þm;«}²ÊÊM”b¶±¦µL¹9! BIÙ.ÂÐq,ÊX£åÄ{Çû{|Û¯HÏv Ú#—¢dµHkÕdtOÑOÃ'Ju X†[×pAé4ëZ,QñWD…­—#VªQ[TFv º%9b«j┕„ëK’]>µÉÖô¯¥kmöÚªj%ZÒ¾ '}—RÛíºÛt™öË {–ãxgf€É¢ñ‰$œÙ Pê·š˜áú4Xº¯O v'àsâ$éÒI1ä.&™ú)©)³íÒËšÞ–ÄY‘2‘·xw.²¢S¿)JP¥íBµ@{em«þFë[å€[mizD&;¢:IÅþ%C\Cx£Ú¶Í÷ˆM[þ"ÚuG•{þ xKMwb½×é7«; }x-É\tì蘵²‘–&ó©Ñ=]oac² Hšs[4OeÉSÜ'\…ä „“·¥Á‡«lV#EVÙ­ZœËQh)3……ŸSåï³b@‘ˆ¥¶Ý5ö— ¢i¨:É”ŠÖÚ¸æ!}× X‹¦š¢’5/I5*Šé]EÓRú[UU:Õ$î¶î·Ít%FÕ}UžE€8“«…´ÛT£:Í*ÀâeÙ\â”Ä`SBQÊP çÂYŒ±ž± ÂCœ¡8Ê„¥ ÂXÌeG9Ä£(ç¶q(çÆqœc8Î3ŒôÓM5Q×禚i§Nši¦:i¦štëR9tû΄d™4bÇNѶ¢CI¹ÁÕ‰âóÕ탼ôKPYpcöá9®Pµ§,+ÊW5Ö2ï©¿?,±WÕÙ¿:™ùê%bÓúÍqN7·1A¥7|²Í.ŠÄçgºY¤äÑÛg0F¤à;ÑâÚë2Æ¥]èômlRôÆ´í70]e—ݶ<Òn³¯u—¼`ZÞŸÅqK7­N?¯õxëš[VËãG‰çQ¨Wøy77VVTW Ÿ&ÓsFý7vÌW¦º&¹ØéÖÜ‚ÝÁb`Í»4EEfé™5NY­Oœ¸*èVì:É÷}póh„%A5ááT°yzÐsy¨(L0ž3ƒJ°&=#ÂaŒ\ï©¿?,±WÕÙ¿:wÔߟ–X«êìßeÜ¡—¦ø™¤'‰^Ûsˆ!¸œ°B/}˜ÍÄeFÛ/]+”ŠäIB–¨5¤‰uÉ”5·[möV´¥.¶µÁ]÷’ò2ýÕ÷Ýb©óŸŒ×äÜðvL–½¿€}f9ûoMÄ\øe]ÂÎ&ç"¥‹$žQ¸@Á†H» 4<Ã,%ŸbÑñè2<’n#êÕq¬ùñ1ú³ž#(ú‚$;ã?óÂQÇ/|Ö;êoÏË,UõvGïÎõ7çå–*ú»#÷çT~ûÉy ™~‹jûî÷’ò2ýÕ÷ÝV}øül~¦ÿÜ>Íôþ$ýsü¾½y|«ŽIwgä±?g÷ëŸéùýëõ7çå–*ú»#÷çNú›óòË}]‘ûóª?}ä¼…Ì¿Eµ}÷NûÉy ™~‹jûîŸ~?©¿÷³}?‰?\ÿ/¯O•qÏé.ãìü–'ìþïýsý??¾I‚î÷x/r1[çÑ\iŠÞ·¹¼7°¼¢ëe,KQE­Ræ.ó•!Qiz‹†¢CYë 'ru­ºŽ9w ô˜çç>º–ÝêÍè­þhÞ?æ¨ÿä•òs†{8ë&·æÅókÃ;Z0ÙT%1/p¢ ÊÓs=V¥Ð¤’e¸ ùWäöë%§EKE¶äl¶åÌRÅ.ªÉúŸ‡Äÿoø®©æ ƒ]¿¤ÜywT†ƒÈRÖ߯OS–ÛoºSª;öGy•­n/nðö Ѥ[,Ö6|*(¬hăb¼§@¥…y’£³5ÕTܰ:ÃJn ‚"„ׂÊN#HŒÏE D¥‘¼±ŒãC€V|ÅßÝÓO€V|ÅßÝÓSàU½mØÙÕëõ:=¼ØÿÛ®,wWÓ©º¶Íä\(„+‰1Äýò Í}†7ÈLš7ÄLk!ÞbðR´u™!”_-.7耋a Üòd߯|—³rÓö•úsj0je¢Ëómù. ú„À‚ã‰É“xž#Œ#ŽcøRCÆseµ×R§Hè¥1/(±y¥.ÑÄ¥,ãÍŽÑŒ{ç9Ç~ÞÝa¾Ÿfz³o Kz¦Úaäp¯ô™G2¥ÿgš”ÿÁ<Ùn5àÚÙbm»c:·­DëÛvjeyêèÖž7T‚”´¯6M©Òµ­)á zf2ú;Ê›Dβݻ+ìGÌ`ëÕDšÝʹÉ'p„VêQB’vº6µ(¡`ÐB®¥;JÓSCø0c†¾îóšç'zㇷÞf¨õ¸§U)“àI$ª©Ó…VåÕZÕém=_ãÃ&ñA_ø:ä9ß Ùah#¶Q Šv-M¡µZ‘%™-¸u§^¹óê 4˜¥ûÕÇ$öúÁ­‘Ç0g9Ëì(FjÊp!1ÿ`âLO8ÿW“Ëæ~øíZtá¨û¬w3¾Çd­&Šª3{[ä™cjÓÄŽ\þ3¯‰ŸÏã¬;™"bÊFcÊ‘äTjµ˜;kå¶ñLÆ÷õ}UUUJœ= Ôr·5á͇ÉÒ”ðãY¢ä&)u®T¨ûšD‹uÿCz‹|R¾ÏhK7õpÕæ´T6P¶Ùs|•·Ÿµ:|_¥SµI_÷ý3òk‡Üe¿^k|›žI‘–]Ô¦|2”*㵕×éítH"\ÌdÖãÇwZý®³ ?[(;¬4¼±#•ƒu9[T*íGÊsLSóO$,¿9LÍÂS—nvCd-ʇ|9~!Œ}cGÝÒn>)ˆ£‰Z!RZuAñ²RÒæY«Öä—µFûÛä,©Ú¤ÕÄ›PVËÔ§2— ©EÒêXýõ7çå–*ú»#÷ç_d’…°ùÌòKxÛ;F6®Ê§ºvc *Jö#BüïªÓöqÕ¾ò^Bæ_¢Ú¾û®–Tò7?ëzö½Uœ žWÐA\xU^Ï—ömFU1 µ’ÕáP=Ö¥H)D¢Ë-\DS‚¸CáÃz‚&s YÖêÅ}‚ì[……™d)5©£b2÷;·’Š©É@ŒË3!`Yâr6fLc1&:¬wÔߟ–X«êìß;êoÏË,UõvGïΨý÷’ò2ýÕ÷Ý;ï%ä.eú-«ïº«ûñøØýMÿ¸}›éüIúçù}z ùWþ’î>ÏÉb~Ïîÿ×?ÓóûÖ;êoÏË,UõvGïÎõ7çå–*ú»#÷çT~ûÉy ™~‹jûî÷’ò2ýÕ÷Ý>ü~6?Sîfú~¹þ_^Ÿ*ãŸÒ]ÇÙù,OÙýßúçú~zÇ}Mùùeо®ÈýùÓ¾¦üü²Å_Wd~üêíÆ›”~ÊO÷G"ûuÍŽv ¹v¢0pñí¢#ÛRRòd2¸ËrVX(ä•z—Km¶ÚÖêÒž4ÏÞ_ÿV\ÑôÖÿíú¶ãž|gM‡UWÁ•똂¶«æÍþÒ 4TÕ|k2Zýé‘™¤ê­|9eavlÃ0å/|Pñþa ç’­c2†M¯„^|b~LÊ•.|ÑÄñ(ç8üSŒ£þžù‹ÖoC~Š]m–cUu×_Ô§ô‹‡ýu­£‚ï—Ì2ìk{ rmYRM­]µT“Qu/±5)u/²ËÔ¾ûm­-ºû«JÝX†ßܦD—¶ÅP¯Ø{Þ¢*Ër\þiŒ zôrDYR™à°¸4‡$.c¹ÂßQÓv•*ÌÖŠwc}é ’Û;ÑŸA›ÛO=¹¸Ñ ñ91dí@PÅN¤_TÇ A +uÕµ+-¶·V´ãY9N*ñEÏu—;Íþ×á&г’z÷ržÑµl›à™I¾Þ©-gìÓp¦Þ?‘T¶BðÔµ|xs-®F á_\¥:‚v+j=^ !o1m¿Ñû>_ìÿŸË­dn70mî&Áù_dìU$2’]„äHä¡ðÈ›ÊHÕÐôšÀ~0êŽ-®CsCÜxýá¨çÓí¹lñµÝ«aŒé¶|¾ý¤OÍžá$îÕ#‰Ëñ®@—&©CHب© n!¨ÆõÆ·•0ÊC8‡P²®Tã CÙ|*Uè(ï¼s©òoíÎûJí¯ÖÒ+–¡yE}®WS©ÌÈ•à%  dCù©ì+(ê=M}cIq[rñõ¹Ži®î¹ˆŠmCÊ®(èÉ5,Bj“8–0P䛽µnµªBÜö|b’ùoêùuÈH7@FRrÜ{öâ6†fh Þn\þs¶ÙœÑLtð‹ë›Õ_¤ñÈäž×«Ua"q¨×|,ˆ=Ä,. R‚3irm¤/w®] {hÀo™”ìë‹3VÕ0^LÉŒ ‹ˆÇ3‰vÕXr´‰á¾Gbg5­{&  Qm®T*‡&¶7P¨ð#)¢\ÂÝ–kßæïð†cÜnE•cÌFÙ—Úb¬Æµã–òj»FTÔàæs\CWwkj_˜£uv¥µ,"Ä­ÁÖ⿜åÂ×»N¿ê'‹úˆmWeóÆØ(í¯™ t¢èWڊ¹iŒea©Þˆ%„mrµ¥†!Is³Ð]€*Ù׳ÌÃÖ—V4ŒÎQžI0úeÌqÀ8¥Î<ÈpÎcwI/EOH¦ï7€µømp¨ÎÝ1>€ð+Û~EÅq¸ÃV…úUÒ>aÌ…ÎW›V–»I_8Ú„V†ˆ$­ru­Ûµè†è›³£ª7|žÊgyã-ÈÁÆ8‘!ÑÖ5V(”L§PÅuv©¦æþüäÞÑGz†ÐLÁÑŸœx†=;½Ý&ê3^ìÛ3æu—ä˜ö&c‹¶ÄcŽmpVÖ{H”Kdb–ür‘؃;©o µ²ž‘£G*òõRÚM& ”‰<éÜnâúC·å‚á9‚e‡0îÏöÛ»‚àL˜ñ8ë[“æ[ EÉ–Íž]Xž} ŠnM¬T &pDheõ^r¯%»E¼Ëqâwf¶Þ<*!°ñ¾½ p®©l›uý=~Åñ•ÓW^±¤Õ…„m,,o¬îlÒ·8j¨¯Ëƒ`ÍÑ[Ò=æºKm"ö ØÝ¾âÈ®R«ˆ›6B!EpŒ"$d?hÆ"Œ!êæQênàn¶·]ÕáÛYØßJÿ)Jøü¿/Ñú¿^¼ò7u­»«øÈpJÚ|¾Þ×Ƕÿ÷\ÎìÏz›ìßÆÎ±¶UfÉêc÷Í´ä¬ÖݺiÌ]®)™BÀôÈø¥E£ "DÆn[,Jhƒ8UÅyœÁš.Üñ8|IÕ¨{bAá°‚„ó3#fs”Ô‚ü(l“Îm¾ý´CýëÖÆYêÚ}Wxs¡åÎ*ño¹íÓâ©ïµàæ¨Ö×­äÓfÚuêÛY?ªÝ™Ë±êÇ x²éÙ(ÁGÐWµ±nLÐíœyNˆ¶”ámž0;¤b–¾½'N(ÂÒ¿"_æm|yÅ)k’xžcˆ÷¶;áíKæ û3sýͧ|=©|Á¿fn¹µsþ6Iç6ß~Ú!þõëó[)ì|t!LÍ.MTZ¶¡˜bÄÔOòµªB‹)Yr𯪌?ÓMaPÖ8“„!á÷îÊs”aãaªÌ§9fŒcñÌ¥,ÊYÄqˆã9Ì¥ŒcÎ}î¸Ù#Žùä.íy³Ÿ„ïÛòwÏoñÿ½ÿ7½ÙÌ8nw"SƒÍ¥-=ß2± ’gN9X Ž~ºÕƒJÛ k’¸G'Ò¼jB캴¬|=€ù5¿à¯sßüGR÷h—²Ÿ\e‘6bÙaÓWïHÅêxË ¬‰‰¤[›À—Ž;•¾–åÈr½µ"íGÒ C¶=¥jž Ô”ºÝž<ûœ|G¶êˆl{•¿Š½ÞÜ϶-1îRÓAq®ÔÉö#L†À#qe–EšØ,Ͱ"xaW"“\GŒYîHÚÇ¥XÆ…h¬Ö0Ö¬Ø]²æ™J™³­ §çÎ`¼¢9`°Ž Ά# v¬;¤¡ÂE='Hñtdk.b‰‰;ˆ/šHÈ¢´£¬ˆ¸›‚!¿05jhIøK vµŽµ’@kÔšÚi®„qŸé?«/¦è×RÙlIJ²bææÖÄ‹¬«÷vÍb%±µpI­,¼ .’‰¤Õý±þ.ј²ÖcˆfbÕ!‰Jxë ¼Jròœ½ó"¥”É6ši©ª.ši¦:i¦št馚iÓ¦ši§N±æZÆLÓ&تn%ÆEçqããî–¥[l,JŸÝ›U¾Ûíá‘ÂÁY‹­—òn U,¾¨ÒÚñŸ¾ ªn—v˜¦=ÑHêûˆ"Ÿo¹¬§Ÿe©lÎ<Ç”qw‡¥J+çë?­VÉÒŽ‹ZäæÎ|}…”f;™Ë{o“YíÏP£z+†îÚ(ÎJN„c¼Ù‹µçf&;UIú.æ=÷cCÃ*‚ÎQgh%‡E,5¼ÑÑpi% ®r Öɶ鴜­CY¶e*;Êkµ÷>0ß«Íĸã’kQr¾«c-d ¹mµç“}š¶’&ŽljO—ÇÍ*ë;+¹µ«²Wc£„›auËYyGƒÁXmÓF ¨ø¢G1RÀ ¦rƒ šçÌUy™ÃO;:Û¢ÛMǨîQÇØ­Š{†ðÔ!–s5Æíô4LŽd1…ž%)ÁÐøt‰ôyí ®%‹#k¥Þ?‰øÉó†kw¢û£ïs˜·{»ˆÜÄÙLûËAäg§FÆAžªS<Šc<·!GT)× ·h;‡s3©T´2Ãh¸Ç€™Ì¥(ÌfÑóüÓŽVÙúEâï8¹ùΣ‡Ïñ./d¤ÚOÁßÁuol%¼”VÁ vFƛӬ¬™–]ö‰]‚aæ|tËi¼6H¢«ö¦£#nwo¦øEüy£ÊxlõȯcËp…ð …kíäç‰.]åÏœmÉ¡åÞ8¹ ñÉ3¦ã=GuÕ“qîjií¿"hÛºäŠ.ì»eýÆÒܵår¥ýOBKÀ¨j¢Ì¡¡/I¼_WG[»YV m\^QÛvWvJôíÈb×íèË 2¢•«|ve:סñ™D§øé<Ðmc¢¤çiûy­x¯)mI‡(n­¶#eÈMƒ82™ŠÃtž:Iߘœšð ¹y­±w6òš= ]K‘ÔÞm˜ ‘9K¢?4Âw¯ºýÑm¬Ìe+‰îÿo{ƒÆò8vB•¾Až1ÞLÍtÒ*RÞS<&^Â.tÅ»ÓE þN< G“¯9@,,¾‰uùª­ˆØ¢Ë)bI#bŠ)zŠu,I;ßbXxÍæ+šógd:‡Í6ÊÆé6‘«®äÙëÚ®ÓªÔZÏwK4âÑh Ið-'„Xù¡;7vÃw`a¤ÒP+ 9€¨X°´¤Çy(HÉ©”‚Îa˜cד¬dÞ¨Ë)ù…åœ=õ¨tnÊ67Ñõ“¶ÝC2sË 3é©ùáÑú)Ž×ÈsxhPÑZÆx)$•е66Ž+¥"e<<éwz32Ñß‘ l;fþ…ͯf<šÍÃY—òPo¸›Jç’×ÉdáÎ8Ñ%â/#Åp•ÇgŽUµ‘ïÒm®O>™¹Þ±ÚˆÎóVLmW.o¿ÆÞÑÅø1¥Çr9ÑâëÛãÐf‘äO­·^ª²&„ŠÁl¡E»ŽÍS Àî«ÕÌÁ[Ξv}±9Ó^H³v;Îtiœî1q­²Q\`$ ¯í‰1U%¡ÖJßb„ aÂ,æÊܹNNB8É_‹NYoM< ø]ç¾g–ëÈ,)§«ðw(múÿ$ìô;=Q蹜/u¦1e®RjÔù"nj¼q)Ï+Ýíg«MCëíæ»Tù„ÕzŽäF¢P‹êüZÔ-6Ú¤K›´ˆ7uíG:õƒ‘Ì–²Øâò®¤Ìx»³g’ "Îmè÷ÛöÛðo’•«ŽxËNËälÔð©C8l•ÝB 1iãYÙ,„\"ïHêSƒzÒ· S£Q«6º K'~šk²VOÉÖ —_&ž=5S•I5Ç…TRT1€UI%†%T0€—X"ãB8ÄkW\ šõk–Édà‡$ŒÁçœæfa“O9™™dÒ!Ø,³æ)‰9çÞY馚j‹ªþši¦:i¦št馚iÓ¦ši§Nši¦:i¦št馚iÓ¦ši§N­I´’£nì…ŽÍâŽÖ[cŒvTÎë9Ýt¯Y½ÉªÃ©J*1N‹Œµ¶.:‰«e·ÓL¤èÏÛþ„Ì3F”g úÖßyÇñ~Ttn‹˜P –M 2×àäR^*¬…Õ¼Pä¢7§a &(c§D-A¦¥n'ÎloÃvËúí ó‹:s–©lq ¶«?¨‹˜Çlvø€·lvü]Eܪš×ËoW²8—ÁZDÅŠƒ&Ê»ˆá•ýýÿX{ûþ>¹ìxÞ¾ìØÝ™CÏùQZ]œFTçQÍ1DB%d’P¢ˆõ "äÿUTã×ÿFšÛ–Ķ’Í¿‹„³rY¿rÆiqº žP±k‡1krŠ[Q,8•¼Õ.¥Yܚ˥lG‰u¥œ.i­—¾áNÑjÙtž$ã-;cý`_꺫¯]„݆OTVµI¼2ùå)ú©’•ï‹ðÁ0 ÿ’¹°ÃÇa Í]Ä @ cÃ02§—°dKãN]ÿ`!y%(õÀ©¬2×b¢ç“òk7þù£Ñh þI‚L¸’B„åȬÝ]ªjè¸Ãªä âJLÀv§—Ia‚¿½ð"Tjcaü’*Ä`3n=?‚Ëïο"FìŽ ŽšÌAÄ=APzÉÃRì_Z£ äK6iwó¶íŽÂ[E ‚ª#üçÎY» AÀv…††ØZÐÙ¼ùåìY[ãA°±Ñ³ Ú¡“S¥MµGT·h¤Ûo|W¶ÐöG£‹•—g‘Å£œœ*å70=««s;¯=õÉ'I3g&Z»Ft‹FJ±ýÆwe m`4b¬Z»8›Š F}òI’ü¥kwúb¤ºú¬µ›`\·h¤Ûo|W¶ÐÖFcåÊ'¬øÿnJÉA4’J˦®««Ï9²ÓÚ™è”bûïÊÚÂhÄÆÆØÂ=Á•+ŸX¹r•—gíٳٖÏìA|p®ÔÌŠWdl|P!tVŒDÝú±Q‚Ý?õïï¹iÓ’‘#ƒ¸57.¶dÕ¸¼_ZÚªÎmDG ¬®.;|øã6îß¿>;{—Ì–D—Úlví ¥¥­:xpÓ¡C›þøòåÓòóÛ&UZcê.·n•óMREÅ9ÑW÷îMV¸Òüˆýï›o’Øá6&¿¼´´UÿÇý33ó³´´Õ)P9~$7n`NÎ¥ÈȦ¢Õšó–7z%xõêÙC‡6<øÑÏ?oÈËÛkFù3‡{·}›(×í,ýÕˆO»»û1 S[{MfË¢¢Cƒ="\ž8q‰Å[Ió2µ´4œ<ù¥FCþþ#•´ÓF”•åúø .+Ëõõ 5»†Ñk4ÿÉ#&ævaïÞdnYl3¥ão”^ßÖÐPãìÜ«±±¶µµ¹Ëf¸ç¾Ðj5Ák×~µlYœ³s††fþf¯¿>ÃÝݵ­MßÜܲmÛá²²*"Ú¸qqzzî!ýÒÓs-š¼kWfDD««Ó—_óóëÞßÍÍiûö#¹¹—‰(&&lòä¡ Ã´µé““SÉØ•`EÅùââc‘‘Ï9883 séÒI†a,4,Ü»µß&jNŸN½s§ÙÞ¾ÇÈ‘ñNNÑ;-ùùßUW—i4Z­ÖnüøFsüø§·´Zða÷ìéÃ/§¹¹>;{wSS­F£ ŸÙ«W?£U·´48:ö$"FóÐC¾Rå<ø‘^߯]&pË11¯¤¥­züñwˆ(-mÕÀ\»v¾¥¥aذé>>ƒ‰èöíª¬¬ y{¼páèŒˉèÒ¥“%%™D­V;qâËÊÊÁÁyèÐi¹¹{Ø7¡p4øíŒ‰yEj@Οÿéúõ"5j®³³»Ô!]ÉjkkÍÊÚáé%ßf†aÊËó'N\|èÐæÖÖ&{{G"jh¨ÎÊú’aÈËk·¥èÊ´´UÁÁÑ••ÅD{x »#L³‡W¾ËÂñ—ßXŠ¿ÿÈÒÒÓƒO*-=íï?âÖ­«ìzу•–¶jÈØòòs--·ÃÂ~UWwíÚµ‚––ÛC‡N÷ñdR¸HæwåJÕ­[ ¹¹%£Gü?ãÇ'¬=XÜI¥ÑhµZÝÝÕÆ¯w °W‚Ayy¥›7ïcWÆÅŒ˜–vŠÛÌÉÉ¡¦¦ˆ&L0󮇇[aaÅÕ«ÕùËü»UË] º¹ùÔÔ\íÝ»¿ÂòÅÞeâ§{oQ¯o“¿<ìà Ó9W‚½{”—çÑÕ«yìJ_ß!EE‡Ùeîckkûðòå,a9ÞÞ!—.µ¯¯©¹¢¤ê7Ú/òëê®±7¥ÊÑjíÚÚZ…ËòÜÝýÙoE+*ò¹• 5½{÷ ›RSsUI!œ––†³g¿çnšˆŽ¿mRrw´Ïrgžè!]IDC‡þJ§³ÏÍ5þ»‡òò|/¯ØØ7bcûûàà¨+Wr‰¨wïþ\¸EWò‰vG8˜f¯L—Yã/¿±Œ^½úÍœ™èîîg´wl0‰"#ñ?Øfe|G¼sçñ¥Kg¾ývœ«k½ÞäPKD NzçÙo¾ùdJJÆÝªå® ˆÎÏÿ¡¥¥ˆ†))9ÁÆ,å]=sœ{ÕÔ”Qy¹ÈéÄ›tä„!³¯¹k.oïðð'‡ ›~útjqq†]‘#ãØ—†žŸÿÝÏ?oÐju:}tô"F:õرÿ88¸x{^† öø™3{ب׷9;»GFþÚhK.]:‘—÷­V«Óju#F<%SN`à˜6ÚÙ9ÄļÂ_–/èÐé§Ní¸x1ÃÓ3X§k®ìì¯Z[›ˆ˜°°© GìàÁ4F£íß÷Õ¤èhðÛ&5 U‡m"¢Q£æÞí²È!]y÷¥¹¹ßäæî —;¿¯\É Ãý³oß¡§N¥ 3t诲²v\¼xÜÓ3k¹èÊû+éŽp0Í^^â]™ñ1ƒg¯Im`¯×­û†¿òÒ¥ÊwÞù‚ˆ~ó›Ù5GŽüräÈ/ìòîÝ'ÙîUƒåW_Ý"\þÛß¾T-÷÷Ò×wH[[ëñãŸ0 £×·yz³G_y×DÏœ°°©§N¥888ûø žNü·IGN³ÃJ°¿í(/?W\|Tø È€-Á8î vºnÑH)¶ßxÜ´®òž ®@ÕŒ\ ÚÚtªbS—œîÞx#¶£ßÛæakyÀb>À‹#T‚ ¨‚ ¨‚ ¨‚ ¨‚ ¨‚ ¨‚ ¨‚ ¨šù©´”ü ‘ˆúôev–Ö¡|‚{öl–ß`ݺ°'làÓÑÃŒ´×^û§ÌŽcdž¬XÏþÙEÏcoܸ¸k*b-[¦tÚŠ Œdí7ôi#Þ~;nùòøN/ÙTòã0s¦E>+X¨XëS°‹d–Öh4‰‰‰D½¥6xøá€)SÂÿñ´ºº&77Ç×^›ÑÔÔš“sÉ1ƒV«Õëõ/gÍšÔŽb¶éÓGüá[•Ì7ÖYý•"?Ó§øæE·VL"_¬Ù]îôcjéÁ£:?²óB­\¹òõ××Km3mÚÃ;v««k"¢ºº¦/¿<:kÖX6nܸ8==7,̈ٴißµDÔ³§óÂ…¸»»´µ1Ÿ~z¨¤ä:»eZZVxx ««ã_1ˆ¡¯¿>ÃÝݵ­MßÜܲmÛá²²*£¯²UÒ/==gѢɻveFD¹º:}ùå1?¿ÞááýÝÜœ¶o?’›{o騨áÎÎ{ödMš4ô‰'F/]ºU§Ó®Yóì[o}¦×37.fgömª—WÏ—_~ŒH“Ÿ_Æèéé¶hÑd''ûÆÆ–-[öß¼Y/_ELLØäÉC†ikÓ''ß{®XïèèðöÛq«W§ˆkÐß'.ƒƒ"ºRª"©qX±"^§Ó­XOD«W§lܸX~Øž ÅrÃÂïòùóå¢EÉ7ÀŒc*Õf®%NN=D"tN‚l”Ÿ)™ˆüü<.^¼ÎýóâÅë~~÷.+*jRSGGž7/úÿ#¢ùóÇïÛw&?¿Ìßßã…MNn?­«ªê׬I0ÀgáÂG ‚àÖ­jjnQ@€×‚1k×îRòêµk·RSÑ¢E“ëë›×®Ýè½téÌm۳ˋMâÁ‚‚ò¹s£ˆ² êsãÆ­~ýz;::\¾\)¼þ6uÞ¼èŸ~:{äÈùèèÁZmûŒ‚óçOÈÈ(8xðÜ„ CæÏŸð¯}'_E|üØåË·×Õ5¹¸Ü7ç÷êÕ)6$pïa±ý5:2ƒ"q¤Ä+’ƒv‘ü°+<„År¸.¿üòÑ¢”w©x›¹–üóŸ E"tN‚+W®dÿÏ.€F:ULD'O^xæ™(vMhh?oïžññ‘Däì|ïDa¯_Š‹¯¹»»âááš0ÉÕÕI¯×ûøôRø*ZëÌÌB"ºtéºîĉ"v¹wïû**+»éëû½½ÎÛ»×þýyöurr((™ZØÔ>ü#[é‚ï®ôeWž8Q4gÎ8£Uäç_Y°à‘ÌÌ¢œœ™!+ì¯üÈŠèJ©ŠdÆÁ€ü°›q&àº,U”’ã.U©è1•ªˆk‰ÂƒÒ A0))‰[HLT4ù@YÙÍ  ï‚‚röŸAAÞW h4ôþû{ššZ Ö·¶¶Ãp¦ï„„Éÿþ÷O……=zØýã ¾ÚÜÜ*,\¯×ß¹£­ˆa˜’’Ñу+*ª ®ÆÅE:;;¤¦f » ÖT¹¿ÜŸù*6oN ñŠ•Jv,*ªàzÊ[Y>jT3   Âhn……))ž²u‰+Jjd„Et¥òŠ8wî´98(ýc¬üL0Z¬'•Q¢ÇÔhE "XHçÜd? kŒþ¾+;»ÄÑÑþ÷¿ŸIÄiÒÓs²³K¸W½¼z._G¤Ù´)]³mÛáçž›˜˜8[§ÓUVÖ®_ÿ­Ñ*vî<¾té̺º¦¼¼ËÂ;tò¯š¤  |öìqìçÓ«W«kjn+,ð‹/Ž.Y2eòäaçÏ_åvùüó£ “{lxccë–-ûV±pá$gg­V“’’!S—h±¢¤FFxPDW*¯ˆóóÏùï¼3»¹¹Uôžåg‚ÑbÍ8©Œ=¦F+RxÁBŒO´$õkgvò=™;€¯¿¾>(h˜©?–æ¾}Û!zPp¤Àö±aª£-É“ù €íëP\·îÇÎj6Hô àHÁƒÁü اÏ(< ÝRi€ª!€ª!€ª!€ª!€ª!€ª!€ªa¢%P5L´ªf‰–6n\ÌͲô v° R”OµÃßRt2&åÓëØ2Lý d‰–èþ™,Dù >F·´î”I`9Ö™hIÈßßcÉ’)kÖ¤65µüþ÷;V‘Q(:C££ýܹQÁÁ>mmLkëwßÝÍ0 ?­Ó† ¯¾ºÅ`ªÑ¢XÂIy¦MäææÄM Ã•/5±‘Tä&2:›üRÓ!)œú8Ö™h‰ˆØ CD§O_üæ›S¥¥7ÊŸ?BYYe}}SFF!IÌP3þøšš†¤¤ C..=¤êÌ4$>ÙpK"ª«kX»ö+Ñù›¤&6’j˜ÔÄCFgó‘ß@j:$…SÿÇj- ?§§çþá3CB†%'ïd׈ÎP¸lÙ6¶’Û·›6Rj²Q2³öÈ̉#Ú0©‰‡ŒÎæ#¿ÔtH §þŽu&ZåèèЫ— »ÐÐÐBÒ3Ô1 £ÕjôzÆÎN+šå_yQ$;kÙsâüi0:›üRÓ!™:Xg¢%QÏ>;áС_RS3^|qÈDg¨Éξ8mÚöMÎ}&½y³.(È›ˆFÀ½ÿùSíÈOv£|®™9qDfÆÄCJ(Ÿ(JtêàXg¢%âݼ|ùæÖ­?Ò«—óÿþïO à 0ujø÷ßçˆÎP³}ûÑgž‰JLœÛÖ¦oi¹óÞ{»†Ù¹3#!!¶¾¾éÌ™KÜ7ü©vä'»Q>×Ìœ8¢ 3câ!%”O%:õpln¢%€Î‚‰–Œ°¹‰–º&ZUC*-P5AP5AP5AP5AP5s‚`\\äÌ™ìòœ9Q+WÎe—½W®œCDýû{nÚ´däÈ n6‹jbâìåËゃ½¹•¯¼2…Û†KùÉ¥5•Ú€ˆÆœ”471qΟþôÔ¼yѦ<«bü´¬ÍÀ*ŸóUyÙNoƒü–Êw±]™ƒ¶ƒãÓ]ÒåtSþŸ]Æœ XTTâË.û´´Üqqq$¢} +ˆhܸ99—"#ò÷Z½:%)igjjæ‚1ÜJOö™_)¢Œ9:<¼?mÚ´ïÆZº›óUØ n¯èèÁ2ÅÞ¸qK£ÑlÞ¼ˆúôqé¥Éüg¨EóÈ óÎʤ­ÕrКšIWyu|ÂÃ*?¤¢MU^µèy(Z#ÿDºxñºè2xGÈš­1'644ß¼Yïïïéèhñâõ *siÀß/¾8æwåJÕ­[ ¹¹%£G1RXX1p oöEEÅÅ×f̈ðõíÕÚz§ªª>.n,›43óÂÓOá‚àŠñNN=äòÞ{»¸r†RS3ãã#óòJE+Ý€‹ââÆêïêêø§?}FbEEÓ©Z4+Ÿ0Ë逾ì5שSÅ/¼c°½T¶Ô“'/p˧N³kžy&J¾vn/ùbõz}FFaTÔ Ÿ~:¼jÕ~!¢yd…ý2)m-u«´¦fÒU^Ÿð°Ê©hS•W-zJÕÈHRHHfÐl™A°¨¨|Ô¨vG44´ØÛëBCý +íÃÃBB|Ÿ|r õêåìééVYYGwSIÇÆ›>=â£~àŠ:{¶tÚ´‡Ç(U—pƒÒÒÊ  Ÿ‚‚«D”šš™šš)scX4ªE¸òÉäg½¬”Ê–ÚÜÜj´aBÜ^F‹=tè—×^›~ëVÃ/¿\a„#šGVØ/“ÒÖeS9hMͤkJurŒ ©HSͨš?ÔR5 O?þ^¢ïÑAã>5+ùg—1óN'{%Ø«—3{c®¤äFlì°¢¢òˆˆ ¼¼Ò·ÞÚ¶lÙ¶e˶íÛ—kðõÈ?æ¹»»|בšzü‰'FIž¤¥~æ™hoïö{‹öö:™¦Š¦SµhWy.\c¿7ˆ¾ª$[*—$•ýŠOªF‹­®®¯¬¬‹4ø,L²ydùäÓÖ u£´¦fÒU^Ÿð°Ê©hS•W-z=ˆ¢Hô¡ð´±f^ ÖÔÜnjjåîî]¸PZXX1oÞøÎr›ee'$Ħ¥âïûý÷9³fåÿE-)¹qñâuÑ  ºÁ¹se))Ï?ÿ¨‹‹Ck«¾µõÎÎí)N…÷…éT-ÀU~è¾øâè’%±±±ÃλÒÒÒfðª’l©^^=—/#¢M›ö¼$Õ %ÅfdxyºpÁ0ôÈä‘å“O[+ÔrКšIWyu|ÂÃ*?¤¢M5±§†ç¡Ñƒ(z€Dߢƒfðö”ÿg—1?©*˜M§Ó¶µé#"‚¦L ÷ÝÝÖnN»¹s£nÞ¬ûñÇ»Þ6ss*WyÞzƒ*ÊÉNG«Þ£ð‘DD·ëiM"eg‘NGŽN´ýkbÿ^|¼¾O£›•´"™&O%"*»Lü-Õד›}°úúÝ+yëÇT[K¿[JŸþ›Ö¿OÇÏÒ;4i,8I:xi ó©ü*ÙÙ‘‹+­ü+ ¥§£ÖVzê1"¢ÝûDØcæ©IDATZûÏ÷Èщ^þQú·ôÍ.úç&ñN…ùÓ‹/ӱÔðÒÙQS#étdgGWJéL½¹ü^Ë *å“ß‘ˆ.—ÐëKˆahü#Æßhï¤Áî1Œ×¶À"AP>¯ª’¼¡F“h²üü<.]º!l€mææTnÕÛ´p Mx„Î¥?ÿžv¥·¯ôö¡o~"†nÕwÅìáI;÷Òé“ô§×ÛÃVÒ2š5‡æ- Û(imú¿{%‰¢µ‰DK)óQÁ/T_GC‡·G@ÑÒÖ¬#_"¢¼ZþGÚ‘F»÷ÑðÀ{‘HØÚ'âèµ%íApO*=5[²SD4 =fõèAo¼B %½G_Kxë¾11¨”/é¯r;Qò znÅÏ£”/¨ModðöN¦/üÝ?Xi¤"° ‚ãÆ Í«ÊR’7ÔhMy¶™›S¹£‡èÒEz5Qí­ö•û¿§ý™íùàºW9=>‹ˆhÄ(ª¸Ú¾&+“Öm$"š9«ý"gH_ æf*¹@Ï¿D™Ç¨®–ÆFÉ•vµŒþø[ª¾I:]¼@BÂÖ‡ƒ=?GýüèÔIúà¿%;ED3žl_xìWôدˆˆrOÃPsýf!C —Päx¹á2ºãÉãí2ãIZñ¦\QJz'ÓèŽ:?ÊäUe)Éj4‰&«¬¬* À«¨H2ñœMåæTŽa賯ÈÕMÑÆ=zi4bYZ#¦ÕRøÃ”º ¤±Qô·¿Pí-úãÛr¥-}•Þ[O£#©±F QÚÚ™OÓžT ¡Iµßž“ꔳ‹ášu¥ä¿Ñ³³hûbôôì,úù¤á6ìÇU¿þ´áïØ‘Å¢Í6éëü/FŒæU5/夨ôôœ9sƹ¹9‘V«yôÑ0ö³§mææTnâ$ÚþIûrîéö…)Óéã í±éVÜî£#éû4"¢½»iŒ ú˜(Úô!¦þt¹„Š )t˜\iuµäíCDôåg÷V:ô ÆF¹ÖÎ|šö~M»wÒqr› ý°—†S?jj"­–4Ú{ñ+ݽvï»/Êì8j,}Lj²ŒF{'ßþî`û:ÿJ02r|^UóRNŠ:}ºÄÞÞîõ×gh4N÷Ë/eìL7¶™›S¹•kéÿG3'Sk ùÐÿ|FD´<™þò=þ(ÙÙ‘“3}¾›¤¾H_‘Loþ–þ½™\]éƒ †¯Ž¢wWQd4QÈ`òés¨?½CÏϦÞôH,éîÖøì ôd,9;Óî}â­õö!ÿ*¹p/ ‹nfàN+mÙØþÒÿ[AÏŵ7@X©I;¾½š^_LŸüEŽ¿×F{'ßv÷_M5^Ø$Uµ lêG<;laþ”/>ÍW‡|°r3Þ>V§$©*žUCUCµ³ÄgaèF@ÕTÕ† '@×C´ëÖýhí&¨‚ MèÓg~K`¸'ªffŒŠ”œ;ôôÓcvíÊ俺zuʆ üðg >~ìòåÛëêš\\z_岫¾üò”}ûÎäç—ùû{¼ð£ÉÉíVTÔ¤¦Ža&dRàë.™øäÇD4}€m²TyȤÀ×]2)(gŘÊ" H6!“B7̤ 5&Âò z„L `ã,’@d3ð!“Bwɤ 5&Âò z„L `ã,•@A&2)(ÙÒF2)ˆŽ‰|íF`u–K  èQ-dRP²¥ÍdR£ãŒL `ã,•@A>™”li#™DÇD´|~Ilœ¥(Èg"à “‚’-m$“‚蘈–Ïï2)€ë~ 8Ȥò@Àˆnq׃ @Ç!€ªY*ÂÆ‹—/_¾<îÏ~züø!¢…¼öÚ á/‡MÊV „|²þ£þ–KëÀQ˜×@´UF³t¤/î½6C¸ÞÔr¸Ãgꎢ#£< „ÙI:Œf¯PRŽòvr¥‰îÒé'?(aÁ ÉÉ)ÉÉ©~ømTÔÀñã”äÝÔÔR]]o^ÒjµòÉøú›”ÖÁ¢D[e4+AGúR]]ßÐÐ<`€Áz³ÇÄꃩ°FGµs;bõa!K%PàÔ×7íØqì׿Ž9rä<ý¸qƒNŸ¾È.‹>™/úà½0á‚hNƒìW(„ ús¿¹ñôt[´h²““}ccË–-ûoÞ¬gwOKË tuu4H‚ Ú0þ/x6lHxõÕ-ìò“OŽïOD\Òƒ}E[%ÕT®ðŽ÷åÔ©‹ãÆ ºpá¿_JR]ˆ>™¥2>GFþdP˜¤CæÀ)É^¡dD/z×%ß è–J ÀWZZåëûÁÊAƒ|ÓÓsØeÑ'óE¼&\͉@÷'à*5H¸ L^p·Ì ž›0aÈüùþõ¯öÔ UUõkÖ¤ “ ˆ6LJee]rr*?éƒÁ¾¢­’jªÑ ”÷¥¤äúSO–*_¦ƒòÉ2„;JåtŽ ¯¦%¹0 uà”ç¹ùÆËSÞ °3?gg—¬^’œœR[ÛÈ%PxõÕiƒ÷UXBïÞn·n5°Ë!!}²²ÚS!p„†ö‹\±"~áÂG¹ÓŽM¸0zô€––;ìšððÀï¾Ë6ȉ`P‡K¸â+Ó¶ßÌÌ DtâDÑÀ÷¶”I‚ l˜a”ïkå}©©i&MàÈ4RôðÉìèááºtéÌÄÄ9Ï?Ó¯Ÿ·¥ÌÑ=äëåëHö ™Žð)<µ„”÷,Är îñ÷ï]QqK¶‘ǹD¼—O¸ÀÇO`6æþvÉ$A6Œa­V£×3vvZlÖåâ5LiáfôÅôFÊ='ÜQyn Ž©I. t${ÇÔäøuèYFè8K%Pฺ:ΙuàÀYƒõUUu=äÂ.‹>™/úà½0á‚hN)„ ¢É ŠŠÊG "¢1c¦f%lØÍ›uAAÞD4jÔþ[@Øá¾¢­â¯-¼ƒ}éÕËùæÍ:åäU!—lB¸£TN™tf$¹PHyž ùdÂÆK:¥Ð–J @D+VÄ3 ÓÖÆ:tÎà["*,¬ ôª¬¬%‰'óE¼&\͉ ÕfaÂÑäŸ~4!aÒc ollݲe¿’Ñ6lçÎŒ„„Øúú¦3g.ñ3ÜmmÚ´Oj_ÑVñWŠÞÁ¾z”+ï G>Ù„ØÈˆçtŽ ÇŒ$ )Ïs!ŸìCØx©À@§ô:Âj ‚ƒ}bc‡ü±áén9H¸ 綾&ïߟW\Œô÷ðà°é ÅÅלœŒÞ¨†®áîîâììˆ*ÔÑ/F:‚ý(Ýep(£ºúvg‡@Õ@Õ,˜@á•W¦pÿ}2\4‚<£IL…ŒRÑ€Ñ@,˜@Áßß“ý”(ó(}ÜÝBÑ ãÑl“(|ýõɸ¸È>Ø#Z?‚è#îÂ'ÿ w}¨žƒŒÈh€Œ „(dfN>|xÿ3g. _å'P ±GÜ…Oþ<î.úP= Ñ @ &P`JMÍ|úé±¢Nò(؃ëROþsDªç £!£2€–M pölé´i³_žÈ“yp]ê)8‰‡êÛ!£ò‘ÑÀ`C£EÁƒÄâ RS?ñÄh"ÃsŽŸ@A”è“ÿüÇÝEªç £!£2€L À*)¹qñâõˆˆ ƒõü ¢DŸüç?î.úP= Ñ @ %PèvÑ ƒ@¡CF€®¡¢ Ý 2t <; ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ª† ªfgt‹òò¬.h€U ‚o¼Û5í° Í’%›¬Ý«Á=AP5AP5AP5AP5#߇††tM;,á7bå¿þ5þ;ÁsçŠ:¯=]GÉÏœñqT AT AT AT ATÍø·ÃæÙ¸qñ•+UDL[sðà¹#G~±v‹D ‚%'§‘««ã+¯L!bŽ9oíB‹«¯oÚ±ãØ¯ÃAOO·E‹&;9Ù76¶lÙ²ÿæÍz"Ú¸qqZZVxx ««ã_ÉɹDD={:/\øˆ»»K[ó駇JJ®[¹'ð Â=Aè ¥¥U¾¾±ËóçOÈÈ(HJÚyôhÁüù¸mªªê׬IݲåÇÙ³ÇÝÝrü¾}g’’vnÝúósÏM´B»Ap%]-$Ä÷ã$¢'ŠæÌÇ­?qâ_swweׄ†öóöîIDÎÎ=¬ÑXxð!BWð÷ï]QqË`%ÃÜ÷ÏÖÖ6v¥FÓ¾F£¡÷ßßÓÔÔÒMµÂÇa°8WWÇ9s¢8Ëþ³¨¨|Ô¨ "3f@AA…ÌŽyye11¡ìr` ·¥Û ê„+A° +â†ikc:Ç}5üùçG&=öØðÆÆÖ-[öËì¾mÛáçž›˜˜8[§ÓUVÖ®_ÿm—´ÔÅÈ#¡¡!È"ÝTyyÖž=›å£>€ª!€ª!€ª!€ª!€ªÿ‰Œ’$ýÝ”‘ øÆ±]Ó«0ò;A€î €ª!€ª!€ª!€ª!€ª!€ª!€ª!€ª!€ªÙUWï³v¬FÃLù &v;vìèôBwìØñå—_Z¢dP'ËEÜUCUCUCUCUûÿ3^RŒ•õqñtIMEÕ !\êÜÌIEND®B`‚jpilot-1.8.2/docs/jpilot-dial.man0000664000175000017500000000231512320101153013570 00000000000000.TH JPILOT-DIAL 1 "November 22, 2005" .SH NAME jpilot-dial \- generates the DTMF tone signals used for telephone dialing .SH SYNOPSIS .B jpilot-dial .RI [ options ] " number" ... .SH DESCRIPTION .B jpilot-dial generates the DTMF tone signals used for telephone dialing and by default sends the signals to the sound card. It can be used for easy dialing, simply put the telephone microphone near the computer speaker and let the software dial for you. It is intended for dialing from within database programs that also store telephone numbers. .SH OPTIONS .TP .B \-\-tone\-time milliseconds, default 100 .TP .B \-\-silent\-time milliseconds, default 50 .TP .B \-\-sleep\-time milliseconds, default 500 .TP .B \-\-output\-dev default .I /dev/dsp .TP .B \-\-use\-audio default 1 .TP .B \-\-bufsize default 4096 .TP .B \-\-speed default 8000 .TP .B \-\-bits default 8 .TP .B \-\-lv left speaker volume .TP .B \-\-rv right speaker volume .TP .B \-\-table\-size default 256 .TP .B \-\-volume default 100 .TP .B \-\-left default 0 .TP .B \-\-right default 0 .SH SEE ALSO .BR jpilot (1) .br .SH AUTHOR This manual page was written by Ludovic Rousseau for the Debian GNU/Linux system (but may be used by others). jpilot-1.8.2/docs/jpilot-memo.png0000664000175000017500000006667412320101153013647 00000000000000‰PNG  IHDR;þ™š¬gAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœìÝ}|KWð_Ú‹¨à"ˆ‰ ²-,¬#£¬¬Ú¢&££¦6ïŠz˜—馣¦³›Îjªjº=f5EQÖMÑmå)b+‚"¶ŒÐlÂ.în›çÓÞEÞš¤­R¿ïçùì¹=÷ÜsϽšôwÏ=/‚Ý»wC¥½üòËURB!„Pµª² ¥ò¥Œ?¾JÊA!„ªVU´Œ?Þ§*êƒB!ôxÁ !„BÈcB!„By C(„B!a…B!ä1ÊaªÅbqqŒ@ ¨žÊ „ ä?éÞqx÷ð–"ôðsö9u–î8„BÕ.þ–[#ªäo¼‹Bøóò{íSœÕÓu8ò¢ €z|X,뻋F%|‘‡ÐãHP¬â7C‹Åâð;…|ïû½Ö§ Ûö)ÎòCEíâ!T%ìð\?é9m…röeŠßeÕJ5 Ùç·ùf°yŒsV ›ù=bß|å°AË&Ñýv&ëœöÛ.*ƒzøÙ<æñ‰3c+BÈgQ‚û­V^àOçé4ëæ+룜5hUÕU8lÉó´y!ô0°ùÀºøüb_(„Gî<`Áýñy8ó®YÅþØÊ”æ7OQBÈSB!TûÙ¿‰{ðƒ‹^ä.úBñ-ênVØ:2s³C(BYs¿[†PÕ~n‹ÃÎæå/k0dD=Šlžñ\?Åa_(„PlÆÐ9Ìã°÷€ý«:gíCÎòWž›cú¼85¶l!T˸h°wøywÚ …ß!‡Ýº½,ƒŠ&¦³)Ó&Åæ¼Ö1}|fß³ÊÙ‰*,ÍS{q¹ŸˆzÈ9üÂq˜Óq…ÞÕVî4#U8 Åa!.²yQ‚ëo!7ÃÜ©›;§sç,î'"„Nž~±`_(„jû†šªÉ£ï$BÈ5 ¡ªUð/}UÁ;‰r »“#„By C(„B!Q0~üø*)«ªÊA!„ªV´ „BÕÁŠ{kº!„B’Ù³C(8}ZWÓ5A!„z4ìNŽB!ä ¡B!„<†!B!„Ç0„B!„ò†P!„B«8„Z½zR|ü0ò¿Ž[Ï›7”O¯üégÏVwëÖžÿQ&kñþû#€?Kõ!×µ`Áðùó‡Êd-À«+zõD!„Glþ ¯Z5ÑýÌîsk™áÅ‹·ðÛ§OoõîL:t¶GùÑ£¿‘{ô:t–,©Ê³8C®«sç'ÇŒéóþû™^”ð`ê‰B¡‡Ç/ò샵Füf̸`AD\Ü0Òœã¾_~ùý©§žhРøøTªö$„âÏb_xHHçW^é}û>ûÉ'c (Ÿ¥KGùøx¹¬úéÓ†-9»F>tmÑ¢q\ܰ¸¸¡C†¼À'ò9W¯ž¤Vw7oè’%¯?÷\[’اO§… ‡/X‡U!„P s±¬^=ièÐäo}óæ–`Í­V¨øøadãƒ4ºŒùbnî‰S§ mÚ4;6(!a‹}gÌæ{'O^èÖ­ýO?îØQzåÊ “é¦ëÂÏž-~íµžGŸ~ºÕ•+×[·n*Ö½pÁTZjqÿ¼Öºuë`42f‹ŒìµoŸöàÁ3O; ×®]c—,ÙÚ¡CËqゎû† ë—qó¦™Äˆ!„z0øÐø¿ÚF,F#³uë¡^½ž‰ŒìõÙg9®Oáñ‹<{;¶nѢѰa=ÀÏÏãX¡ àÜÀÏÿôÓé=ž*(8WaáÃU‰¤q:¾-ZÐûöiŸzê‰úõëž={ÙÓó@|ü0–½ýå—?V˜¹CIjj.üòËocÇö±ÏpäÈyøí·?›4‘”S§.ýÒáúcÇô^T!„BÞ±]øwGF,¿üòh4çGŒèYá)Ü ¡\`Ù²fó]ï?uÊ0vìK­Z5Q*Ûdd¨°p‹Å¢×_éÕë£ñï³g/ÚÃϯîÖ­‡½8µ³ÐÐb±øøJK-å#Ø68Yœ´vÝ»WBöòG¤¦î‘Ë%={>Ó»wÇ+²½¨!B!„ªJ%#U0©VkèÓ§#Ùö´/”–ZŽ9?qbß³g‹oݺãNágÏèæLñ•+7š7oÔªU“‹M•¸[W¯Þl×®tëևΟÿóùçÛ@×®íÜ,§Y³†çηl)hÛV\…ÕC!„*ŒXºvm*U‡s猖V­P7æÕ{Á‚___“éÆÊ•ßyZBAÁ¹Î»výêfágÏGD—w—/ÿÍ0ÿxÝÊ¡ÌÌ‚‰CXÖ|âÄ|É›6œ<9$$Dyúô¥»wKÜ)gܸ¾~~u}|[¶TaõB!ä… #–æÍÅÅ ¬Y³§ÂÒ+Vì=}ZW=U­m|}}JJJ»vmׯ_—>Ú^ÓÕA!„P•Y½zÒÔ©kÝÉY\|tçÎÔŠ[¡Ö¬™lýã”)©^VÍ«é,îœÚ3¾õ–ºA¡@ééyÕU-„BUŽ}tQq¶B!„By€´Báy!„Bà !„BÈcB!„ByŒ€ââ£5] „B!„B!T« &O^SÓu@!„zÄ`_(„B!a…B!ä1 ¡B!„<†!B!„Ç0„B!„ò†P!„Bà !„BÈcB!„By C(„B!a…B!ä1 ¡B!„<†!B!„Ǩš®B=8ïÄZÿ¸s—±¦jR;Ìž²bÅÞš®Å£ïÕÃoöìɓ׸ŸC(„Ðcíôi]MWáQU\|”là=¬Þ«‡ÿoä¾ê¡Ž £Ñh4…B!MÓ‰D*•t«æó"„BU£j ¡6l˜m6›]fI#ÿ…áB!„9UB¥¥MµO‹Å4M3 c6›Y–½?@ZXX˜T:¤jk‚B!T}ª,„² ž”J¥\. …E …BŽãH:Ã0 à ½^Ï'æäääDE­öîÔ*×-^!0~ÒŒóçNÕt-BµD„Pw(==ÿ144T*•ŠÅb–eÉë<ò_¡Pêïï/—Ë ;;;11Ñd2ét:²7-mjxx¸X<À‹:ŒŸ4£ò‚B!ä¦Ê†PÍšÂÂB²íïï¯R©HðÄq‰œ”Je`` J¥âÛœ€ã8µZ-‰’’’¤R©N§3™L4Mgee)•º€€iÕ¡@#,ФVòBB›I °Õ«']ºt ÀRRbùé§Ó¹Îc(çÚ´·k×â÷ß«,ÖY¼x tê$=ºÏ¢E™UU,øøø”––VaÕÍûŠãññSdd¤L&cYÖd2™L¦Y³f©T*Š¢Hsø‰¢((((ÈÊÊÒëõf³Ùl6sÇqMӤኦiNGÓ_+oTÅ"„ÐC‡eÍ›7ÿï7úªQ#¿qã^jÒ¤AI‰eÆŸõúûþÚÙïæëë? /ÞâúðZfÀ€.›7ܼi€ÒRK^^Yç6±¸á„ Áõë×¹}ûîºuû®^e`õêI{öïÔI `Y³&÷Ê•þþ²îÝå©©¹ÐªU“¨¨`Ôb;vh†íññÇ;­ígBB:ûùÕݹóh߾ϾòŠjΜ/}}}–,y=6öëÒRêÙ³—ÅâFÎJ¡°Îk¯õlß¾eI‰åÞ=[,ÿL Eë={ŽéõW¦L œ:e¨þ{SYÞ‡P|ÿ§ÈÈH‰DBº4…‡‡GFF Œ¬#'Žã6lØ››KÂ&’( ƒ‚‚²³³IfoI¥Òüü| ¡BµØÅ‹×$’Æd{äÈssOœ:ehÓ¦ÙØ±A¤¥Šg¿wñâ-«VMäÿö»>¼–‘J›ýñÇûô‘# ÎþôÓéÀ@ÅÈ‘ÉÉ9$Ýhd¶n=Ô«×3‘‘½>û,çøñ ¯½ÖS$²¬¹woÅÏ?»z—Z;>|®ÿ.;?yâÄ>ÑþwæìÙâ×^ë pôé§[]¹r½uë¦BaÝ Lã'xþùö—.]sVId˜[‹m¶X Aƒz¤¥ÐÙ?ÓŸ^ߺõ¼ùfØþý'8Ó«×3>>‚j½3•çeÅ¿S«Õ‰Ä`0EGGCù{º²Ò)Šã8ƒÁ™™©Ñhhš¦(J*•šL¦€€€ððp‰DåÑ•H$"ùE"‘B¡ÈÌ|7"âÃJ_ B=ì:vlÝ¢E£aÃz€Ÿ_=öº“áq —KÖ®Ý GŽè†àÓùå7ÐhÎÑJKK Îõìùôþý'»vmÿþû›kªÂŒÅ[·6¬‡V{‘O´ÿ1®J$ëÔñmт޷OûÔSOÔ¯_÷ìÙËöÆÇ«_¿nãÆ –.ÍrVté"›7o#yÅúÏ?wH¢³&æ|y†V$ƒFs~ôèÞUz'ªž7!ËþH6¥R)é.‘H¬ƒ' (J§ÓåååQ%‰Äb±N§3›Í¤‹´TÀ¬Y³rrr†áišn“\>¢rˆB£6mš×ɶ@Ë–í4›ï:Ìéz¯;jƒáZÛ¶Íu:§‹VØ-ê矋fÌxýú­¢¢K·n=7íäÉ‹<ðŸbÿ;c±Xôú+½z=c4þ}öìå¡C{øùÕݺõ°}i¤ù3$D9p`×””–V!›¦;wîñ{Ü/¤ÆùxqLFFÙÉd‘‘‘ .´‰Ÿ(Š2 iiiYYY Ã…B¹\³páÂèèh“É´aÃ>'ùonn.EQäG£ÑHQMÓF#®Šª…D"áðá=üñ$ùQ«5ôéÓ‘lËd-l2;ÜËq%uëRî^ËìÙsløð€† …àã# êD^÷ètÅݺµ€^èpöì¿;ºvm*U‡sçÊÿþ›5™nÖãqx‹ÇÛºõÐ+¯¨Ê^9ü9{¶xà@ÿ3gН\¹Ñ¼y£V­š\¼hrVàÞ½Ú&M´k×ÂYi……¿à/4hPÖ4å쟉§Óù²J^òà}_(µZ- ÓÓÓÊÚâÌf3éü”’’²¬D"‰D‰$ @,“ÞåÙÙÙYYYAAAR©”tŠ"oúÈ[<ò_“É$‘HøA|µ é ­[7»té*”õÎx=°sÞ¼¡K–lu§}û#F¼X·®o:”NgLOÏóâDD• @íÞ]>`Àsdû‡Ž:äjIÎ Çu»^¡¾}Ÿ VÞ»Wb±ÀŽGŽû4¨7iRhãÆõæÖÚµ¹Îžb§NíÿÄM9Ž»}ûîÆùÃ5gÇ:L$#‡IQŸ|²ëŸî›?öÍ7ÃÚ´7l(œ:5Íu¢ë½®Ïâðò‰ÈÈ^}û*§LÁÉD<?Ìb±””X~þù4?oãÆüQ£z/Xáëëk2ÝX¹ò;ëCîÍË;õÞ{wîÜ[¼x‹ëÃk™_ÕשCÍœù²@ ðõõ-*2N6ß|spâľ¡¡oß¾·nÝ>>óæââ†Ö¬ÙÃ'œmÞ¼ÛùóÑSº^å÷ßÿêÚµùÑáïÌÙ³ÅäåÝåË3Ì?Î:Bß,<¼ûŠÙKËÈ88bDÏ ^+))½{—[ºt»ÅbqöÏÄÛ´éàäÉý‚ƒ•gÎ\v}ö‡`òä5À÷‚5jßgœïZ®Ñh233É;;'6¢¢¢ =====´T1 C‚'2.Ïd2’Žçµ¸_¹›1GµÎ±xñˆõë÷ÿöÛ_>>‚Ö­›¹xæ¨PåëùÜsmÕênd¸rÆÂ3^ÎÎ>jý—ÛÓ3zBYªõó«{ûö]‹Z´hþÖ[_Àˆ½nܸõÝw…ýû?׸±ßæÍÿsXN—.mµÚ ¥¥–gŸm°hÑfgÇ:Lt]ógŸ•^¸`JL|Ãúò&ºÞëú,/Ú·o¤|á…• OkŠÍ¼P;wOŸv¦#Š‹îÜ™ºbÅÞ‡ö:û íµžW¯ÞÜ»WûÀjòðß+Dþ< мl…  (ŠovJHHˆMKKÓh4b±Øßߟã8½^¯ÑhÔj5‰ŠøÑy,ËúûûDFF’y D"‘Z­Ž‰‰IJJZ¾|¹P(4›ÍF£Q*• À°ÆJr8ȳyóFö;gÎ|¹IQIIé;e ®èò_}út ~Öb±”””&$Ü×.%Õÿûï[PZjáã'ëï>LY½zÒ®]G»t‘‰DÂM›ȦJêÉ0à¹Í›ÿG†+ß¼iþöÛƒááÝɉìÇÇÆÅ µ×íð6ÀàÁª.]ž2¤œŒ¿µU{äHYÇF¾…‰¢|Yö6ÙV*Û$%í€Ã‡uo½¥vB?^ùétÅM›Š\ëfÖNžtð¹p˜èæ^‡^>Eù °fÍž^xšÙ²·`A„Ù|oûö#5]ôÈó,„’Jÿ$¤»7?7N§‹ŽŽ …"‘(**J&“™Í欬¬ÂÂB²® ”ÎËÎÎÎÉÉ1™Ld •JE^óq7kÖ¬´´4–e)ŠbF¡PÕnyFFö²Øùå—?2Ì?жmóÑ£û|øa–›t‡ ë—qó¦™!ÍÛ·ïD|ü°Ó§/:u± à\I‰«iÍ®]c—,ÙÚ¡CËqã‚HdSµõ”J›YÏÿöûïI¥MËï’íøX»qÝŽÇÊšL7¶òCšÁùp~T­¸¸aÍ›7üôÓÝäÇ&M óúõhº‹ÛEôë×åØ1½‹chy÷ÝðzõêþöÛŸÛ¶"a¥*z™ëà,6‡Ø\~XØóçnܸí]}z6AUílèqæYwr¾Mˆ4&‘¸ÈrÂR©4))I.—“ñw$rÊÍÍÕëõB¡0;;;::zÆ &“I&“EDD°,+—Ëù¹ HÉ …‚LeNæÞ$“›×nr¹äðáópäˆî©§$剭Ž-‹ËçlÖL4gŽzÁ‚ácÆôiݺX Ð¥(ß®]Û>|Îá)Nº4zôK*U‡»w9›];wMLÌ:wîr߾ώ亪¤yæ·ßþlÒDTõt¡KYNN¡ÍøXko#X i–ËË;vl=lXøøaãÆYǔ֗`-!aKJJîС=<­3¼ð‚\¥’ûmÅ K6Þ}÷›?ÌZ¼8Ódº9qb°§&\w†sx›C¬/¿U+ú©§ZåçŸöº>!TkxÖ ¥×ë@,“wm¤%‰t‡¢(Êh4FF“——Ç0ŒT*%yRRR€´<©¤ ###---""‚Ÿ8ŽKNNV*•ä­Çqb±˜aöÒtHÕ^öÃéþAžºÑMœ¼~ýþsçŒõêQIIãH¢;tSS÷Èå’ž=ŸéÝ»ãŠÙ6{ÿúëú_]?|ø|bâå5±øøJK-å#ü;¹Ù½{%¤žViUYOƒáj»v-Ξ-&?¶kׂôÂöH…Cš¿µUkëìÙËS§ö'Ûÿ}«I¿«WÙÆÆ6gTªƒwûä“l–5»8Öa"Ù())ÍÉ)8p\—ä-7ÏÂ_~»v-Ÿx‚þàƒ×ÀÇG°dÉë [nÝrÑ"„P­çY+™e€,Æd!a(ŸÌ‰¢¨˜˜˜ÌÌLP*• …" @*•Byó•T*%¯íHþY³f‘˜‰¼ 4›Íz½>00/™¤×zy:ØY¿~]†¹ùDwè6kÖðÜ9ã–-mÛÚöîïÔIJâ¡Ö­›ò¿¯^½I†ªvëÖAàrzØÊÔsÁ‚á6¥ýðÃñáÃ{’áÊ"‘pøð^{ö'»޵×íþf÷G€ó¯»tiËÏÃ{òäÅîÝåн»œŸªÎþZTªö¯¾úBRÒî¿ÿþ7Ìrx¬ÃD¡°ÙèÕëi~Ð\•s}ûË?xðÌÛoo˜7oã¼yKK-óæmÄø !ôØò,F!!¿ ¿dr2Sy=g} Á`HOO/,,ŒŒŒ$óp²,«R©hšÎÌÌœ>}:DFFæææÒ4-•JÉr1ÀOU‹9äép`gfæ¡9sÔ7ošÉP/¾„ èŽ××ϯ®`Ë–›]AA"#_,))¹w¯ôË/óÊOT0qbËšOœøÃõ°R¯ëéçWÏ××6‚/,Ô …ufÍRX{ö+,Ô“]ÇÇZë®hH3¬Y“KRÜ>|xϦMEWrãÆíõë÷“Ä;NžÒ½»üúõ[©©{]ËĉÁ7nÜþÏú@I‰…¼³?ÖYâôéaõêÕñó«k2Ý\·n¿Má}ôP”/Ù˜;÷kg‰|Ç&‡{ž…?Äáå×>ÅÅãb½U ï¡ûð^Õ&žMj•o2™är¹B¡ ÍNä›H$b&,,,**ŠŸÛ‰BÞß‘OYYYdRÍääd2§N§‹ŒŒT(EEEƒ¼ ,(( mQjµZ.—F‘è¥j¸öÚãÁÐõŽu=;w~²eËÆ¹¹'jºRU 6]K­g3©üégkª&¡‡P5Nj ‘HL&›H(òã¸qãÂÃÃIäd=SyLLŒÙlž5kV```xx8MÓ)))Ó§O'ïûÒÓÓišÖëõ ÃÄÆÆÆÄÄ€L&#Çòãþ<ªäãæQ kSÏ'.œ¨-!Gmº–ǧã!„ÏãJ«Õ²,KÍ‘ÞâEÉd2>~"#õHº^¯'R|÷©   ‚‚‚ÜÜÜððp~FMÐétdƒ,3LNÇ7qUí5×2ÊÝG¥ž!„;<ëNNFÒ™L&2¯&˜Íf–ecccù9¢D"ôäææEQ …‚/$66V(²,Kz”WxüªÃüádƒï´ŽB!ôð,„"«µpGššÈë<²É`2™ ùîPyyy T*ù^á$NR( Ã$%%‘× Ã÷z$OvvÙ¨{a¹*»\„B¡ªàÙ‹<–}†lNâ¤}ˆ,–ÇÅÆÆ ‘H$•JÉô›,Ë’96IàEú•GFFæäääååùûû+ ¡P˜ŸŸO^FFFfee@PPH$â8Ž¢¼™Ò!„B¨úx9_€Á` -Rf³™–„B¡N§#/éŠŠŠøEñär9‰±øé ¤R)˲yyy³fÍ"G˲Ök“8Édž!TTØO!Tfü¤S¦¤ºŸßã****-- †! Q¤­ˆL)))iiiZ­–ã8†a8Ž“H$4M“‹”@I ªüýý““““““­O$“ÉX–e ™§•D!7Ÿ4£¦«€z$yÑ Õ L&‰„øiD"‘L&KJJ£Ñ˜———••E¦Í$ñß.e0†Q*• ÕjÉp<ëÉ ÒÒÒHÃT¼<>G"„Ü1~ÒŒóçNY§h„:BˆçÍ‹¼°°°œœ³ÙÌ0ŒÙl&ݘ„B!Ã0¤E ÄbqdddDD‰¬GÕ …B2RÄ[d.(kJ¥2 €¬¸Ð܀ϑ!„z<›œ—–6•Œ•#}¡ŠŠŠø6$ÒgȬQü!|:EQAAA………E1 Ãgà¢t:Ùl6™L6à‚ð¡ªd3;ùÒåù5U„УγI x³fÍ"’D"Ñétü4|œå¯íÌåøt­V›ŸŸv>‘ø)++‹ÄR?!„Bè¡åeŲÏDDDFŽãhš&/ìøÉŸHÌ夬çv"3Xç±^E8###((ˆã8­öa_î !„B3/'5šñ÷×* ƒÁ —Ëù‰ €Lm@ºF‘‘w"‘ˆeÙˆˆˆ¢¢"°ZùŽßÈÊÊ d¦¨¨(/ïfå® !„*Ö±£¼¦«€Pí4{vH­_ƒÒû Tª)·ª¨¨Èßßßh4 …BQ‘@ŠÌeÀ¯÷²¬\.'Ã÷lÆß‰Åâììl±Xl2™t:]VÖÅÊ]B¹ëôi]MW¡Ú¦¸øhMWáA¨TÓD¢/ üýý%I@@€X,NNN ã'‹ÒjµË—/ÏÈÈಎŸBCCIUròÿ¼¨>G"dmöì+öÖt-F³g‡¼s²¦kª%*B€R9V©›•OÓt@@Œ7Îz¨Cb±8**J¥R‘Æ'†a23÷ºø‰Á?üá‡ÂÆcòXŒP"ŸšV­ºÕtERUBáá‹uºMƒ¦éÀÀ@2ß4;‰D"±X,‘H„B¡X,&˼……¾UC1C± IDATU„BU‰ààø<æL•…P —Ë´Ú/ÉH=š¦Éˆ<àÇëf³™ÌQÎ00~Bè>øð‡B¹ª ¡xJåX²a2}OÖ¹»—À²$ ®‡cøð‡B³j ¡xbñ€j-!„B5bÍšÉS¦T¼Ä¤›ÝÅF÷ê ¡B!Tû¬Y3ÜŽ¢vî¬ ÏŠ{ÅFw/g'GÕ òå…ªÛêÕ“&ÆÇ[°`øüùCe²0oÞPùyjõ£÷CÖ_An~Yœ›1ãSgGÙܬñ=7UùgC(„1üÃ_MWäñµxñ–E‹6ïØ¡3¦,Y²Õ£ô¯æz!ô ØùTëבÍÇçãããæGWåŸÁê}‘'žÔétF£‘Ì]NÓ´D"‘J¥iiiQQ««õÔ¼Õ«'MºÖ>ñòåk>>>Wòõ×ùzý_óæ %ÿóóÔênÙÙ8» ª16î4¡äwžl_¸põË/ól2¬Z5qÚ´uÀœý¶«T xÎÇGàëë{æÌ¥ŒŒ‹ã“VÓç…¯aÍ:}Ú0eJ(8úÒ‹N˜\¿~Û·ï®[·ïêU6>~˜¯¯o|ü0X¼xKÍÔ¡ªàþ×N²þ¸íÙs\¡h½gϱ ‚§N];dˆêî]î»ï àùçe/¼ OMÍ9óå&MD%%¥wîÜݸ1ß`¸fólÔÈoܸ—š4iPRbÙ°ág½þ//jUõ!”XüGRRYBØ…´´©P3Ûä[¬sç'ÇŒéóþû™î?Gb…jŠÃ‡?÷¿ÎÜüËÍþ¶?÷œ¬_¿Î+Wî¾yÓìã#èÓ§£@ °8‰¡ªãóâÅ£g5éÖ­ƒÑèxá‘# ÎþôÓéÀ@ÅÈ‘ÉÉ9‹oYµj"OyÇúãöçŸ×·n=&À¡Cº)SBIÕ½ûSçàË/d˜ mÛæ£G÷ùðÃ,›ÏàÈ‘/ææž8uÊЦM³±cƒ¼ùlVeŲ?Z¯â‹Åd:†aØòÉ ˆ´´4€´°°0©tHÖÄ}ø‰!Uþð×¼y£)SB§NøDòYpöÛ>`@—Í› nÞ4@i©%/ïI÷E‹Æ“'‡XNœ¸Ø¿Ò fÿÑGžà°Ì>}:?k±XJJJª%ØŠæããò·¿üòG‡ärÉÚµ{àÈÝðáÕQ„ö7æ¼u£‘á¸R©´©ÉÄvèÐrݺ½Ð¬™hâľ"QýÒÒÒ–-iûb;vlÝ¢E£aÃz€Ÿ_=ïêVe!iUâÉår¥R) )Š …d²rŽãÌf3˲&“É`0 eßÚ9999ìÕž5|ŽDÍÀ¯¿þžý DFöÚ¿ÿägzõzÆÇG`ÙÙo»TÚì?®ØîÝ3_dd¯}û´ž xš¯€ýG¤ÛG¢Çý7‘\ÞŠü’k4çGî]™Â½{æëÐA’šš ¿üòÛØ±}Êkåø£góèé¬ÌS§.ýÒáúcÇô•¹"kž>8étÅݺµ;pàÌ /t8{ÖH9®¤n]êî]Îõ±=äv¯‘R¼#Gtï¼3ÄdºÉ÷¨_¿.ÃÜ€ÀÀŽ|6ëÏ VkèÓ§ã?™¬EÍô…ÒhÖ’m¥RIÞÓÉd²ÄÄÄ””F#‰8Ž …|8Eòýýý¥R©N§3™L"‘(33Óß_§RM©d­ÂçH„ìxüËm0\kÛ¶¹Ng´I¯ä3ŸÃO™M¢ý£§Ã2SS÷Èå’ž=ŸéÝ»ãŠÙ®/ÇœõñªÐ7ßœ8±ohhçÛ·ï­[·$æåzh;wîaK6z¤M™’jEÕlü sëÊ•›-[6>w®˜¤dfš3G}ó¦Y«½PZZöA¶þ nܘ?jTï "|}}M¦+W~çÅy+BYÇO))) …"%%E,'&&@ttôÂ… ÉX<B‘¶(²MB(²ö‹R©4ƒA"‘rܪ€€i•©˜Cø‰uUþð§Ó»vmðà•ªƒý^‡¿í{ö>< 99‡ïNþÓO§KK-Þ=ó?ÿçóÏ·ûßÿÎvíÚΪV>z9,³Y³†çÎ/_þûƒFz}gHþyÝ>Ý~Ä.ŸÂo˜L7>úh»M¶mÛoÛv¸2UBè!aEUküäâãf³mó¼tà@ÑEd{ûv Ù°þ þóyÍš=•¬ž÷!Çâã§èè訨( 5jÔòåËcbb`áÂ…ÑÑѤ#˲4M³,k6›IïrE‘>R4MsDz¬L&Óét4ýµBñF%¯ ð9Õ.•|øãûBñ“lÚtpòä~ÁÁÊ3g.ój<‡¿í¿þª¯S‡š9óe@àëë[Td 1ïžù6m:8yrHHˆòôéKwï–£~ôrXæ¸q}ýüêúø¶l)pÿæØ˜?¨¯¯OFƯK@¨v#_GîÍœ¹²ZëS#“'¯ñîH¾ÿxddäòåË% 5*:::00ÒÒÒôz=EQÀ0ŒÙl&19–¼Ô#½¦Ìå8ŽÓëõî÷.ïØQîlbøvíZŒóÒ¢E›½»F„jJqñQgË »~ø+.>ºsgê#´Z‚¯¯OIIi×®íúõëbßrS…ÈÑ=i¸s—ñQ¹Q=x.¾ˆ*¬Ìµás$ª•<}ø{Ƚõ–ºA¡@ééy5]„PÕkÕªÛ£¹Ã›Šaö’ÀÀ@¹\Nz;YÏ¥éïïOQTQQ‘B¡ ‘ ¡X–‰Df³™„J<ÒvEš È†H$‹ÅÞ_|ðÁC1ÿBU®ÖÄO°lÙŽš®ByÛ5ò233ɆB¡ =ÄY–%a®â¤§”N§‰DÖãòHN>?X5A‘D“‰Åâ¼¼+uq!„ò–;/àgÞ/3FQi7"Ñi[¢(ŠLþÄ0LZZ‘·x|ûßjEÆëAy+É`4IàU™kC!„×NŸÖÕÖwpUÂãŠï%‘H†!F£á3X÷jâÃ&Ò4E6H>Þâßßñ±”H$2EÑ4]Tôu¥¯¡G>ü!„ÐCÎËîä$"A?»P($ƒì¬'â&›^P$~"%جg6›F£L&ÓëõÞÕ¡G>ù=0ÅŸp8BÈ^†P¤o“õ[9­V«T*ùˆ7Gß‘Ì$f"Ûü‹<¾Š·Hdf2™ ë‡BÕaöì´¢B¨öñ4„*{\ …¤#9‰¢„BaNNŽR©„òHH"‘Ð4M:†“¨ˆLþDâ'›6'°ŠŸ ¼7•Á` CóÜ©>G"d?îðzb<„ò,„"¯ÕȼMeÇ—·'iµZ£Ñ(‘Hø8) ))I*•ò] Hf†aø~Q|[ß@üûAŽãÄb1Ãìu½ö0>G"d?ÐÁ²9¡G×Ç Ë¦}ñèIÒ‹ID= ¡ŒF#ÅX¬g"`Y–¢¨ìì쨨(><’ËåþþþZ­–¼õ²LžH$²i‘²Ž¥ò#iŽª°V+Vìõè*B§}û6ÕtB”›CsfÏñb7!y7ås‹“(Š¢¨ÜÜ܈ˆš¦ù(***66–̨ɲ¬Édò_ëaz$³é8õo݈¢ð›!äZmäxã:¼þ*|½;ê,jú V.‡yïƒÕì{ÿº}¾^ã§€¯ï}éçÎÀ¢w!m£íQìMÈüÆNÀñ¹V ï¼õêy}5U¯ Û–¼îöàMwr~y`°Š¢È,äIII .«Å^###É‹9™L–)))ÙÙÙÖ/ïÈ¿v¿Áñ«Ðò5ا!äÔîMNW,Nþ¦Ïñ¬4÷éÔN]ô¬ð ­O……:ŽŸîܱðvœãø BäÛøÉl†Ä…ðÉjÛ£JJàƒ÷`òtÇñÓí[ðÞ\˜»Àqü44 ¶æÀëá°1Ë­‹Bè‘ãÙ¼P¤s7ßVÄo½f³¹¨¨H«Õò]ÈI˜•’’b“3:::11Ñúu”Å#øV.~fN„ª&k>{‡¸¯„« ÃÌ·AÕÃñ®zõ`Õ kïôØEAÇgm…BX÷ ´hi›îë ®€vUß>_meŽ÷nÍ€JÅOÞ„j–g!”\.ÒÊ›ŽÀjªqHLL„ònL¤-Цéôôôððp£ÑAZ•”Je\\ߊÉÈ$MÓn6A!„w†„½{0$†„˜þ‚¨7@ áýàø¯ey¾ù :^íïàÞ?,ÌŸƒ‚`p¼¦†ÒÒ²ôµ« âeèÛöýP–2q$¼ü ‘CàÌé²ÄNm`Y ƒœ]¶gä]ºþrX¹ÂÒŶ×â°XžÃKãujc›b¸‘ƒA #‡Àeƒ«üeN÷ÞúT Û½®Oa}xäÞªûÂ+!0|п÷!O¥¦N©ª¢<{‘'“ÉÀd2ñ³7YÏŸ åïï–/_ÃÇU$gdddddd\\\XXX^^Yw-·î UV9Š¢(Êd2y±ÐËäуNi½võÊ© ÷\d;¥ýuÞì w¯MÛË>û¯¨a#ØóݶO—ƃ@ËìØB ñøô¡GÄö\è,ƒí¹e?¾?ÆM†À—àôIxwdíXþì9M›ÁuÆÁ!¼÷çC‹–½¸Î€Où#j31dî†_50w&÷X²ZJ´Ç .6—Ç í:ÀÛqÝž¹ïŒÖÌ·¡ÃSœã"áøûv}ð HZœ(¼¯X—æÂ¢y>"GÃæ°h¬ùª‚ü^pv þ>XWþ‰Ö°sð÷µï-B!ñSjê”*™ÐÄÓ_ÃnäÿHã™í‰l“–$²­Ñh²²²Èk8~^rQ%$$H$~}½éÓ§›L&ë° ¬Ú´D"EQ"ÑK^\ؘ‰3väóõñumÞì 3ßYœ½_ûúØ©«V¼OãßžüYÚ–ì}'V®ÍŒ‹™äÅÙB¨ƒ?òÅ0$bgþ¾¼ØæÏÝ;@XßÕ±û¾ÿ·ÛuG¥AáþÝÀx¹,å²FG€º/ÌŸgNý›óåÁŸQX ¿pÇl»ëÊŸ0iŒKßW¬‹KsáèaP‡¨ÃAs¨âü^pv þ>ðö}§–ÝÛ&M«¥2¨Ö³nª’¶(/#yÒÅ/ØÂ·$Ay´”œœ¬Ñhø¡øyž 33S¯×ggg …BµZmÝøÄÏÀ ¡¡¡"‘H,{WÃÀ M›5¯0Ûoº¢ž½C 0xÿžl’(kÿôuæo¸Î\kÛî)›Cþøý\x¿ç_íß5飸β²~ZÚPiŸ/>¨GH@û½ßoÿ|Åâáƒz÷hÇ—ù{sþœ¨AAÏyî5u@éýÍÐß|•2(èYupçWûw%)† ¿G~QÜyäÀˆ?ø³¬úäý¡aª¾Ýeû~Øá:§ëúL9àå—: ynäÀ3§»cªÝ,øzlÏ…í¹°ÿHYâ§©0q*äçÁäÑÞ”Iz[ `±”¥Ì™3߆ìý±¸’sú5¨ÔgEÃô·à›íúßûŠ%^š[õ%ø@I À½{Pjqº÷ÎoNÁß„ªŠ}ÌTù(ÊËŠLη<Ùl“7w±±±¤k9HAyF†æñóBYGQ$gXXyoX­žîØù»ß@ÎÎÍÆËeÃf“ÖO£R==vðGŸ¦Û²8nÆè¨Û~øEÖþé’Ò¿¥è&Í6ï:´buÆœÿ¼Þªõ“›wJJÙ”¸¨lÐÎûó§7mÖ<{¿vÇÞck7ìö¹¿zùsÿ»%/{߉ôoËÞ ,š7-|ø˜ì}'†Ž·hÞ4>g«ÖOnÍÑ|òùÆÄE1®sº®Ï’_ìþñÔŽ½Ç濟„-mè1W·ܾ]¶Ý»/dü·l›ï0té"¨zÀÜ÷àäq‡ðú „µ«Êâ$×Í<7o”õÝþÖÉBêögtAÝ·lãÆõ²šMìuxiü^ûüªðý.€ÝÛá…Û½­¥e…|·ãßÐÐ~ï®íJæ9<…CýBÚçe'2]ù÷Œ¹iòä5öÿ«d™‡PQQ«É†upëÖ#¾{8DEEåååñ!!ÅÄÄõaFEÞè‘Ö,’EÉd2û)7«\bRúÖMëÕÁugOù”ó];õÝ…Ÿäi.Ä%¬\û›C~9r lP PGX§¿2ô èìÿÂÝ»wÔ¯Ž$ÛÅ—.½û¾ß1yz¬@ €Æ´m3ô‹}úÍŸµ{Ç&a}?’rôp¾:|$¨ÃGjýÌç þÝzòŸ³œ®ësÙðÇ舾ê¾Êùs¢ÎœÂV(ôX{}, )ë¾ðC8þ+¨ƒa@ ¬\^–aîLx%^ÿ·ï‘õ!¼¸¸j*ëN>y´«.Ïs߃10t0ƒ¯£¯aû3:sã:Ü+ïðùvŒCÀu¦¬Xë½ö—f½×¾´øØü5¨ƒaóFˆO°Ý»Þú ƒ?ôÎU¶wüYì džý)œ‰K€+ÁÀ>ðòK0u†Pè¡àå2Ã`4Åb±ÙlæçÒ«i¢ø§OŸž˜˜¨V«áþÙž ?àŽ´T‘mo%''‹Åb–eÆÖ•¹¼ ÉŸîôß-ypþÜé‚eÓÆ;Z°æ«lSGÄ¿ítñÁý3¥Ô«'$‰¾¾T:uɶŽú§©›Îߺ)}Ó†Ô/¿½²u'gqP²'õ™3í¥+¿Rõè}ûÖ?ݸ–3z¬Í™sæ•mÓM`åZÛ _osuϯ|ð±m¢õ¤P'ôe#!bdÙöÌwä´?#Ѻ êÊ64E¿‘cÊö¾ö¼öÆ}ÅZﵿ4ë½äìÖ)mÚBÆN§ùƒû—u€7ç¸ÚKn”õ^žý)O£EîíŸFx¬úÂA„]¥p÷î²ñÓ/¦Úš£±Î6饥¥õý„óÊ«¯“ÄÅKSß{gÊGïÇPT÷—Ú¾+[üé¬)#¾Jû´WŸP¡ëñ9ÖG%¬üà½Yƒ‚ž¥¨:õýü¾Ù~Àº;ÔÜ™coÜ`JKJÞ‰_FRâ>{{ú¨õ©+D¢F¯rÒ]ÂÃœÖæ¾·lLDߦ͚¿òr…ãB¨Æõí}ûÕt%Ð#Èëõ[*$ðº;UZÚT‰Dd <(od"}É¡<®"™I‹Ç—““Ê¿û³™<''G¡P0 “‘‘a2µu§&;Ê÷íÛô xáîÝ£êÔù~×–õ)gì<øÀ΋òÚîMûöíÛ´âã™Ö‰K—çÏYX¹¶„ÐCæã…©d£¸øèΩnµbÅÞ WÓ³á}_¨ððð¬¬,©T*‰ŒF£H$"¿N0ée½œ°X,6™L£FŠŠŠÊÉÉÉÎΖH$F£1::šÄLéééz½¾°°ÐÍø©FŒÌü}Õb±$&¥×t]B!äØŠ{+Î0{vˆ…{B‰Å”JV«•Ëå2™L¯×³,KÓe“ù¹ËùNâü†ÉdJLL”Éd‰„,ÿ’œœ iii&“Éh4 †ü|»á“Y?Wœ !„B5­Â¶%¯ßôyB@@À4€U:N.—+•JNG:€[÷‚â{š[Ïqqqf³™ŒÅ+**"«ï™Íf­V›“s¥2µB!„ªn• ¡ `MŸŸïïïïïïϲ¬V«åC%ë!uÖñDEE …B•J•““£T*…B!96/ïf%«„B!TÝ*B€BñMÓ4MK¥Ò   –e‹ŠŠøy  …999,Ë* Žã ±ñ !„BŠ*¡@">H§Û¤×ëÅb1MÓaaaf+ä]MÓb±X"‘…B²ƒeÙÊÌ_àд ¯ž+ÒÖ 6l¼0ñóg:v©ÚòíÙϘ€B¡ÚªjB(B.!—ƒÉô½Ñhd†¦iš¦ù‘z`ÕGŠÄU&“I§k U?À°‘^ ~Ù××÷çý9sþózö~mU•\Âq¾”ƒû†ñB!ôø¨ÊŠ‹ˆÅÿþh2}ϲ, žÈüOÕŒÆ*?ó}‚û½B6T=z_._Ξé/cììñÆbåK½¿tM—ç»ÀÄ‘Š/_¤¨: D ù¬Nm¨ñSæü/ïÄ©1oO5mö{{Øñ÷5S|ÂÊàþƒI†S9ge"„B¨6©úʆX< ºOáÚ)‡ âlïûó§›<;ð¥þ§O¾;k|Öž_`ÉŠ/ZJZ€ö˜&.fÒæ]‡Hævž~;î#x{ú¨V­ŸÜš£ùUspîÌq$„r]&B!„j“j¡jVvÖ7»¶g|½í'gþœûÇïºe‹ß€×ËÖ^ºlø#fú¨¿¯^ñõ¥~?†Ïüòàüö ðHðïÖÓxÙvIL‡e"„B¨6©Í!Ôî›V.[ðUæ¾&MÅÎòX,–¯·ý$jØÈ:qδ7–®üJÕ£÷í[ÿtSÐ|º_¿]¯žY9¸Â2B!T›øTœåÑôÝŽo?ùpÞúŒ$­¤.²õî–ñß²ÅõŽÿz˜lܼq½EË'àÛ¯×zqj‡e"„B¨6©ÆV(¡ðdrrrXX˜Ñh4B¡¦i‰D"•’˜¦[õæLC,nùŸñáàKQd¸œý¼ ?üü½w¦¨ƒ;ß»{·MÛöi_sß[6&¢oÓfÍ_ yÙ×Ç×ÓS;,!„BµIµ„PiiSù휜g¹ *juuTN]¸gŸh?ïݤÙʵ™6‰#'FŒœH¶g¾³¸¬À‹ÿήn½}Bo¶ItX&B!„j“ª ¡fof¦ƒÐA,“é †±™²œ[aaaR©ÓAs!„B›* ¡¬[ž@©TÊår²Š0ù/Çqdšr–eM&“Á`0 $sNN@ŽZ­–HUU}B!„ªO„PÍšÂÂBþǰ°0©T*‹ÉÃ\9ÒþÄqœP(”J¥2™ŒeY½^¯Õj€¢¨ììlµ0ŠB!„Ðï²!”uü¤R©üýýÅb1˲f³Y$F2/¹T*U*•*•J&“Ã0ãÆ3›Í …B,ët:†aHåïoP©¦T²V!„BÕªR!”uü.—ËÉZ.f³™¬‘çïï¯R©T*é Eõ†³²²Â† … …‚¼Ú“J¥Z­Ölþ40pf¥. !„B¨:y?/”uü)—ˀ㸢¢"¡P8nܸÄÄÄY³fZw„²þozz:‰·Ìf3™ï$‰^¯/*úº’¶a}rÿŸ~%¤Ëàçöý°£’¥9”üñ"/vU•Î2aÅ™B!T=¼ ¡lâ'‰Db2™ôz½D"™>}zRRRXXMÓyyyÆû×¶î].‘HFE9Ž•“Éd ³·26xبïóÏìÜ{ü³´ÌØYã+S”3k>ûЋ]6J8®âL!„zÈxBññ“Z­–H$¤ÏSLLÌÂ… ¡¼9*%%E£Ñ‰œL&ÉÏq\dd¤X\¶ú ÉCb)¹\ž››[™ kÔˆp÷Φ͚;ËÖ© µ,anx¿ç_íßõ‚þRsèg’øbŸ~óçDíÞ±IXßÏ£:8,œ‘ß þÝz/_$)— ŒŽè«î«œ?'êÌ©²V(Í¡ŸÃÔÃmŽuV>B!„ªÇ­P"Ѳ¡V«ùp‡ž´Z-ia***2»¦N§Óh44M«T*¹\.—Ëiš®¼P\\\vv6)‡¤˜L&©Tj6›f/M‡Tæ {ô š6áU/øÍOS7=œ¿uSú¦ ©_~ëU?-«ÒÀ¯ˆß®WOÀb±”9ÓÞXºò+UÞ·oýÓMA—p_ ®ËG!„Põñ¸*))‰lÐ4Í0L~~~ff&éÃ999ÉÉɹ¹¹4MËårŽã¤Rittttttdd¤J¥"/éÒ^jµšLpB¡Ð`0PEÓ´× Q|ÿ¡}{v>Ó±³‹œ9»2`÷ŽMª½IŠªGïïIâöŒúÄKõª½ç¾·ìäñ£$¥n½z·oßrX¦õ.‡¥Uèæë-Z>ß~½–OìÖ=¯-Ÿè]ù!„ª /ç…  … ÈD¢ÌÌL-ÅÄÄddddggËd2<‘©5U*”ÏT^vbŠ …f³™„MQQQYYYü^³Ùl4år¹N§ó®†.xëò¥ uëÕ‹[.]ùI¦²_iø¢þü«ý»Z,~màø„ÏÞž>j}ê ‘¨ÑǫʦW˜;sìLiIÉ;ñËHÊëcÿ38¤‹ŸŸÈ¾G”õ.‡¥Uhî{ËÆDômÚ¬ùK!/ûúø’Äù‹?9iøÓVöx±/Ÿè]ù!„ª ÁäÉkÜÏ-•þ¹páB sf$$¥¥¥‘7q$´ÊÈÈð÷÷«>æHfffVVVJJ é>A^ÿ‘Eô$I@@€Ñh‹Å®ßåuì(ß·oÓò5\¯SêÔEœV¡Úo÷¦}ûömZññ}Óö.]ž?gá䚪B¨:|¼0•l qútm1ÅÅGwîL]±bo…9mxö"­FÞÜñ¯á %%…lY ¢££ýýýõz}fffAA¿Þ°P(dY6///:::33S¯×“æÇ‘Nå|ùz½ž¬ãQ B!„Ï^äéõz°™É‰lççç«Õj™LFÚœ†Ù°aƒN§#› …D"Ñét)))|f6›§OŸ®R©H4Éw´"ÍTÇ‘÷ªàB¨’&(›©¡Ît€B¡ÚijŠL5NB(òÎŽ´‘¦äääåË—SŲlBBÉ”˜˜˜””d0t:™Üßß?44Ôºk¹H$¢iZ¯×ó[ü+¿‡ÆL!„ÐãÆ›Š„8$Êá¬Ö'1yyyAAA4MÓ4­ÓéH«’L&‹-,, ².4YñqRXXØòåËiš¶ŽœÜŒ¢ÎeÅ{t-¡ÇLßš®B¨Vñ¦‡o7" Q|[ÇqÙÙÙ$HR©TdrŠ¢4 øûû“°Š½¬Çå-_¾œï~Nš¦Ü‘·úD=/.çÑ"ò~ôÖØØ_Ýüç¶ýÞ&Do¨û¤nþáî=/(ëÕ­£~IµmoAi©Å:ýÉVÍÿ3rà{Ÿm´9ÊOX¯/ÿíûY,`¯I#ш°¿Ø¶×á¹z¨Lí|§¦«€ªm<ëNN^áqVÌf³õ$OƒŒªS«ÕÇ‘%‡³²²HW'þXþ(N‘Ël6«T*‘HD–y›8½0åµٟǹÈðú 'RrÿÉó=-¼BáÁ=>ÏøÎaüT·5mäÀm¹Îbš¨aý~=ý›MüT·5)¢ßÒuÛlŽòñL~­¿æ¤Îaü$¬[gÚë/oßÄá¹’b'ÀÒ9cݾ,„BèãY%“É€eYâ˜ËYG9ÙÙek´0 SPP V«7lØ@â!‚ g2™Ôj5éHNÆëI¥R–eIËišòzPž¢]ë†~õm"üèi±^â>_Ÿ þE6dÿxRwÁá®»÷¸„5›/ýuÍÙ±«¾Ùý›áOû£â?ÛxíúM›ôÒRKÒW; ^uX”ù”o‹¯8>׬ÄuðÎÇ_:«I…*¼!„PÍòìEi…2dæLñ«ãEQ………äÅܬY³ŠŠŠÈZxZ­6'''44”¼Ë€œœœÌÌÌ¢¢"†a8ŽãÛ¨”J%i”‚òàÉl6{DQ”ï„¡¡KÖföQ=ë,Ïgó&Q¾¾ŸÍ›o.YÛ¤‘hÖ˜WÄt£’ÒÒä»Îê/ÀÀÞÝ^ zÁb±p%%3?L³9„/ª¾°î¤ˆþŠvÒÒÒÒ;÷îÅ,K'KµDôïõâóŠÆ ¬ùöûCÇÏÀâ7_7iTRRzË|çóŒïô—þ€Éó·í-xîÙÖÜ‚õ…ÖgäOѲ½*~ʶ܂>ªg?ûÅÖ\ëkqX,Ïá¥ñv$Ï<ýë”–Íè˜ñá~ÂzÿÜ6/_Ÿõ×µëÎòo[ùî«3>t¸WX¯î—KfŽ˜³ÌáÍwx ëûð“æäý÷¶u©År÷.7gÙz‹Ã–1„Bèò&„«áxdU‘HÄ¡3›Í¤G”B¡Ðh4IIIf³™eYF“‘‘¡Ó颣£IS˲2™¬°°ïšžžNÎRÞ õ’öÚ€÷:ÁÜøÇEž7—¬Ý¶ò]>Š–µ÷Я§k/m9kÌàKÖÀøWƒ'½·ê:{«aƒúö‡ð¦Ž»Ê°ÓR,hØ >ÿ7ž¹ñÏì¾èØ^:{Ì`B%ýwçUæ&<Õ¶ÕŒ7Ôo-ý‚ä¼ôçÕõÛöÀ·Ÿ¼m}FkõêÔ¹h4-IÝœ0ã ›êÓÿf›˜ðTÛ'¬‹uqi.L¸ïÐñï~þeÀ‹ÏO¸èó ×ù½àìü}ø7爰¿®Ý˜–°ÆbF"?ŒŸB= < ¡Xö²Af‡ò96Y–%áy¯—ŸŸOB¨ØØXFCQ”H$"¯í†‹ÅÇÑ4Aš©H;–^¯'³Ÿ@PP?i‚§ÚHÄÏÊŸŒ[¹Á££üížhÞ^ ‘_Ù|W¿žþ}Æ(uÞ- €œéÑåé qŸ‘?îÖ•~:zŠ~7ˆ›4")-š6ŽÞ¸¡_IIië–ͬržªðŒwîÝûIs²e3ºn:6»š4McŸ°nii©¬u w.Í…g;´Yºn+üxD;qXh…ù½àìü}àõèòôøùe÷öëxQB„BèórÖ%²î ‰oHß7t:iR"ó’/_¾\©TšL¦   ¬¬¬Q£FåççóEñ…¤¤¤LŸ>O‹Åd2OO=Ó®õ“­Äë¿ >>‚/Þœ±d-{Ëìú(æ~òÕ-ó}#wÓ2;ux24 KX`×ùŸz“émm±€@ )1ãÃ?ùrÇIÝaÝ:›>y›Ïi¾s·2gŒºtݶ3úK6ź¸4w8lð)µX||¥¥Šòå¯Ë~oÝ:nývÙœ‚¿!„ÐÃÌãN»QQQÀqœÉd"íO Ù¢øqväíˆD"Š¢H;YEØh4’—}$?i|â8.44Ô:~²n±ÍúznÊý߱ѱIâ>›÷Yi©eBÜgÎâ§{W¯nY‹ÎÑ“çöîJ¶Ÿ–=A6Z4¥Oê.|±m¯üÉVö‡ðþWx&¢/NØ¿€³Ö ¾ôÝø¼Ã ögtáóø)|±7þ¹a]í÷:¼4~¯}þ“º /ví}TÏjÏ]°Ùû×UæYkèݵAÙïµî…f.‡§pè…g†õïIND7j`³!„B5À‹V¨niÀ0 ™´‰¦i“ÉÄ›#qi”R©T™™™6lÈÎÎÖjµ V«ù‚H˜•””csŽ””š¦†1[{yeŽ$ÅN$ƒÅx»~<š<²ùÎÝ7—¬ý<ã»é¯Z7…¢|¦¿$oÜÀOè#ðáûYòo…¿ý~òðþŸÇG—””šïÞ{{yº³.;_lÍýpÖèëì­#ZÃÑ‚ögtFä'ôõõ%Ûë·íýpöèë7ÿ-Öz¯ý¥Yïµ/-åÛïcÆ îqË|gùú,›½ë¶æ¾=áÕì­ÿ·wÿÁqž…Ç'›évX`mYÊ6(‡RPAD+æt­/A4Æ1àü8a›bJ ¹«š ÅL]j8Ѹ:u|êÕW çÄ‚:‰C•T×Ó0&8 ‚Á*¨‡ªx¹êš-,öÙÄ÷Ç“l…;~¤]ɲ?ŸÉØ«ÝÕ»ï:ÿ|çyŸ÷yúú·Oþ¬øêôã¯|óŸ|ä¹ÿb'|Ä©ÄÛ?þíw?~üǵyÿùÓSŒŽÀâY±~ý]©¿S.fÿþýÙl¶±Œxì§Æt¨B¡pàÀl6;22wz©ÕjÅbq÷îÝqD*þÖäääºuëÛ 7ŽßÙÙ¹{÷îÙÙÙC‡MO?ûiÏç²ËÚ|ðî ¯ûÙóai͹^ÕÙþŸ}Þ¾¿Ô”W›{´3õ =/ÿÌwÝпõ®½ 9ç­w]þÏßþçÿàƒwßñ±÷Î}þ£Cïß²~©Î h…mÙ;öð•WÞpäÈôéßìØÃ÷ß¿óŽ;xÚwž`>s¡ŠÅkBØßèžÆ½xÕj5ŽKÅÉãµZmÍš5###¥RiíÚµqÙ‚h|||ûöíq©¹;âÅûöí !T*•3é§óÙ—O9œòÿwê«Í=Ú™¿z&~ñòKßñ†¾ªžîþJXLóœN~Ë-·ÄÅ0Ó Ì-ª8È—Ê’zVöp8wþë??Bx×åK}"B˜wBU«/YµjÕþýûK¥R¡\.‹Å˜Dår¹±Nf|&“É>|xÿþýû÷ïE·ÕkLoä×îÝ»{zzâ%¼ÔSºtÍïÌï»çƒoßýàRŸpN™gB…ŠÅk:;>|¸½½½T*ÍÌÌ„r¹\©T !T*•ÉÉÉññññññÆXTcäiîä§ÆøSWWW¹\žšš:xðÑ}-€VšB…zzÞ]¯ÿÁôôtggg>ŸŸššŠÛÛ5ˆ:Ù Óž¢\.766V,«ÕêôôôþýÇrV­¶ÐÍ\{{ß{óÍwNNNf2™žžžÎÎÎS½snWÍí§­[·NLL …ÙÙÙ‰‰‰}ûþn§½ôç3×öuÅÿ*<õ^¹¿výUîÿ×;¼¾öÕ‡^Ûû’Â7¾þ•—üÜŠ/|öÓOyØøàýÝM9Ï39Úý£¼ñµW¬yÍS¯#,¾B5 üñ¾}Èf³¥R©¯¯¯R©Ä©¹ï9a«–B¡000ÐÓÓ“ÏçãEÀÉÉÉ£GŸšçÞ±ÉÓ¿áÚ7Ýtß§?Ñÿúëâ÷ú×¾i]áÞÑ_yõêû>µûê_}ã©~÷Ó’gkÆév׿÷¥oü¿“—V–Js*„°fÍï„ÆÇ?×…êëëk¬WWÚŒûâ …b±˜Ëåòù|©TªV«q㼩©g„ÐÌ~:¯½æM¿÷ÁÍÿTùÇgçŸûØc}öþ{î¾ï‹=öØç÷Ž~ö¡7öwÿàŸyÖ³Ÿó”¿ûÒŸÏ|óïêñÁ»7ÿö_¸ï‘œýÀÖ?¼òêÕs_ !\Þ–ýúÑÚ‘oL¾÷×}êÀ¡Ü3Ÿõö^ó†ëíÚµ7ÉÑ®íëªþðo|í±g¾û[7­«VðÌg>ûcô‰Ÿ+½¨ÕÿJÀÉš–PÑÊ•ï!LM}¢R©äóù|>ŸËå —çr¹x^ÜÚeff¦Z­Îξ(„g4÷4BaÅŠë®ù¥UØuÅ«oýÏÛžû¼Ÿ9ù-ÏÈ=ó—¯|Ýçîß{ãM¾øWqñ‹^\ºø’¿zðs¿pÙå?óü\õÚÕŸ½ïžo:qg’“½à…úÀ¡¯úâo¾÷æ˜P'»ìe]7Ü´áC·½û²—u=ç¹…¹ýtú£Ý;6yy[¶1¢ö¡Û޽溷ÝxÓ†½ŸùÐmï¾ëÏöŸÙ?ÐL õ”::ÞÚÕõÚÚÞT«Õ*•J¹\.—˳³³ÓÓÓ•J%–S¹ü£GŸ7;ÛªA”¿|èèÞÏ|é¾±¿.]|É­ï~ë©ÞvíÚ›îûÔڳæÞѯZóæÂ5kÞ|ïèÇÏä³®Ysc¡ëŠW—¿wº‰\ïØøþï—ÿ~÷Ÿè£;æ}´‡šˆ§·jÍ›}éÉéM×äQ¨‹×œüd>ßÒÏ|Âó‹/ !d.ºhæÁwþÞ©Þöoåêßzß;¦¿õÍ¿zðs¿ý»wþ¨úÃÿâþ‡šØþÑ„þï÷¿7óÝï”.¾äôŸõS?• !¬X±¢±/ÞŠ .xì±Ç.¼ðÂGý—Ç?Ÿ¬þðß?ö÷ñÁ³žuÊ…“öÔl· K§%£PgƒU|úž]—vœò>Á /¼ðškoü›Öýâ«åYÏ~Îç?ó©_¾òuㇾû—ýË‡Ž¾}ýûâUª–Ú¾öÕ/…>wß=úÐoýúõo}çºý£¿ùo{üñÇçqØB÷/ý»Ïf4„ðÙ{÷¼ªç—çw`ÎÙ„Úð¶Uo|í}¯~ñgöí~"ƒžrí€k×ÞôÍÃ_]ïÅûÔÇuõ —^÷úëîWB ~pè}¿þ–7öwÿŸ£Ó^paáþ?ÿä÷¿ÿ½wl|ÿëV_ÿ‚^üßv Íç[…ð­wîýÄȪ+/ßûÉ?ùÀÖ;çw`Z{!o íþôÿ<ùɧ\;àe—¿òo¾÷Ä@Ñ¿çŸxéåW|~âoæ>Ó¸Ïîä!„¯}bËš+¯^ݘWþž÷o !¼þ oyýÞŸùèþÙ çpú£5„~þEÿfÏý_<ù[‹©… •Í~#„0==§“g2™¸¢A©T áŠÖ}.@«µ$¡vïÞÜØBx®¸„f!„‘ø×¦M›jµ—µâZ§™ U©<0::zòó…B!ŸÏÇNX²|xx8„Ðßß_*]ÛÄ3h©¦%ÔÈÈ»æþØÙÙÙÞÞžÍfCñÏz½žÉdjµZ\‘|ff¦1(uàÀ ¶n™(€&jBBÕë_ÚµkWãÇÞÞÞööö8ìT­V·oßžÏçC;vìÏf³Ùl¶½½½­­­Z­=zôðáÃ!„L&³mÛ¶µk׿óW-ü”Zj¡ uèÐ]““Oì=ÒÝÝÝÑÑÑÖÖ–ÏçëõúôôtL«ñññÞÞÞ7ööönÛ¶-“ÉÄóB…B!®ZBíêšîî~ú=U–Ђjn?õ÷÷wuu‹Å7f2™BŒ¤ÉÉÉ;vìØ±cxx8vR¼¢—Ífãì¨l6ÛÙÙY.—gff²ÙìáÇëõ?êéy÷‚¿@«Ì?¡êõ/5úiݺummmõz=öÓììl­V+•JáÉêîîÞ±cÇÔÔT.—«V«±±â©¸åp.—+ Õjµ­­mjj*ŸÿDGÇ)7¶XZóL¨¹óŸöíÛ·jÕª9/Õ·nÝ:;;;00P*•<¸}ûöb±8<<œÍf׬Y3::ÚXò ŽEÅëz1¡êõz[[ÛÄÄD±X4/ 8;Ísƒ—F?mݺ5öÓÌÌL½^!FU!›ÍöôôtvvÆ!¨¹ïV®\B¨×ëýýýqÖùÚµkËåò7ÞBœ™™™{(€³JrBmß¾=>ˆUtôèÑø8„póÍ7×jµ8ìïÎ[¹re&“‰×òfgg'&&¦¦¦â+W®¬×ëñ:àš5k²Ùl&“‰iBˆwíåóùÉÉ?iÆ×h¦yÞ‘×ÓÓwkîììŒ U(º»»»ºº7ÜÅZ›œœœ­V«·ß~{œ5ÕÖÖB8pà@¥R©Õj…BaÛ¶m!„[n¹%„033ÓÑÑ—’8«Ì3¡òù|(Êf³7nܳgO½^ O®œãirrrll¬V«ÅwÆ¥XN¥R)^ÂÛ±cG6›­T*û÷ïßµkWì³øþ¦|O€&JM¨‡ã_ƒ«Õj6›Ž—äâøS6›ššÚ¿ü1ÆP©TŠ+EÅ_ !d2™¡¡¡z½^©T6mÚT(êõzwww,§éééÎÎÎ83଒–Pqòxc©‚B.—«Õj½½½]]]ñù={öŒÇÉRÝÝÝ!„Z­666¶k×®ÁÁÁÎÎΙ™™ñññZ­ÖÑÑ100BX³fÍììl.—‹U¯×s¹\¥ò€56€³Ê|ªq{ÝÜkvÛ¶mÛ³gO&“™ššíèèX¹reœNB¨V«£££¬T*õz½££#„088oЋ uîÚµëàÁƒñàѬF«œ=Ò¥\.‡²Ùl¬œ8Q©‘;###mmmÃÃÃÅb1þÊäääž={Êår½^¯×ëÙlvûöí™LæðáÃqvyœ<^©Tn¿ýöb±X­Vã…¿xä|>¯¢€³Í|ê$ÆP¡V«Í([µjU±XŒý499'˜G7ß|sœ B¸ýöÛ3™L¡PX»vm¡¯¯oîÚQqsâBÜ–xþß ÒªP(ÌÎÎ6®âű¨XQñÉááá­[·†✧ødww÷ºuëbWÅkñ¥jµïÂëïï Ÿ0àG¹âAÎiKkÆõjµZªÕjµZ­1(oÄ› !>|¸V«‹Å[o½õÖ[o-‹‡Ú²eKŒ¤ÑÑÑJ¥ÒßߟËå&&&¦§§s¹\\È ŠÇ÷ýY£8Û¤BÅËp333qH)›Íf³Ù¸®A6›#RÃÃÃ[¶lÙ¸qcœ6^¯×·nÝzøðáøëCCCñƒƒƒ!„ÎÎÎxå.ÖX\#*~\L¨Læ—šú•*u.Ô!Œ„'gAÅ‹q©ß±„¦¦¦b Å~ÚµkרØX,¤¸9L\Ž|ll,„·Ï››Mq¥òø8ÎŽ2 8Û$ï‘Å mq.T ©øgxr/¼ø¶uëÖÅkv•JeÇŽ!„‘‘‘r¹¼víÚ˜Gñ `OOO\ì qÀB___ÜjÊ÷h¢y&ÔÑ£GçÞ—W­VcEŤ8I|||<ΈÊd2£££qÕöíÛóùüàà`|gÁZ»vmãB^còx[[› €³Pr  ŒŒŒ„—ðây1•â­y“““!„•+WnÚ´©£££··7þîàààìììáÇC›ø2™L___\å¼q /„ÐÞÞ>÷¢ÀÙc£PWÄ¿âj™›òcHõz½\.ÇNèíímŒ-­Zµ*NŠ3Ÿ#LµZ­»»{n-íØ±£X,Öëõrù… ü†M7Ÿ y«V­ O^¿‹y‡‹Ó¡êõúÄÄDý'ÕjµÞÞÞŽŽŽ¸ó]\*ÎI߸qãøøxãøqvT\àl3Ÿ„*¯ Onó2wü)ÎgŠNNNÆKu3ûæÆÓŽ;²ÙìîݻÜA©}ûöÅe¢¦§ŸÝ¼o Ð4óœN~Ë-·Ä¹Pq!ƒFK5êèÑ£!„Æì¨¹ÆxÚµkW6›Ý´iSã˜ñbßâ1·õœm潨ÁKúûûã®Ã¹\®\.7V%häT˜3°æÌ:ß¾}{6›8ù°{öìééé©×뇚™yþüÎ  Õæ¿d@©tmGÇÑ©©©¶¶¶R©433S­Vóù|&“©T*IQqØ)„0===22²}ûöSíywàÀ®®®ÙÙÙ©©©ƒ÷‰´Ú‚V]êí}o0==ÝÑÑ‘Ïç§§§‹Œ …ðä(ÔÁƒ·nÝzàÀS'—Ëçóùr¹<33³oßß-ä¬Zm¡ Wöö¾·PøÄÄÄDWWWWWWµZm,ûB8xð`__‰±‰[ þIDATßé×vÚ²eK>Ÿ¯V«“““?^à)´ZÖþîèxkGÇ[÷ïÿP.—+ }}}•J%Î ?Ío …žžžB¡P­VËåò¡C‡¬, MÛ>eÕªNOß=33S«ÕJ¥Òš5k÷è5V=Èçó…B¡X,æóù\.W*•fggãúOSSÏA?ËC3w ko¿¡½=”ËŸ™ÁS)Þ‹BˆËAÅ…2™L¼ovöE!<£‰§ÐjÍßÄ·X¼¦X|âq¥ò@œ`oÊËf³ñN½|þªr9¾Åâ™ÀòÓü„š+Ÿ¿ê¤gZú‹ažKkœÏ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ2gø¾Ë.koéy<­Í›¯Z¿þ®¥=€èL*„päÈtëÎãôŽ{x©>àd.ä$“PÉ$@2 ,a:ùBìܹ!>pWphyBíܹáøñãwݵ¾ñÌŠ+„°¬µöB^ì§s4žoéç´T G¡ý4wÌiÆ!„“ŸXFL'H&¡’I(€d­š 'ŒÇùã'OoÍÂåg¿Å¾wGÞuiXZ5 uÂ6y_qÓÓüâÅ¥øîÌϴ謚¢% uš]„Os!ï²?¯½éÒ­­8€æjÉ…¼;ï¼óÎ;ï|ÊOËpö[Œm†OðÿñÕÆãlµëŠ!„ì­‚–‹–$Ô{ÞóžS=8¡“>õíÛçþh XšœP—\²ö„‰ä§²~ý¿.e X^š? 5·’‚–‹¥_*»·l X^–`:ù\¯úé»..ýC0,+KœPA<ËÐÒ_ÈXv$@²„ yÇŽ=ܺóXFÎ4¡6o¾ª¥ç°ŒœiBÍ{µ'€s¹PÉ$@2 LB$;Óéä=ݵ–žÇÓzû;cÆK{QºPoço´î<–‘3M¨ƒ‡²Á\(€yPÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ$@2 LB$“PÉ2K}­rìØÃ-:²„ÎM›7_ÕºƒK(àÜtÇœÉÛæWZ 8g92}ú7ÌûJŸéäÉ$@2 Ì\(à·s熓Ÿ\¿þ®…Ó(pŽ;¹–ØOAB烹ʹð~  8OÄrjJ? œ?šÕOAB̃„HfQàœ5ïý[ž–„ÎMóÛ?ø # uå•7|öî—ú,€³Å•WÞpå•7´îøçBB=øàÝK} Àrõ±-;—ú€–8rdº¥Ç_ÑÄ»ûÎîÈH&¡’I(€d ™„H&¡’I(€d ™„H&¡’I(€d ÙŠéo}c©Ï`™1 ,ª_úÒ_úÒEø ¥$°ØþöÛßlÿ…—-­#¡€E¥Ÿ€sƒ¹PÉ2šXêsXf2<2¶Ôç°Ì¬8~üøRŸÀ2“Ù»woÓºwïÞ{î¹§G8s­kwä$“PÉ$@2 LB$ûÿ%€S"Öjü7tIMEÕ .39­AIEND®B`‚jpilot-1.8.2/docs/jpilot-search.png0000664000175000017500000000522312320101153014136 00000000000000‰PNG  IHDRôL ‘¾ gAMA± üa­PLTEMMfUUUaaaff™gg™ggšhhšhh›ii›jj›kkœllmmmmžnn‘nnžnnŸooŸpp qq qq¡ss¡tt£vv£vv¤ww¥yy¥yy¦zz¦zz§{{§||¨~~©‚‚«ƒƒ¬ƒƒ­……®††¯ˆˆ¯‰‰°ŠŠ±‹‹±‹‹²ŒŒ²½µ••¸••¹——¹šš¼››¼œœ½  ¿  À¡¡À¡¡Á¢¢Á££Á¤¤Â¤¤Ã¦¦Ã©©Æªªª««Ç¬¬È­­É¯¯É²²Ë²²Ì³³ÌµµÍ¶¶¶¶¶Ï··Ï¸¸Ï¸¸Ð¾¾Ó¿¿ÔÂÂ×ÄÄ×ÄÄØÅÅØÆÆÙÇÇÙÈÈÛËËÝÌÌÝÍÍÞÐÐßÐÐàÑÑáÒÒáÓÓáÓÓâÔÔâÕÕã××娨åÙÙåÙæÿÚÚçÜÜçÜÜèÝÝèÝÝéÞÞéßßéßßêààëááëââëââìããìããíääíååíååîææîææïèèðééðêêñììòììóííóîîóîîôððõôôøõõøõõùööù÷÷ù÷÷úøøúøøûúúüûûüýýýýýþþþÿÿÿÿÑÆh2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð@IDATxœíÛ‰{ÓtÇñL¿eê8œrˆ Œ!× *x xŽsà±)»è¨Û8=`œµ³Y“¦éÚ¬]Bòy¿ŸgK—üҧɫͯÃù¢qNÄzJQQˆÎN£žXO)* ñ¿®§º`  º`  öXÜRPÓñ)Î?²Þåi*„[³Ì*º•#ª|Õ ¸Ù½¤µ0nh‘}ôy·kn=Ö4+èŽÿÌ/Í[_=#󯧳yèÁ+½rô¥Ð §4omy‡ê÷ÔB¬¹¦‰¡{7k±Ë‡<·6ta]S¬F ?}3^3§W^ì¥`T)ôŒ¨AîôÔä]›kfïèNè½L°!“èr—w§zõÇêöì¡ë½‘sBè5szeSpm¯ŸÓ³.ø‘Í é•B߫׼ê[õÐô^3Û§²Çþr&j|JK1UûRúÝ{Ê?]·/%tò]0Ðk‚ûlâÖSŠŠÄ%ÁŒä]0Ð]0Ð]0Ð]0Ð]°ö¡wPkµMà‰k#zÒ¿PNi[Û&ðĵýgúïèz.ØzÜS<è WFyŠ£o-\û¾ÉØbpëàøåº­ ·”‡ü¯ƒezßx~úÛ\”E«1³Ï¼ETaô«›¬óÍcž«C¿ÓY¿ô–ŠBß1²Ò:÷לçpQV^£Áç £ß^S^¬,\~ÛìÂôäÐFWúë±w_<25yi‘ŽÞØ>7"ÿOÞlÝpah­·ôÖ‹BÚì-}†}S…‰€¦ÎªøéØœŒ7¨8ç“w‡>1ÛùCh§FèŸÿu²ÿy³mö†{õ^möÖˆ{{ÌŽÎÙr÷ænë¹<“Î`{ÏzÛÇ@o¹(ô{]ÞÒg˜]9'àÓÔYù2Þ ¢çS´× ¡Û†ý'Ükw>Ÿ¿iÖóÓïùî¾KݧÕKåÍÅ.Ë=ÐïvÛ’Yo;¯ôÖ{ºÏ0pº¯+ ©³òe¼Aºoìþó…ðNÐÍ^¾ï>_ºË7¯÷Ú’GÞD^A·Êlá£/ž Mô ·Tú°y÷r½G/4uV¾Œ7¨ŠþñWï}7o§:ôm9Û2cvò€™;ü½Þ>ôÑ}™ó¯!ôsýÖôÿ[úNÿœÏ°Î–ß hê¬|oûÃìâòâ•ë?¾Þ©ú©™ÂXÙŠÂÌ Ùž[ã‡z÷·ôÈôäo‹æ¡¿ökaøUo;szëE~dÛ5‘Ÿþ&WaøåÊÔûM•/ã r8|-_^wñ\x§Fèÿ/Ð[*}=á<ôeA  TFߪm Ñžpü+›`iGoÛ]I•nô­ÔRmxâBèI<-hÑúkPŠ£Hô¤ßÔк`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`  º`Qè”å£wP¦ã•îå$ýbÌiŒnju8:Çܺè g:Ðý@=Óîzlè›F ×¾o²½Ó㈽oŸ¿iÖóÓïùîÙXê^^*o.vYîA,$ô»Ý¶dÖå>Ýל„JÝìåûîS½»|óz¯-yäMät÷ëa,#>ôáêåÝE_ì¢çz^ NB %Œ¾-g[fÌN0s§³¿×Û‡>ú±/½Ë»e}gõܹ~ë?ãNí¶üNpb(aôS3…±³…™A³=·Æ=ô¤—™žümQ&Ñm×D~ú›òG¶×~- ¿jöË•©÷ƒ“CÉ_ÞŸ’øå è™t?ÐAÏt ûz¦‹BOúÏ5ãÏ:æÆèeº†è¤è‚.è‚.è‚.è‚.è‚9Ï\N‰är>jÒ3¥f[éé­¹è™ tÁ@ tÁ@¬¹Ü¿Ñý|2&ºè‚tIMEÕ 0`[¸IEND®B`‚jpilot-1.8.2/docs/jpilot-prefs-3.png0000664000175000017500000002255712320101153014161 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝyTgÞ/ð_7ˆ€ˆ‚²(¢ˆ¸àBWÈ&“9׉Þ‰šä=o2yý'ñ•àvôæÍ9“™drˆz=3ÞãQÇ`rãADEDY4 MºëþQ¦ÒéZºè…nx¾Ÿ3gNù¤ê©§žªþR] ýÓœ¦º:—쌋õä5à×›#ŒÁ£Ç$7·:åL„`[ÛІ†ëÇR_}µyÁ‚d{BY¬½`)‡:ãb=y 8Âõæc0ähã1髯6+¿¹éMŒ44ܰ÷ºgÓ¦—{Ñÿ÷ =y 8Âõæc0ähã1IÍ€M|•–CÝ 64ÜÈÌüÖÁ ÅÇÇöÞg‚ÕÕ¹'NìräîÉkÀ®7Gƒ!GIü€ûÎ`¯Ó[î°zË8l!hC›6°÷Té-ã°„  wX))k6nLظqᇾ:gÎå­,˜¦¼BJÊKF%Þw‚À2sB0-m‹uaI‡ •.ì>>åìÙÏ®^=¦°fIÉyÉ匌]fï]™áÖ¶mG¶mKýüóï##ÇΙ3^a«ùóÃm49&ª¿ûnsMÍMÉÿzòä6•¶žþ%ÿ¿ï¾ÛÌ/ˆ×IKÛ’ž¾3#cç… »ËËó-Ù]ZÚ–ììÿ+ü3'çë´´­–thñ±ú«²[ªªnddìJOÿòܹ/ OZÒ•ò•#¼Z _Âêõ¿,}õêÑððW½¼Fp×Üü@aͲ²Œqãž/ÇĬµÑØ6mzÙ(_ZZÚ¾øÚk±™™ÅDôÞ{/zyyètú'O:öï¿PYYŸ””àää”””@D[·ñôt_µêY/¯:·o_ÆÝ»¿ðý¼òÊô°°‘D´sçéÚÚf":tàêÕqnnýÚÚ:öì9ûða‹\#ÏÅÅyݺy·nU:U §‘ÊÊ?¿ñ••þþ¡fÏÇé5ë¿óˆ}‹_8yr›°,µÚ:"êèh½råFCSÍÞ£^¯kmmtwÜÖÖÜÙùÄ.îÍ>#¶8 55Åwî\œ5k…‹‹;Çq÷î]á8ÎFÓ"¼Z _²N¶¶6æç§vu=éׯÿÔ© nnƒˆ¨««£¨è‡††JF«Õ:Ï™“¨Ñh.]Ú×ÖÖ¤Õ:9;»Lžü’§§Ÿa?Ož´\½z¼½½Y£Ñ†…-<8Àä®;:Z]]=‰H£Ñ ä/×Ozú—z½N¸M–ccßJKÛòÒKQZÚ–±cŸ}𠸣£uòäù~~ã‰èñãúÜÜà ùú޽};ëÅ7ѽ{WîÞÍ!ÒhµÚ˜˜urc“L–ŠŠzÿAüòÞ½çѨQ>+WÆîØqlëÖ#_|‘¸uë~…åËçœ>}½¨¨20pÈë¯ÿaÛ¶§íuu¶mKŠ¿lYÔçŸÿ@DË—Ggg—¤§ßŒŽž°|yô?þ!ÛHDnn.ï¼óÂÅ‹%YYÅrãpW]]³&#cWgg{¿~®DÔÚÚ›{ˆãÈÇgŒ°¦dcZÚ–à਺º;cÆD $>¿âÉT9½’$/E‹‹û¤I/œàCPye9S+*òÇŸ[Q‘ÞÔTÅ·K^½ii[&Lˆ¯®¾ÙÑñxâÄ?>zôàÁƒ’ŽŽÇ“&Í÷ógÞ$ψ@ò%fxòóS•‡ÔÝù¿s'sâÄç]\܉H£ÑÍàÛ%MòU&wåð/L":yrÿÒã _α±oYrÁµB°°0mĈgFšV^žwýzÚÌ™&¢Â“®®Ÿ}ö"êìlã2<óÌŸ\]QSSUAÁ‰èè7ßÏÉààÙ>>cš›k®^=ÎÿôV6zô¬ôô/}|‚}|ÆŒñ ÿSNÜOlì[†w rw nnƒbbÖ64T\½zŒ?=……ß=+00¼²òÇqüj7ožŽ‹{×ÅŽ³³Mal&ï°† ñHLœëáá¦×ëýü‹W ðõõLH˜EDîîý…ö¼¼;DtåÊí¥K#ù–ÿÝ»ÏÑåËe‹ÏVh$¢õë_>y2//ïg5㬭½íééÛ¿¿‡Ÿßøªª£FMã§%(hf`àÔŠŠ«Â´H6Ñ€CBCçQnî!ñùO¦Êé•$y)òôô{üø¡Ê•% >éÂ…ÝãÆ=[]}cΜ7…wrWo¿~îÑÑo66Þ¿xqï”)/ñËùùGùÄ1c ’gD ÷ÎB~~ªòº;ÿÍÍ.n—;4ÉW™ä•#ÇèålÉCÖ ÁúúòˆˆED0¥¨èG¾ñÁƒâøø¿ðËýú¹ñ mmùù©5mKËC£~jkï<~\óæ)"êìlW³ëqãþV[{ûîÝœººŸ§N]h^?¼€€ÉDäåØÖÖÌ·44”O›¶˜ˆ† ›xíÚ¿ùFŸàk×þ0Åß_ééžd²z×Ô4ñˉ‰qÿüçO¥¥5ýû;ÿío«Ä+k4ôÉ''ÚÛ;Ô‚ä%dÔXZZ=eʨüü»ü§œÔ÷ï_>| L¾uë ÿ’«¯¿ÇŸñáÃ'<Ý\²‘ÿ'¿ y^Ä“©rz%I^ŠVYYàäÔÏË+°¨èÇÁƒG8;»írW݈SˆhðཾkøðÉür[[“Ùc<#¹—˜pLÉ’ù7$whâW™Ü•£’…îég‚ùù©áá¯z{Ôé:øá‹WˆŠzÃÙ¹¿¸]Á€ÞxL9}ú¯–ôCDZ­0!â,ùíÇ´iKêëË+*®–—çΞý¿äzßayx¸.^yþüÓßbwssill%¢èèßžìtué\\œ;:ºˆ¨°°266ôǯQP¯ðL0""8+«xúô1¥¥5|KYYõ´i£33‹gÌSR¢ÔHDf-_½reìW_ç8¥;Á®®ŽJêëË‹‹ÏQ{û#þq˜álHN‘!äŸñdªœ^ó47?0`ˆ…ŒqáÂÿ™3'Ѩ]òª.*F«Õ:ýÚlú~G’üyJî%fx”‡ÔÝù8Я±±ÊÛ{¤ÊCz•I_Nü³E½^§|{hácG¤ÞÞ£ª«‹ˆ¨ªªpÈQ|£¿ÿ„²² ü²p›ÚÙÙÎß«——çŠûñõ ¹wïi{cã}5»®­½Í/>ž7.Œ‹›tð`ßòÍ7YÑÑ’“Í™3áÀL…FÞôzýбÒ`uu‘OH|üûññ‰ÿKppäýûDäí=ò×3þÛŸ%I6’³Ôšä•ãî>¸±±’ˆª«%.'×°% ™}'(Üsùú†„…½2yòüüüÔ;w²ûóoH‰hÒ¤ùEE?œ;÷…VëääÔ/*jµF£ }þ⏸ ðõ+þühòä—®_?qþ|Š^¯sw÷š5ë5“#¹wïraá÷Z­“Vëþ'…~‚‚fœ?Ÿâììû–á²rÿ“&ÍÏË;üóÏÙC‡;9=®«Wvv¶q'>¯°­p‡õöÛ»%WÈ̼•™y‹_>~ü ¿pôhÎÑ£9üòãÇí;wž2ÚŠïíøñˆuuÍ|ÜhMÉF~sŽ£}û2ŒÆ)vÿ~Á¨Q3„>)/ïÈØ±±“&ý17÷ðÏ?_:4H8’†$Ï‹x2UN¯$ÉK‘ˆÒÓ¿Ôh4väÈiÂGÃr+›ÇŒ«×Œ1È¡Eù%¦Fwçßß‚N×yéÒWÇéõº¡Cƒùýª?4É+gâÄçóòޏ¸¸ûùˆáKØ’ †ð·Ãjð¿UP]}óÎ,ñ; #øÛa›ÂßÛ—£Ç$üí°u\¼¸÷ܹ/Š‹ÏNšôÇnmØ[þ£·ŒÀzý/K÷€¨¨7ÌÛ°·üMno'€-àNІá[ûØ÷ Xž Zž Úž Ú—£Ç$<0ÁÄ`¯®i½÷6P€“}ÉûïÇ+§œéFúÀ«ºg˜‚·ÃÐgñUd•!€iA`B˜†¦!€iA`B˜†¦™ÿUZj~ ‘ˆ† ›fz%;±èûOœØ¥¼Â§ŸžÁß`€#³ôí0'ïÝwÿ.·UJÊÃ~ñÅÓï¬ß°A©ÑVFfl»`Ew©’}ª'µ]6WI˜Uù²ðÀ-†$ Ïcw ŽÆ&Ï5ͦM›ÌØpûöT³wjƶó燛½»£ÕÚó¹­0«ö+å“k£±õŠË,gý¯×çëBmÚ´é½÷>ëî¶))køZh¾¾ƒÖ®GÄ]¿^ñüóaÿñ{ø^x!<"bôÀnf^»vÏ’m“’œœœøÊ–[·úquí·dIdp°ŸNÇuvv}üñqŽãÞ{ïE//NÿäIÇþý*+ë wíéé¾jÕ³^^t:nß¾ ¾:pJÊš´´Ü°° Wa´>>žëÖÍ#ÒU ›Kvž’²æÔ©‚ NºvùòÓ²¢*7š93d×®ÓD4l˜×›oÆmÝz$6vb\Ü$Žãt:ý¶m¿eJ|üww—'rçÎôòËÓׯßëä¤Ý¾ýÏ|ðµ^Ïñ³*ž+…¡p8'Ž âvî<][Û,×8tèÀÕ«ãÜÜúµµuìÙsöáÃÓ+žU£±¥¤¬9v,'"b´‡‡Û¡CGŒð 9p Û™åêO–Q·r³}€•CO@åJÉ<þòâiµÆõô–-‹:{¶0+«xöìq†ÿõÑ£Ö;ŽŽã·jÕŒ^{ÝÝvëÖ#_|‘h¼åËç46¶nÞ|˜ãhÀ€þü±ìÝ{¾±ñ1å³reìŽÇŒ69}úzQQe`à×_ÿömOû¬¯oÙ¾=Õp´Ë–EýôÓÌÌ⨨ñÂØä:ð )5õ’Ñ¡©Ù¼  |É’H×––ö˜˜ ·ˆ(!aæÆ=j0àwÕÁKJª—,‰$Ê7nXmmS@€·««KyyP™ˆÄs¥p"䧦¦15õRTÔøeË¢>ÿü¹ÆåË£³³KÒÓoFGOX¾<úÿøÁèͪxl--Ovì8ä»~ý‚ýû/ðË«WÏåCPåÉ2êVnö °Bòï|7mÚÄ/¨I@úýÍ—øñÖ˜1þüL^Þ×_ÿ­¦*OtçÎ//¹ž-Ù–ˆÂ‚6lØÏÄãÇOøÆ!C<çzx¸éõz?¿ÁF›„†øúz&$Ì""w÷ß^$â=†„ Û½û ]¹r{åÊåί\¹m´#•›ëõúììÒÈÈq?ýt#""xË–ÃDTTtåÊgsrÊ®]»kØgeåCÿAýú9ùú>{¶pìØánn.%%&ŠX+L¦ÜáäåÝáG¾ti¤BcHˆ?Œ—/—-^<»[»æåä”ѽ{¿8;;]¾\Æ/{{?]YýÉ2$7{ÐX!7oÞ,,$'[¹ø€Q¢vvêøF5E¥-ÙÖHbbÜ?ÿùSiiMÿþÎûÛ*£ÿªÑÐ'Ÿœhoï0j—Ú£ÄO¹ÎŸ<é­«vóŒŒ[ï¾;¿©©õÖ­û­­D´kשÿÈÈñ11¡Ÿ~úÝo=rÜÝ»µQQãkjJJª.œåîî’šš£02‡fâpºKÉó(¬ ×뻺ôF+wçdýFnö °ÂCwŽã’““ù(4ïó±Û·L:šˆ""FÛnÛ®.‹‹ñ«W~á…pþ• ¼÷qssill%¢èèPq?……•±±OÛƒ‚|öXVVLDÓ§•;7o󆆖ººG ³ø÷ÂD4dÈÀÒÒš#G²GjÔmIIõüùáÅÅÕµµÍ>>žÃ†yUTÔ­#9W’äGyiiBcYYõ´i£‰hÆŒ1%%5¤‚ú±QwN–a· ³½už òï…5fÜbÉ8x0kíÚøøøÉ7oÞïèÐÙhÛsçŠ>úhÑ“'†ïÍÈZº429y‰N§ïèèúŸÿ9ÎqÜ·ß^Z¿~Á£Gí……å†Ëxû÷_X±"&9y‘““S]]ógŸ}¯8¶çââ&W ý(wnöæÙÙ%>>Ónß~š#«VÍuwwÑj5GŽdu[RR½hÑlþ-pUUCcãcñ0$çJ’Üx||<7n\H¤Ù¹ó”Bã7ßd%&Î7oJ[[çž=g•÷ÕݱQwN–a· ³½éBKr¿íÌ—gTxøÞ{Ÿ=Ùì_–vrÒêtúˆˆÑÏ=öñÇÇ{lÛ>cɒȇ9Shï|¼k²ÀŠø˜²´Ð’23~F¥ÿú¯¸j4ô¯ëÉmû†ääEííÇ_¶÷@Ew‚qqKMî6öbÛ;Áaæ!à ·ÃWiÓ‚À4„ 0 !LCÓ‚À4„ 0 …–€i(´Ls¬BKÝ•’²fãÆ„~øá«sæLP^ÙdÝœ””5II II‹¶lY2cFˆäPÍ£¾dŠûô0ë×!"F“œœLäm‹Îð_îááúÖ[Ïq™™ÅrkΟþÝw&ÞÂóßÅäããùᇯò_JljvÝÝ5À*«Ð’¸œdY±––öÇ/¾öZ,‚âZ?Fus”»uww©«{dØâââ¼nݼ[·ªN*%K)‰ë©ßµÑš’‹$ËH¡ €ÙìVhI’¸œ\Y±ŠŠzÿAü²¸ÖQݹn“’œ† ø×¿žzvssyç.^,ÉÊ2¾Í—R× R¹kÕ3’¬X$YF e€Ìf¯BKÒëˆËÙÈ•ÅQ¦\I¡[>€žy&(!aö'Ÿü›o\¿þå“'óòò~÷#UJÉD õG$y’e¤PÀlö)´ÔÞÞåêê»éßß¹££‹o—³‘+‹#è]SÓÄ/›¬õ£ÜmaaybbœðÏÒÒê)SFåçßç»Bu¹ŸêHù( ûG ³Ù§ÐÒ­[÷£¢ÆñËQQŠŠîóËâr6*Ëâxx¸.^yþü þŸ’µ~ ëæ(wìW_ß"üóàÁ¬ŽŽ®•+cÕÔP‘¬¤~׆kJ…d)”0›} -}óÍ…+bcb&QmmóW_¥óíâr6&Ëâ$%%p§Óq7…†%kýÖÍ‘ë6))?Н¿N7ÜË^{-fÅŠØ}ûÒ•ßîKÖ R³kñš’G!YF e€Ì清–@ÊH¨Ô» -”‘°"‹BðÓOÏXk žð±5X…–€iø*-`B˜†¦!€iA`B˜†¦¡Ð0 …–€iö)´DD#Gݹs-ÿ­PVa²D‘ª™]%jÆ…ÝÝÄì}Y—UŠOI²éžÖî‚' z »=œ={ìµk÷fÍk­çÏ·p3Ö´Äöí(Ò£,9­8Y}˜MªÍ™¤Õj""‚wì8ºaÃBw÷þ­­OH¦n‘yÅŒ,)´d´¦x_Däãã¹nÝ<"MQQ¥°¡x§ááA3g†ð߆?l˜×›oÆ õCøC{ûíÝrÇ(°Ê¾xññSÜÝ]NœÈ;wÒË/O_¿~¯““vûö?ðÁ×z='9' %Y|Ja„rG*y€†³tìXNDÄh·C‡.Žá6rà@·2 Ê%/ÉV"zá…ðˆˆÑºÍùŸþ4½££ëûï¯ÑÔ©A3f„ìÚuZ8Yâ QžUÔÀr|ö Á‰GÜ¿_ßÔÔZPpwúôàôô›|»¸n‘d£ÉbFfZ"Qµ#ñ¾ˆhÙ²¨Ÿ~º‘™Y5^¨v$ÞiAAù’%‘®--í1122nÉMˆä󬸯’’ê%K"‰rÇV[ÛàíêêR^^Çc«äœÈM”Bñ)¹Ê©äjiy²cDZ  ßõëìß_^½z.‚’'H¼#£ÓJDµîØqT<ç—.•­[7Á™3Çfg—F!8{öX¾ªoNÎíW_!„ ¸n‘d£ÉbFfZ“ÜWHÈ0¾ñÊ•Û+WÆÈíT¯×gg—FFŽûé§Á[¶–Û‹ä[}_••ýýõëçäë;øìÙ±c‡»¹¹””T)̉ÜD)Ÿ’¡Ü‘J ¡œœR"ºwïgg'þ²¹wïooƒÂ”*¯PSÓØÕ¥1»®®eÌ¿={~÷}qâ QžUÔÀr|vAW×~aa£BBü_ye ì>tè@¾Î¯dÝ"3ŠYXhIÒï÷%±cÉfdÜz÷ÝùMM­·nÝom•ÝÂ1Zq_Çݽ[5¾¦¦¡¤¤jáÂYîî.©©9ü•œ¹‰R(>¥0B™#5QžPØD¯×wuéE› G'½•\Ñ…rrÊfÎ ©©i*((ç÷(Oˆò¬¢–ã³Ã#£ +>ø`ÿ† û7lØútAw?1YÌÈÂBK†kJ¬&""˜ˆ¦O#l%¹Ó††–ººG ³Þ ›:Xó÷•œ¼Ø¨·’’êùóË‹«kk›}|<‡ 󪨨ãÿ“äœÈM”Qñ)ñŽ$G¨þÕ“;Ü Îš5N( GD¹¹wãÓÒòÔ÷`²˜‘Ù…–ÄkJîëàÁ¬µkŸ‹‹›\\\%ô/¹S"ÊÎ.ññ™vû¶ÒëSÙûrwïïädüC®¤¤zÑ¢Ùü›µªª†ÆÆÇÂæ’s¢0QBñ©ÔÔKâÉPåª'y‚$žVå>kùù *-­6úO’¢0«¨åøPhÉæ–,‰|øðÑ™3…=¼¯)SFúù :}úº­wÚc;è.Z²¿ääEííÇ_îù}]¿^~½Gr©Çv` (´d[›7Û'÷Ðg Ð0 _¥LCÓ‚À4„ 0 !LCÓ‚À4Z¦¡Ð0­ïZ2ÉAªÙZ—2{w¨3%†:SvÑw -Ù‹VëXÏUÍ. dÆhµZ³w‡ÒE= u¦ä8V¡¥S§ &NAÄíÜyº¶¶Y®Q²úOw‹øHV&’ìY®fЩS&œ:uÍÍ­¿\1•e€ 7Q_¢H®ñí·wKV ’›7…1yì«WÇÉU ""…2C¨3…:S± -ÕÔ4¦¦^ŠŠ¿lYÔçŸÿ ×(Wý§[E|$+Iö,W3èÁƒ¦ÔÔKDô÷¿¯’+¦£² á&êK)ô#Y-HnÞÄ䱯^÷ë‘Jt®²ÌêL¡Î”9V¡¥¼¼;DtåÊí¥K#…•ÅrÕºUÄG²2‘dÏr5ƒ®\¹Í/(Ó1£ úE ýHV ’›7…1yìÉÎU–B)B)ûq¬BK*ÉUÿénqe"Éžåj=yÒÉ/¨)¦£¾ PwJu¯Zܼ)ˆÉcHv®²ÌêL)@)[s¬BKBÁÒÒƒõ•Ë$R.â#®L$ٳɚA ÅtÔ—¨/Q¤L\-È伉Dý`$;·¼ÌêL™Úu¦,åX…–||<7n\H¤Ù¹ó”°‚¸Q¹L’!“E|Œª Iöl²fB1õe€êK)W 29oâQ?ÉÎ-/3„:SÊPgÊrThIøÊd£õd$°5Ô™#(´dBOVA[C)0Z’¼ã³ém *õ%8›`Z¦9ÖŸ|ô0„ 0 !LC–\ ÉIDATÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4„ 0 !LCÓ‚À4g“kTWçöÀ8ìÂD¾ÿ~|ÏŒÀ.4k×î´÷ìÏ€iA`B˜†¦™øt844¤gÆ` ￯üñ¯éß¼y³Ìzãè9j~Ío‡€iA`B˜†¦!€i¦?0OJÊšû÷ë‰8ŽKO¿™™yËÞ#€Ú¶íyx¸¾õÖsD\ff±½G` !6×ÒÒ~øðÅ×^‹åCpèЫWǹ¹õkkëØ³çìÇ-D”’²&--7,,ÈÃÃõàÁÌk×î‘§§ûªUÏzy Ðé¸}û2îÞýÅÎG}ž BO¨¨¨÷÷Ä//_]²yó·YY%Ë—G ëÔ×·lßžºgÏ™E‹fÿºæœÓ§¯oÞüíÞ½çV¬ˆ±Ã¸¸„žâ¿{÷"º|¹lñâÙBûåË·‰èÎ^^|Khh€¯¯gBÂ,"rwïoÁB߇„žè]SÓdÔÈq¿ûgg§ŽoÔhž¶h4ôÉ''ÚÛ;zbˆÀ*¼›óðp]¼8òüùü?Ëʪ§MMD3fŒ))©Qذ°°266”_ òµõ8M¸JJJà8N§ã22n  óMVbâÜyó¦´µuîÙsVaóýû/¬X“œ¼ÈÉÉ©®®ù³Ï¾ï‘Q[LÔ Á·È@/U]{âÄ.å”ÃÛa`B˜†¦!€iA`šé_‘Qó%ý½”‰|ÿýøž€]˜ø=A€¾ Ï€iA`B˜†¦!€iA`B˜†¦!€iÎ §í=»ÑpF%¿Xâ|øða«wzøðáC‡Ù¢g`“íRÏ€iA`B˜†¦!€iÿ*ï”.» YtIMEÕ  Û{vOIEND®B`‚jpilot-1.8.2/docs/jpilot-expense.png0000664000175000017500000007603412320101153014350 00000000000000‰PNG  IHDR;þ™š¬gAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœìÝ\TUÞ8ðÏÀˆWíš#븎:Ö`£N9!­XÓFBŠ›®¤ø£-MŸïÃ$kV–láÃhÃç!Ÿ¥¤–}À"%mÔÆšl”1G½ÆÍ.za¾¹MÃ3ÃðCü¼_½ìr¸÷Üs‡øÜÏ9÷ѧŸ~ =öÈ#ø¤„B¡^å³ ¥çµ<ýôÓ>©!„B¨Wù*hyúé§ý|Ñ„B¡[ †P!„Bà !„BÈcB!„By C(„B!‰]–Úíö.މD½Ó„Ѐ@~à'Ý;._=|Iø:ûœvVî:„B ]ü-wDvðÉßø.*Î+|·cIgíì:éƒè „nv»ÝñÃÞER ;òº‰ÚC|àfˆ`·Û]þN!¿wD"QÇï:ž‚lw,élè./ŽB>Ññ¯ë;½N³Pý2Åße J%:îïô›Áé6®³ ÝÜß#ÓW.ZN…îç™÷ì¸ÝEcBŸÓmžPèrgÌB!„ºÒY”à~ÖÊ Âé<íAsL_9ÕYBËWWá2“çiz!48}`»øüâX(„nEîÜ`Á¯ã'rsæ]Z¥ã±=©Í#nž£„§0„BhðëØ×÷C£È» %dÔÝl°cdææ€P„räþ° ¡ünÞ‹ËÁæÝí€ý2"„nFN÷x]ßÅáX(„P7œž¡s¹ËÑ»ê:Ëu¶ϹùLŸ§ÆÌBƒL {—Ÿ÷N³PøÛ!ärXwgeÐÝÄtNu:•8×1¦éŸuYÕÙ‰º­ÍS.Gq¹_ˆà\þÂq¹§ë “Þ Vº} Åe%]ìæE ]ÿr3æNÛÜ9;gq¿!40yú‹ÇB!4¨tL„ôWKnvøJ"„º†!Bƒ þ¥÷|%B]Ãáä!„Bà !„BÈcbxúé§}R—¯êA!„êU´ „BõÑÖ­{ú» !„B7“uëæŠàäIS·!„BèæÐÔT8œ!„BÈ B!„By C(„B!a…B!ä1 ¡B!„<Ö}•“³2--–ü<.%ePÞóÓ¯[§›1c’ð¥BôÊ+‹@8Kï!×µqã“/¾¸@¡¯®¨Ú‰B!8ýAß¶m…û;»Ï­e†32v Û'O–zw&—h˜9SYW÷ ùræLå°i“/ÏÒr]Ó¦ýö å•/jè›v"„Bh ñ¸#¯c°6rdàsÏÍ߸1.55–¤sÜwøð·S¦üføð¡àç'Òh&‘J8KÇÊçÎöØc3ࡇî~ë­e"ˆÅ~¯¿¾ÄÏÏËeÕOž´ìì…Ð5(è¶ÔÔØÔÔ?~ŸP(왓³R§ MIY°iÓî¹g) ŸšžþäÆq©©˜¬B!„úY×KNÎÊ f’¿õcÆŒtYƒ#·²Pii±dã¯u‘tY¼øªª¯Oœ°Œ?zÙ²ˆÌÌ]÷é Ç]?~üÌŒ“öî=,¿páG›­¹ëÊš.œPwçc/\¸2nÜíp挭­Íîþy͘1ÙjeºÝ->~ögŸöï?¥ÕÞé2\»t‰Ý´©tòä;"ŽýbcïOM-nnæHŒˆB¡¾!„. üÕî6b±Z™ÒÒ³gß?ûw*º>…Çy ;=ŽôúÆùóïÝ»÷äÌ™SôúÆn+·X.Êd· âDö™aÊ”ß ÐÐpÎÓó@ZZ¬ŸŸËþ¼}ûÝîlB!„¼ÐmÄ: 4šÉÖnkóAjÇŽš%KælÜçïïo³ýøöÛÿò´½¾qîÜiŸ|rÄÍÊšââ´¤óîÜ¹Ë ó“ס\*)ѯX1—e¹¯¿þN¨yçÎý«VÍ;W}òäÙk×ZÝ©'!á¡ÀÀ??Ñ®]z6!„B^è6b3fdjêQ^^e·µ‰¶nÝsò¤©wš:Øøûûµ¶¶…†N|øá鯽öQ7!„B>““³ò™gÞugϦ¦ºÝ»ó»ÏBåå­rürõê|/›æFå½twNíÎ_xA7|8%Aaauo5 !„B=Ó1ºè¸³P!„B Y(\#!„BÈcB!„By C(„B!‰ ©©®¿›B!„B!„5ѪUyýÝ„B¡› Ž…B!„ò†P!„Bà !„BÈcB!„By C(„B!a…B!ä1 ¡B!„<†!B!„Ç0„B!„ò†P!„Bà !„BÈcB!„ByLÜß ¸U+û» h[·nîÖ­{ú»ѺusM ÇKvbí¯Æ ø~ó¾\7…uëæ®Z•çþþBõ“'MýÝ4h55Õ‘ |›9^'øBõ¾ß<‚/×M¡³ß]èíªÎb±X­V«ÕJQMÓ2™L.—Ìèåó"„Bõ¢^ ¡ŠŠÖq×å.䉉‰N!$ ·AcÇâ‡!„:‡PÏt,”J¥4M3 Ãq˲¿Þ¿  ::Z.Ü·-Aè&¹³ý!4ðù,„r žÔjµR©¤(J,SÅó<)g†a‹Åb6›…ÂŠŠ €ŠÄÄ_5!„B¨Wù „âù………—QQQr¹\*•²,KºóÈ¿EEEE…„„(•J(//ß¼y³Íf3™Lä»ÏÄÄÄH¥ózÞ$„B¡^ÕÓª¶6¯¾¾žl‡„„h4<ñÛÃV!4(åå­Z½:¿¿[¼‘“³òìÙKöÖVûÞ½'¿üÒØõÎÏ<óngßÕéf”—{üèР¡ÑLž7ï??‘¿¿ÿ©Sg‹‹¿´Ûû»MXNÎÊ£G͹¹•äËmÛV<ûì{=¬ðܹK~~¢ÖÖ¶;j¾ùæ_4Óµž·¶·õ(„rŒŸbbbT*Ã0<Ï[­V𦣢¢Hœ,ËREö$±˲*• (ŠR©T6›Íb±H¥R£Ñ° £(„œäå­Œ¢nf™™»@"¡Ö¬yÀþå—§¼«gþü[6„ºçÅÃO{ûíO››9??Qxx°H$²c Õ¥ñã¥'}û­ÏbŒŒ]0uª|éÒð—_.ñUµàçç×ÖÖæÃ {›÷!Ïâ§øøx…BÁ²¬Íf³Ùlk×®Õh4b±˜¤£€ÄOb±ôz}YY™Ùlæ8Žã8žçyž§iš$®hš6™L4ýJõ”GíqÿÖd ÝÃùö.A£™ôàƒSß|³œ|ùÜs<ب×7vÛ†.îzQ¿#ñ“°í~EnÉö™3·o¯vÚAx¿¥¤,Ø´©:ÿ€ôûGLháMe¹?üê©§ÂI5rd`Bƒ£F omµí3›õw®ãwÓÒbýýýÓÒb #cWׇ>óæMÿðC}s3mmöêê¤\*±|yä°aC~þùÚ{ï}vñ" 99+++M*°çåU]¸ðcHˆâþû•ùùU0vì¨ÄÄH n\»`ÁÌ7ßÜíXØñ3wî´ÀÀ€Ý»ëzèîÇÓ¬_¿ÝßßoÓ¦?$'ÐÖæâ£ÞÐpN*ÙYm@QC.œ5iÒ­­öë×ù×^ûÈn·wñ“R©ÆUV5›/¬^ :qÂÒû¯MOyB ãŸâããe2Ò$0rŒœxž/**ªªª"a)¤(*""¢¼¼œìLâ-¹\^SSãQåÑ­IoÜÃõ0vöá]Bmí73gÞ9{ö]û÷Ÿºÿ~%t?ùùá:?šcü$”¸E¹ùGBˆN\~@ÂGlÄOÄ÷ß_’Én#Û‹?PUõõ‰–ñãG/[A2U‚ŽßÍÈØµmÛ ágÚõáƒ\>ú»ï.t,_¼8L¯oØ»÷dX˜jñâ°ìì Rnµ2¥¥fϾ+>~ö;ïT;vfáÂY Ųܜ9ª}ûºêN4lüÝï¦O›öÛ¯¿>#v|ç444-\8  îÎ;Ç^¸peܸÛ)*àÌ›Ëø î½wÒÙ³—:«2ÌÕ—_þÐn‡áÇ’_ý¤ÎŸ¿RZzþüçèÏ??þå—§fϾËÏOÔ«¯LÏyB Ïßét:™Lf±X"""Ö¬Yíýt7j‹yž·X,%%%µµµ4M‹Åb¹\n³Ù´ZmLLŒL&ƒöèJ"‘ý%‰J¥*)ùK\Ü«n¶§³[“çŸdÔ(Ikk[K˵;j,–KîÜÃݶjU€ý믿ÿÝ煉{ô®cç ®ˆD"¯on|{—°cGÍüÇc§OŸüñûÞz«¼ÛÆWV%ˆW¯Ž2ÏUVs¿ñ¨·ù¼çn̘‘ïóH&Òé"|·ß?b••G—/$¹R—u†‡OŒ¼Ûn··¶¶efÞ4ÁVp𸠠‘±±3 0p¨Gßug‡[„R){÷Ý=pèéÉ'µBùáÃß@míéE‹f@[[›^ß8kÖŸ~<4tÒ+¯|Ø_ îKv;”–Œi0|/v|çX,e²Û† ñ ¢?ûÌ0eÊo† hh8ױ´´ØaÃn»møë¯—uVLŸ®HIÙAî³~ú©…vö“ª­=ݾÃX²Cmíé¥Kçøô•ð=oB(–ý‚l„……Éår2*\&“9O ‹M&SuuµÑh‹Å‰D*•šL&ŽãH‹dª`íÚµ Ã…4M€É´S©\äN“:»5Ù¾ý †ù &L³tiø«¯–¹s?û³Ï û÷ŸÒjï¢à®cg??¿ÌÌEŽ77u:øö.áòe¶²òXJJÌÇ×]¼ØÜmã`ùòÈaÃþô§y_}Õ°¿—C4ÐÀD¢8räÛòòÃ?»³û<§ˆ ß?b°|yduÆÆÞŸšZÜÜÌ >Ð#‰ñão·Z¯m‘Þxc7Ç]s¹g×ßug‡AÆb¹4a“©Ó%»µoŸñ¹çæ_¹rÕh<{õê­òº?þý¼y÷hµS„’Žï»Ýn6_˜=û.«õrCù f”–ìXùtÏ«ž??47÷ÿ\ÖÖ-§ŸTKËuá;îWÒï¼éÁ)..& …">>>==Ý)~‹Å‹¥   ¬¬ŒaŠ¢”Jå† ÒÓÓ׬Yc³ÙŠŠŠ„=É¿UUUb±˜|iµZÅb1MÓVkO—=Z²~½nãÆ'ÿøÇðqãFwÜ!8x\lìÌ´´Ø„„á7ïäÉ2rïBþ%”JÙÁƒ§àÐ!Ó”)2¡œÄÎÂÍXì:éàÁF:È]ÂOÜ/ýò÷¬cÛïöî5N™ò›;ïüË»„êêC>ûÌàNã‰õëûüsÆOƒOFÆ.ò‰Ÿ@©[Wwã•÷ÙG¬Û:Oœ8»téƒÍäk×xÀ$êÉ'g}ñÅe Kxx0ÙV(‚œvvù]žo »søàSYyôÉ'µ#FPàç'Šˆ˜JBp“©iÆŒ‰pß}“~ùÃ: 4šÉ7 /_fm¶æØØ™·H/ž ´ôÀcinü‰qùÎihhš??äÔ©¦ ~3f䨱£¾ÿÞÖY…{öF>qbPgµÕ×;o^ù›&|N;ûI L&«ðSëá%÷ïÇBét:Š¢ µÚ¹8ŽãÈà§ÜÜ\–ee2™D"‘ÉdZ­V*•’Ñåaaaåååeeer¹œ Š"=}¤ük³Ùd2™ð_·:»5Y±"òý÷?ol´*ÎÊJèx`×±³ËšÎbçÞÜøö.ô:wªÒyàMÓ¦M8rÄŒ·Ü<þ„X×uæçW*•²Y³îš3'xëÖò®/§_¤¥ÅÚíöÖVû¾}'…Çñvì¨Y²dÎÆqþþþ6Ûo¿ý/ÇC\~·ºúÄK/ŵ´\ÏÈØÕõáƒÏ‘#æ!CÄÏ?ÿˆH$ò÷÷7-ä÷Õ?þ±ÅЇ¢¢¦ýüóõ÷ÞûLØ̘‘©© Dyy•B¡^ß0f̌ӧ{z‹~s1›/|ûí¡¡É—.ß9 MqqZr[~îÜe†ù©³PÄ¿ÿ}4&æþ­[Ë]ÖV\¼Ñ¢Y7.lmm»výõìv{g?)ÁÎûW­z82R}êÔ¹®Ï>xB £ hš&Ü%&&’Ž9‰DR[[[RRBúìX–‰‰‘J¥daÀxfffbbbjjjaaaQQÉT1 C‚'R³ÅbQ(4Mn=šGnM²³+„±®{÷žlk³À0W ,,XØ™ÜÑ[U;ÿßÿ…"ˆ ª8}úü½÷Nüê«áÝí±ó—_žê,vnnòó÷xúª¥¥V­zØé.Á©mä.áÓOëÉ]Âȑú¸Kp¿ñ°sçþŋÖ. ÿŸÿùƒ¨¥ãprèÙ)rŸ·ÿ)—÷yŽÁ@øˆ \Ö9zôˆÆFë¹s—ÿú×Å^¿2½§³'^ú‰süëî´³ËïþóŸÿùσ]ì0¸ü I$»¬­¥åúÿ÷^§B—?)Ç:øáGᩈ?üÊõU ^f¡´Z­X,ÒN™™™ÉÉɵµµR©4$$„çy³Ù\[[«ÓéÈlÂÓy,ˆ„„èõúøøx2¯D"Ñét6lÈÊÊÚ²e EQÇY­V¹\n±¸õXcg·&%%Ö¯×57sÃ!žíönçÎý«VÍ;W}òäÙk×ZÉQÝÆÎðë›/Àî»÷ÅÅ5O=5gɒ𢢽E «Wç;EQÅOÂX(aRƒ®ïó? Báùˆ.ëLHx(00ÀÏO´k—ÞýÝj6nŒã¸ëã*„¼ Zµ*Ïý½åòóééé-“Ɇ!ã¾IY/))I¡PpG&ÒjµQQQ,ËJ$žç+*****l6ÉH©TªÄÄDÒÍG*Q«Õd~)ÒhµZÝQî[þþ~­­m¡¡~xºË›—.œuñbóž=†Žß VâÚ±¨[MMu-3,DQ.㧦¦ºÝ»ó·nÝs³¼Í¼ûˆy¼2¦†ãŽ…»?±Þ,/ÔÀtÓ½ßú¾\7òcò((ò, %ä„H2Iˆ{H†I.—'''“$ITTTAAAUU•R©”Ëåd˲ P( ”J¥0—9P¥RUWWSe6›CBBÈäæ}ï…tÇS"V»yÞÜ ^ErQƒfjr/>b!4 xB™ÍfJ¥¤¯d’È '±XlµZ­Vkmmmuu5Ã0r¹œì“›› $ó¤ÕjÉTRP\\\PP'ÄO<Ïggg«Õj“ñöôßÎsPGƒ&~¯>b!4 x6©™e€,Æd!ahŸÌI,oذ¡¤¤ÔjµJ¥Òjµr¹ÚÓWr¹œtÛ‘ý×®]Kb&2—Çqf³9,,L¨™”#„B 4žÅ($„Vb6€ÌBNfŠ"ÝsŽZ,–ÂÂÂúúúøøx2'˲†¦é’’’¤¤$ˆ¯ªª¢iZ.—“åb@˜, !„|¨©i-”yó—Ñ#ør 2ÞD'$EäøœEQ ÃDGG'&& s;‘IÿL&KMM-+++**JJJÊÎÎ&³qnÞ¼9>>~É’%F£Ñb±é4õz=ÉE‘Å^Èð)„n‘‘ýððÄ-hݺ¾0(áËè|¹ÏB(™Lf³Ù€,LFD‘/bbbHää8Sù† 8Ž[»vmXXXLL MÓ¹¹¹III¤¿¯°°¦i³ÙÌ0Lrrò† @¡Pc…Çý|r© |øÀNßðè¡„rÉãÊ`0°,˲¬0¢\,+ !~"Oê‘r³ÙL’RÂ𩈈½^_UU#̨ &“‰lÌ9Iqõ×Cy!„Bñ8„›Í¦T*IüD²PÉÉÉBÿã$UUU ‹U*•PIrrrMM ™Ù|íÚµdBsǾ?!f"Ç Ž {ÁQÀ·Bõ ÏB(²Z ÏódªLŽãH†IXfØf³Y,–UWW€Z­2Ld72ùSnn®F£‘Ëå%%%111ä¨òòë[ ­|yÅý{ÁQÀ·BõÏB(–½‹lAâ$µdÉaTrr²Åb‘H$r¹œL¿É²lTT8^b±8>>¾¢¢¢ºº:$$D¥RQUSSCºãããËÊÊ ""‚Lh.ÏìºU7Åm÷c¹Xæ !„B7)/ç °X,$#Åqœ-Qe2™(ŠbYÖh4 ‹â)•Jc ÓÈår–e«««×®]K&Ž–e…5‰€ÌÀI&óìÖî݃gÊA„omÝê¼ò·VÃõKKBÙÓ+ŸóhcC¨ÄÄÄ‚‚`†$¢H®ˆL¹¹¹ƒçy†axž—Éd4M“‹Ô@ I‚ŠU!!!ÙÙÙÙÙÙŽ'R(,Ë2 0Ú†:‡ëâ"„œ½™îúâÓ+Ÿëã– „/²P3 €¬L–†ƒ¾% …"++ ¬VkuuuYY™6ÓqT“X,¶X, èÕj0 äq<ÇÉ H Ša&»Ù¬Æ²4ϯ!4èïX¤¯¥ôµ˜ºFõˆ7yÑÑÑÇ1 ÃqÆDf×$)J¥ñññqqq$6–‚Š¢È“z$Þ"sA9R«ÕZ­–¬¸0Üý†å|=Ô‹ËA VÏLkéï& „-oB(¹üq€ ‘è¶lÙís1ãdÃq)¡\,J$’Í›73 óKSÚQeeeäY?£ÑƒøÉɈáÃþsÅ‚Q#%—®4o.(ýégÒÿ?i¼ì¶'mrÜy‰îAËù‹Õ‡ .J]ýä„ߌ¹v½õ§Ÿ¹ÿ*þ—ùì^·Ê¥³_üîÜ"‘H,öÿÇ'{¿¨=Þ“ª~ŸôWÇ’¸ßÍž3cªH$znÓ»nVò‡GÃw|²×ë6Ü:º~c¸|/¹,D!t3òl™aÁÚµkɼP2™Ìd2 Óq´wÛqí„rƒÁPSS«BüDb©¢¢“ÞµXüHøÑSæg3óêß.~t)ü¸úПÿšßֿޫGDDð„f5Ïo3!!!V«•¢(Q‘@ŠÌe ‘H„¡QJ¥’<¾çôüT*-//—J¥6›Íd2••}ß“Vyê>õ”Ê¿èv·5w‡kîþÏ·þ»7Ú@Bíô;—/ˆúon'…{ëNÕÄߌOÌIà 5èöÛ6$ÄÜ6"°µµýBÇ– IDATmÜ¿Ìûðêº?îü×¾/;žÅå!GN~ûÜ]õ!Ãc ½qiƒ^¯¾1•§ê^LÓÝ£ ´Úg%’íz½>$$D&“iµZ©Tš-Le0¶lÙR\\,å?effFEE‘UvöW=là"óãhzÄ—®Ü~Ûrßï’Xì?îŽÑæs?t}ÔœSŸÒ=˜’Uôc‡~@ª=nÚà0¤†k¹F6D"øÏ·þû*÷«g‹6<óÖö›ÎPCv¾õB¹¡ñÌ}Ó¦ì¯?e·;ùryÈæ‚’©“¥úâߊzå¯.Þ.ßKn¾-B |=ªL¨ÕËsÈTOZ­V©T&$$PíÄb±F£qŒŸ©Tšœœ\RRFVÖóaüuÇO?xŸ"îS×ïô6N­üíqÓw]5gÆÔe?”öÎó£[Ø‘j¢üÂ¥+Ë뎟ž?'”l c¡†£.]i€ya÷:îœÿá¿[®]î©GE"çz\t;}ÜtæïÿÜ£üíXRrç‡ ñÉ n]¿1\¾—Ü|["„òNSS]Ÿ-ûÖÓ,” &&ÃdÚi±Xhš #— HÚI"‘H¥R™LFQ”T*%˼õõþ¾j ñÁ'{“Dܧ¾t¥ùµ÷JIáöMÏÀ±?ÙX–ò·ûÔSL]µáéæÇŸRW? ­mmk7¿çÛ¦À;)+E~"ÈÞñiÇïþWñ¿’þðè¶ÔÕb±¿Õvycö?àï¥U¯®]z…½zÈ`rzÆ0wgų‹IúãÙ;>q,wyÈ Ë~?<òùý½´Š”|òE]ö‹«¸–k8"ªk.ßYÉ+ȆË÷’ËB„B>¹¨ozÀEœr“Á°<©GÓ4y"„çõRÎ0Œûów¦©©n÷îüòÿJõbjÍìW­ãý–k×{Ø„ÐôÌ´–ëÇ+{TæXþú–šþj’G‚ƒ•8 !45ÕyB‘X¢ï†“wF­^F6l¶“uî~½ÀËL`Y²‹[ëßõž¤¿â"!„òX¯„P©t^¯Öïs@!„PgòòV­^í³ÔIï†P}iJLF7!4ðÔc¦!—· |Eùà‰<„ºyi4“_|qAZZlzúÂÅ‹èø(«@§›Ñ‡íêFNÎÊ5k¾Ü¶mEOjÓh&­_¯¾|î¹G´ÚîgÏÏÉÁ5 ÐMƒÄO·{C(„Эëž{?<íí·?ÍÈØõÊ+65]uCÍŸâóøõ`Ìñã¥'u¿Ÿjk¿á8~öì»àþû• ×7v}HOZŽPë3ù$ŠêÝŽ<Š:n2™¬V+™»œ¦i™L&—Ë szõÔ!Ô­yó¦ø¡¾¹™€¶6{uõ%žþ‘Q£$­­m--×v쨱X.¥¥Åúûû§¥Å@FÆ®‘#5jxk«½¨hŸÙüݶjU€ý믿ÿÝï¦?ûì{ •ŽX¾»x‘€œœ•••ÇTªq.\‰DùùU0vì¨ÄÄÈŒŒ]n6þãk,˜ùæ›» ;6lîÜi»w×=ôÐÝ=¦Y¿~»¿¿ß¦MHNþÀq>”;jþã?;}úüãß÷Ö[åݶ¼²ò(90 @¼zu”Ñx®²òXO~õŽräûJ*ý.++‹,!Ü…‚‚g 11`åÆB·¹|ôwß]èX¾}û óL˜0féÒðW_-ËÈØµmÛ !¾Y¼øªª¯Oœ°Œ?zÙ²ˆÌÌ]?û³Ï û÷ŸÒjïôóµï¦×7ìÝ{2,LµxqXvv)?þJié??¿ÌÌE Ųܜ9ª}ûŒ)) 6mrkΰƒ÷»éÓ¦ýöë¯Ï…ÖÐдpá,€º;ï{á•qãn§¨€3glNóÉ]¾ÌVVKI‰ùøãº‹›»m9,_9lXÀŸþ4﫯öïï•õCÈ|B±ìg!©TJ¦3`†mŸÌ€((((ˆŽŽ–Ë÷aKB¨'F–¬XñD2¬­­íŽ;èŽ; ;oÌH7y²Œä“þfÙ²pR¨TÊÞ}w:dzòI­PCmíihkkÓëgͺóóχ†Nzå•««»ÙH»JKÆÆÎ4~YW´cÃ,–‹2ÙmC†øÑŸ}f˜2å7Æ44œëXauõ‰… gö™Á–ë×?ö駇þÖÍ6#4˜ø,„"Y%R©T«Õd²Ò ™£œã8–eÉŠ.‹…ì\QQP]{¡>f±\š0aŒÉdu*_±"òý÷?ol´*ÎÊJèx Ho¼±›ã®¹¬¶Ã•. [ZnÌè»oŸñ¹çæ_¹rÕh<{õªë ;süø÷óæÝã8ô»cÃìv»Ù|aö컬ÖË ç,˜PZzÐU í¿î´›¦M›p䈹ãQ z>Èó„øÉ`0ð}þÞ{'@hèDá(“©iÆŒ‰pß}“œc5¸|™µÙšccgîÛgôâJK<ö˜@ÔEÚæÏ9uªéÂ…ÇŒ9vì¨ï¿·u[s·-€;÷_»Æ/]ÞÅ“Œõ»¼¼Uÿëyµ= ¡jkó ɶZ­&ýt …bóæÍjµšçy!%nGÅ#ƒ¥BBB"""är¹X,¦iº¤¤¤¶Ö÷ Î „KGŽ˜÷ì1<ÿü#ii±/½ô¤LF“lJIÉõëu/¾¸@"*Œª®>ñÒKqdDùŽ5'mÜ÷Ê+‹~ÿû:wîÜ5-5u\~ûµk­¤ðÿئڸ1îTÅÅ_ºl†^ßðóÏ×NŸ¶@JÊ.Ál¾ðí·?C¯\6¬¡¡iÔ( é¼;wîrÇP.¹Ór(.®ikk[²£(4puNî“æ=Z#¯¶6¯¾¾žlçææªTªÂÂB©TºyófR˜žžNžÅ‹Å<Ï3 CÊIù—,œgµZ-‹X,¶Z­jµZ«}ÖýfumNÃ42BÈÙ›éù}¹Fž¿¿_kk[hèćžþÚk¹yÔÂ…³.^lÞ³ÇàTŽkä!ä©.ÖÈ2O.ã'/ÖÈó> Åó„øiÍš5‰‰‰aaa‹eË–-¤<==(ŠâyžeYš¦I,E9 ™ï€¢(…Ba2™ŒÆ¼nBõ—^Ð¥§/|üñûþ÷¿róã&N ª©ñ¦!ä>9 ˆ^„þ»øøøÔÔTà8Ž¢¨¢¢¢%K–ÔÔÔ„……€F£1›Í4MÓ4Í0 éË#½x$ÿDQ˲$®"•Èd²šš•ê©_Bõ©7ÞøØÓC^~¹¤7Z‚êÈ·Dy™…Æët:©TJÓ4 lذ¡¨¨ˆì T*I!Ïódt9A¾+l}HPEÆ›—”üÅë«B!„êUÞ„PÂssaaaJ¥Òf³ s!!!b±Øh4¯#'² í¡’€|WˆÀ8Ž“H$R©´§‡B!Ô;¼ ¡JJn¤U*!β¬c>‰çù¸¸82RÊd2I$‰DBºê„;apHA‘B2]*•VW¿Ù£‹C!„Э$2rQŸËûáäÑÑѨ&-‘Üí$•J†)((#§ü“°ŒÐ¯Çqœãz$ðêɵ!„Bè–rò¤©Ïžcõ8„FAÉd22<jkk…G5 aIM ]ud›|‹DNàKI$«ÕJfŠÂGóB!4yùDžV«¦'€ö,´?^í8LB’鯹Åbò8­ÇqœÕjU(f³Ù»"„Ð ÐÔT×ßM@¹æeEÆ69öÊ µZ-„DBßœ0‹¦0Ù:ò„,”o‘ÈÌf³©T*ò¬B݂֭›ÛßM@uÊÓêÆýEQd ¹0·SEE…Z­†öHH&“Ñ4M†“¨ˆLþDâ'§œ8ÄOÐ>šÊb±Gózv!t³Úº— E¨ïxzÓâYEºÕ¤R©ðñ<¯T*CBB¬V+Ã0$Eâ'‰Dâ8À\èìs<‘0}¹Ó R!„B7!”3 3j’‰1«ªª†qHž˜˜H˜“PÉjµò»‡B!Ôï< ¡ Øl6!ÃÄÿ‰™¶lÙ"Œm"{ŠÅâøøøÂÂB•JMÊ#""ÈüRŽ -ÇdIA94G!„òB^Þ*ÖæéX¨ä$9Df{"Û$“D¶kkkËÊÊH7œ0/9‰„233e2™°¾^RR].„MàÓ"ÏîI$öø2B!tK#ñ“£(/v³Ùld (ay²!L•-—Ë5°þð¨]II‰R©,//×ét:.))I“.ÌÀ QQQd¥aìÊC pii±dcܸÑgÏ^€ŒŒ]½zÆœœ•çÎ] â·{÷áC‡¼Ÿ>*'gå3ϼëX2o^ˆF3I$efº{:ÝŒòr\‹ \Ž‘S^ÞªÕ«ó{^§—!”Åbq\zÅiÒ—œœœ••¥V«Æ‰‹ÅâèèèÌÌLNGf*'ÃÏ—y€èèh™L†kä!„>!`Ú¶mEoON'3fä_þò„Såçç×ÖÖæuÍó燼ðÂö¶6»G‡`…¬Ž™'ŸDQ‡P‰‰9Ï@ûšÁBÄC"!aTûΉ›7oŽˆˆp Äbñ† ¢££`É’%¼P@!û( –eq Bèæ¢¸ÿ~e~~Œ;*112#cWNÎÊÊÊcS§ÊìyyU.ü#G&$<8jÔðÖV{QÑ>³ù/N`³5“mr•j\eåÑS§š:VþüóŒ%immki¹¶cGÅrI¨' @¼zu”ÑxN«BQ/¾¸€„h. Ÿy·ÝnommËÌ,MK‹õ÷÷'©¸>‹ rŸOrNy?k¥Õj•J¥ÇÑ4-:¤ÃNHJQ•””´yófN¿ží‰ä±ÈØ){‘m„eggK¥R–e­Öq=¹<„êcÇŽY¸p–DB±,7gŽjß>#)·Z™ÒÒ³gß?ûw*`ñ⪪¾>qÂ2~üèeË"H¯YJÊ‚M›JÝ9QZZ¬Xì?zôˆ·ÞÚ-ž?¥´ô¬^ýpÇÊ·oÿ‚a~€ Æ,]þê«eä¨aÃþô§y_}Õ°ÿ©ÊÊc޹4—‡ÄÆÞŸšZÜÜÌ >22võeú ¡›*::º¢¢BxÔŽaaþavr²'Ïó‰$))I¯×gff ¡Umm­B¡ÈÊÊŠŠŠ2ÑÑÑ‹E8D­VkµZ›ÍÆ0 ÀPŸ\'Bõ¶¶6½¾qÖ¬;?ÿüxhè¤W^ù”>ü ÔÖž^´h) 426v&Þø]çfüíùž{îQÄÆjßxãcRX[{º‹ÊG–¬XñD2¬­­íŽ;~Œ±~ýcŸ~zøðáo;žÅå!'Nœ]ºôÁƒMGšÝl-Bƒ7!”\þ8@EÇNÂô7ªn˜$Iaaaqqqfff\\œX,&ÉÉwU*UbbbzzºÐ-XVV6›Í`Àø !tóÙ·ÏøÜsó¯\¹j4ž½zõZg»‰DðÆ»9®ÓÜa0œY±"Rø²¥åz•¯XùþûŸ76Z‡ge%åMÓ¦M8rÄl·;ryH~~¥R)›5ë®9s‚·n-ïIûºyy³À $&泊;-Õ"Ì9NF2 ‹èq—@QTUU´Os@¾›žžíÝ|¤Sì†B7Ë—Y›­96v¦Ð‹¡¡“@£™ÜØh%%ƒ%<<˜l+AÞkÒ¤;.]rñܲËʇ `˜«ì¸óÎû¯]ã—. ‰œëqyÈèÑ#­»vé'L’žo ÀõLÑ•—·ªã=¯Öûw|LLLYY™\.—H$V«•L@íS– ƒÄ…ì”X,–J¥6›mÉ’%‰‰‰ååå2™Ìjµ®Y³†a˜âââ°°0³Ù\__o³Mèùå!„P¿ÐëÆŒ™qú´U(3fdjêQ^^%)Ù±£fÉ’97ÆùûûÛl?¾ýö¿ÀñP"‘>ø`oÇﺬ¼¤äÀúõºæfÎ`8ãôÀ]qqÍSOÍY²$¼¨èWµ¹<$!á¡ÀÀ??Ñ®]zRR]}⥗âZZ®ãˆ(4­^ï3ùd€¹hÕª<¯Öë· ¥RÉó<™}€Ìt@²SŽSóE % …Âd2‘èŠÌ)Åq™÷Üd2•”¸è’ïLSSÝîÝù§Îyðü-Bèñfz~p°ò±GeŽ…¯o©éíó.\8ëâÅæ={ äËŽs/¹#8Xyò¤÷>!t jjª‹Œ\äòƒ#DQ.ã'KxyÙ‘GhµÏªÕj‹Å"‘HÔj5EQŒ«Õ*LYN¦ wœ¤ 55•¤©(Š2ÂZ{õõõÅO!4ÐlÜ7qbPM±û]B}…DN>œà §]×Zí³4ýAMMMHHHHH˲ƒAQ.Ìó3‰‰‰Ei4šŠŠ ~‘c««›{Ø$„ê_/¿\âTâE !äs¾ Ê£ÿTª§hšÖëõ4MËåòˆˆ–eF#ÛåÊ,EUTT°,«R©xž¯¯¯¯¨¸ÐóÆ „Bõß<@!“=ó¨É´Ól6K¥R𦣣£9dÌMÓR©T&“QE6Àb±°,‹ó „Bè&âËgP•ÊEJ%Ølÿ¶Z­ ÃÐ4MÓ´ð¤8ÌEâ*›Íf2Ý8&B!„z.2rQŸË÷ÓxH¥ó¤Ò_¾´ÙþͲ¬ðŒˆÅ3Àjíäx„B!¯ôåC¬½>šT:¯·OB!ÔÇp2Y„¸ššêú» !×0„B¡jݺ¹ýÝ„P§0„B¡jëÖ=ýÝ„n!žÞ´ôbEQdz³³£££­V«Õj¥(Цi™L&—Ë`Fï!„\ࡾáE§y¯„PÏÛ퉉9½Ñ„B¡^åËŠaö””8/kR©”LgÀ0ŒÓ”å$ØŠŽŽ–Ë÷aKB!t "ɤ±cû¢§Ëg!”cæ ÔjµR©¤(Š,$,‹yž'Ó”“U‡-‹Åb!;WTTTèt:™ìQ_µ!„B· ÈÈE}Ó¶6¯¾¾^ø2::Z.—K¥R²Æ0ߎäŸxž§(J.—+ –eÍf³Á`±X\^^®ÓFQ!„øzB9ÆO&$$D*•²,ËqœD"±Z­d^r¹\®V«5B¡†a8ŽS©TR©Ôd21 C¢¨‹F³º‡­B!„êU= ¡㧘˜¥RIÖrá8ެ‘¢Ñh4  Eõ†ËÊÊ¢££†¡(J¥R‘®=¹\n08îoaaÏ÷è²B!„~-/oÕêÕù¾ªÍÏë#ã§øøx¥R <ÏFŠ¢6oÞ¼víÚ°°0ÇPŽÿ’x‹ã82ßÈd2³Ùl4~à“ËC!„€¼¼U¿>áeÊ)~’Éd6›eY•JµdÉ’°°0ò­êêjÒU÷ËùÄbQñ¡SeYš¦yž7™v*•‹z~‘!Ô­“'-«WGÀóÏ?2j”¤µµ­¥åÚŽ5Ë¥Åý÷+óó«`ìØQ‰‰‘»rrV–• (‘ ûßÿýJ.¿}úôߎ1¬¸øËcÇÎÀÈ‘ Ž5¼µÕ^T´ä·rrV~òIÝôé ‰„Ú¹óË£G¿KK‹õ÷÷OK‹€ŒŒ]n¶ÖÏO:éÕWÿ™’² 0pèÕ«-¤rïšTYyL¥WYytùòÈgžy(jÈÂ…³&Mº£µÕ~ý:ÿÚkÙíöޝŒË+êºåãÇ^µêáM›J9îÚÚµ~õUƒ^ßHÚ0uªÀž—WuáÂN ;uª©cËÃçFFÞm·Û[[Û23K]– >ÿäÈ›J˜?S¡PhµÚ˜˜¡oαŸŽa…BAF8‘t°,K†–«T*à8Ž¢¨èè芊 2ƒ”D"±ÙlR©T*•Z,¥Òg—ŠB]˜1c²ÕÊÀöí_0ÌO0a˜¥KÃ_}µìر3 Î’H(–åæÌQíÛg$‡°lË«¯–)Aë×ëvì¨!ÛË—?Dâ•Å‹¨ªúúÄ Ëøñ£—-‹È̼]ºÄnÚT:yò G~—‘±kÛ¶BðäfWÚÔ©ò³g/]¹rõØ1³F3iïÞ“=iÒùóWJKÀò呤dñâæêË/h·ÃðáCív»ËWÆå95•D‡päÈ·å凿ÿþâ¾}'/³Xl,Ëéõä»V+SZz`öì»âãg¿óN…SÃV¯~¸cËccïOM-nnæ†JöïX‚Pïñ8„’HN‘ NGÂ’="Á` &£ÑdvM“ÉT[[KÓ´F£Q*•J¥’¦i #Ÿ 55µ¼¼œÔCJl6›\.ç8Žaöàˆ(„P¯JK‹õóócÙŸ·oÿF–¬XñD2¬­­íŽ;hhkkÓëgͺóóχ†Nzå•É6Àwßý û:d"Û·ß.!ß 426v&þòýСÓðÍ7çG’tlŒ›]iZírƃO?ñÄ}Bå]“jkO;Õ?}º"%e‡ÝðÓO-¤°ã+ãÎuL­UV{áR©ÎÌüeA‹Ã‡¿!-Y´hVdž¹lù‰g—.}ðàAÓÑ£æÎJê=‡PYYYdƒ¦i†ajjj¤Ri\\‰¢***ŒFc||¼Åb¡iZ©Tò‹Å¢R©d2™ÉdÊÍ͵X,äŽã’’’Hü$‹ããã…VBúЬ¸çQ#BÈç6nŒã¸ë}t¨¿‚òÉEõÛ/V«ÚC(* tEeggéÎËÌÌ4›ÍR©T§ÓÉåòÍ›7€Åb1™Lb±X©TÆÅÅÆÇÇ“ȲÄdˆ:´7ºüB¨½ürÉk¯}ÔÒÂw¿+ò¦ PßðíQž($„f~‡‰ Èw«««#""hš¦iÚd2‘¬’B¡HNN®¯¯ˆˆˆˆˆp¬ÄaBœ½eËš¦#'Œ¢B!4ÐxóDßN€„tQyù‡H5 ´XdRM½^!—cúJ&E,á)<²ØK®!„B¨WxB‘.<Þ™¡@˜šÜb±§êt:ÏóIIIYYYeeed¨“p¬p‰œHŒÅqœF£‘H$dâpš!„B¨ ‘‘}·.œg!”B¡–eIˆÃµsŒr„D”V«eF¯×ëtº¢¢"ÚaŠL²ä0EQ6›M§Ó‘äEQ%—ËÉyd7ÀDB!„Üqò¤©Ïžcõl˜ÉBY­V…BArH¤Îq.ƒúúz2YÔÚµkF#Y Ï`0TTTDEE…„„x«¢¢¢¤¤Äh42 Ãó¼£R«Õ$)íÁÇqD!„Bh@ñ&„‚ö5ÉZÂdm`á:Žãôz=Õ¤R©jkk³²²8ŽcY¶¶¶¶¸¸Ød2­Y³†¤²X–U(õõõE‘:£¢¢ ÉYÚ³PúîzBèfÒÔT×ßM@¹æYŲw‘ ›Í&“É }08YØÚ»öjjjH•œœ\[[+‹% é¶cF*•ò‘ #¢H?Y×EPQQ±eËÒmç¸Ö´+¯¨¨ Ïîôþ²B!„z“7Y(`Ù»t:Íf#Y%›Íí!‘ÕjÕjµÐ‘ ÃæÍ›ÃÂÂt:]uuµ0''©MÈ?‘. ù§«Õj4õúë=º,„B¡_ËË[µzu¾¯jó>„­öYžÿ›ÉdR«Õ4MF²¼ÓðpG°'ÇJ"‘TUUÉd2–eM&SyySOZ…B!ä$/oø4Šò²#Oö|BÂ;õõõb±X«ÕªÕêÎötŒ«ã§ÌÌÌšš©Tj³ÙjjjÊʾïa“BÈ}Íä_\–›ž¾pñâD¢þnÛ~û[i^Þª{ïèé:Ý —å)) zÜ(„(?uÜî‰e¡‰‰9eeiEÉåò¨¨(†aHFÊq§¥Z¤Ribb¢V«¥ištÖ×כͣ}Ò„rÇ=÷(~xÚÛoÚÜÌùù‰ÂÃE"‘Ýnïú(??¿¶¶¶ŽÛ}L«rôèw3gN9rä[œ??¤¼Üù©o??¿M›J}×:„Ž1“OrQ¾ ¡ &&ª«ßä8N*•FEE‘ùÈ zdðMÓR©T&“I$š¦É¬Qdá<£q8ÆO¡>5oÞô?Ô77sÐÖf¯®>AÊsrV>óÌ»d{Û¶Ï>û)¬¬<¦R«¬<º|y¤°}êTSBƒ£F omµí3› ;òIÝôé ‰„Ú¹óË£G¿Š²pá¬I“îhmµ_¿Î¿öÚG÷Ü3áþû•ùùU0vì¨ÄÄÈŒŒ]î´ÜÏO:éÕWÿ™’² 0pèÕ«-5;<|jdäÝv»½µµ-3³4--Ößß?--22v9]9üùç5JÒÚÚÖÒrmÇŽ‹å’_s„úžÇ?9òYEDD¬£ñ†ahš¦iZ"‘e^@"‘[ÈjÄ‹…eY›mÀpß6!„Ü!—þî» îïþü•ÒÒ°|y¤°½zõÃUU_Ÿ8a?~ô²e™™7b K—ØM›J'O¾#!!‚„P‹?À0W_~ùC»†j·Û;³pá,‰„bYnÎÕ¾}Æ””îdƒ¦N•Ÿ={éÊ•«ÇŽ™5šI{÷v: Llìý©©ÅÍÍÜðáC #c×¶m+5Ç‹"%Û·Á0?À„ c–. õÕ2÷_"„n>¡•ê)²aµ~B²P ‹­V+YVO"‘pÜÝ€™'„ÐM¤¶ötÇíààqAA#ccg@`àPa‡C‡NÀ7ßœ5êÆmäô銔”¤Ÿð§ŸZ ­­M¯oœ5ëÎÏ??:é•W>¬®>îNK´Ú)‡™ààÁÓO÷Üü+W®g¯^u®Ä%Š2}ú¥Röûßß4(•Ž°Ùš]6;?¿R©”Íšuל9Á[·–w¬Íñ¢ˆ+"ßÿóÆFëС⬬wš„Ð-¨wC(„È*+>ù¤6;»BN¾wïɶ6ûÅ‹Í'>}~ÆŒÉÝ>£g0XÂÃÿïÿŽ€BDÆB¹T_ÿí¼y!}ttä‘DÔåˬÍÖ;3?›Í h0|OFPÀ‚÷Ïœ9å“O»löèÑ#­çÎ]þë_“žo _»Æ»¬† `˜«ìf“È\>‚7€†“#„ÐMçÈó!âçŸD$ùûûò8^I‰~ÅŠ¹,Ë}ýõwmmÝ< ·cGÍ’%s6nŒó÷÷·Ù~|ûíu¶gqñþE‹fmܸ°µµíÚ5þõ×?"§ÓëÆŒ™qú´Ü 5sæ_|ñK_]Ý7+VÌýä“Ã.›ðP``€ŸŸh×®SWWŸx饸––ë ]/)9°~½®¹™3Ît{ù |«Wç;EQ>`.Zµ*¯çµô¯¦¦ºÝ»óOÃÏ9BÈÙ›éùÁÁÊÇ•9¾¾¥¦¿ÚãÒÂ…³.^lÞ³ÇàT¬Í9•‰,_>mîܘ¹s'½ð£<ä¬Û¶^xø]³g_^ò«_ý$"¢ÖƒŽJ;BY,§Õ1~'"sçÎ]´hQxx¸¯¯¯ U"b6›#""BBBT”ÊL*E1BDǘ1cÔ¬óØØØ²²²'žxBDæÌ™SRRR÷VÐi™L>VëÍ"Ò£‡åÆ»VWko©>vl¨ êY°`Ó‚›ß|óÝûïïÿÀw»è)ºòóÏÛ펡Cï‘ý(PDòòζà>ÞÞ-ée@ç¡=·téRu RQqq±¿¿¿Z>Þááwåç_ý/z\\d^Þ™ùó³:i´_¼X±páæÕ«÷ÆÆFˆHZÚ¦ªªª´´MFj¹té›—_Þbœ "ÉÉ“ZYä'Ÿ\ôóû7uü‡?ü%5õ´´¬ þ:eÊp9qâ·Z,f6,èÀÂÖ?±i_~Y±gωää‰ûö|ñÅ%‰‹{ ;ûïóçgýá9ññÃ+U¹pá«… 79rÎÕu£µð<___ÕQd6›g̘±~ýz‡Ã‘žž.ß­œ©úŸŽ;–m¼v§:–DÄßß_ á­X±Âl6———ïܹSÝ|Íš5ÆËzª :­+WEEbb"ΟÿÜn¯4ÚýÞzk¯ˆ9R4yr„Ñ®:NΟ¿Ð£GÃs!®=aáÂÍN,¸gOKBÂCËÕÕÕ½{ûŠHuuu^ÞÙûïÿá{ï}v×K/mÌÉùЉOlPNÎÉǺo_ú|[¯^Ýcb†ˆH·n74VªbDUçþ›A£¡jy3v®¨¨0›ÍjHN-ød6› wîÜ©>ª0äïï¯VŠRŠˆÉdJOOw8ååå3gÎT}Nááá*9…„„¨™éЙåæ¾ðÂÄW^ÙÖà·5ߟUYY¥½¼¾ÛuOhÛo¿¥¬ì+uœ0ò÷¿ïìÙ²n0-]:U58Pø«_ýê«o ?ýæ›oöàÆÕÔÔÿ//yíµvû÷Ý`©"råJ¥×£7§&KˆˆÅbq8¹¹¹j¥rÕÿ´~ýú¥K—Úl¶òòrÿ'žx"55511ÑjµfggÇÇÇšL¦’’’œœ»Ý¤õ&Nœh³Ù,‹±‚Ùl6ÖP€Î©¸øóéÓ3ÏŸ¿P·±¨¨tР¾"2xp¿3gÊš¸Üá¨êÚÕ ›Ê7Æb1Ož|ÿ_þRÛ±tã]ËË¿‘ÈÈ`ãœ/¿¬°Ù.ÅÄ 9p Ðu•4¡  døðÚzz©ƒKšIïÿT*B¯×Õ³[´hÑúõëM&SaaaVVVPPЈ#FŒaì——•••——W^^îp8ÔŒò9sæ¨ Uj¡Î5kÖäåå©›½Yu'¤ o¿}(!ᡨ¨{._®\½z_gæäœ|ñÅØ+W*›Äœ<©e#V))1555UU5œRsÉE$+ëýÙ³£/]²ü£îûƒyygn½uйse­yb‹­[—?lÞ¼X›íë7Þx·‰R î¯ÄKkõÛ­[Sl6[HHH@@€Ýn÷õõ5–z2›Í‘‘‘‰‰‰jó`???uɱcÇÖ¯__VV¦&˜›Íæ¥K—úúú<ÿüóÏ=÷\lllyyyHHˆšb¥ò“Íf‹ŽŽöó󫨨°Xl¢ªÒÒ£;vdžþLûE_ÞâÔÌààÀqøÕm|5=·­êéÌ{ìþ/¾¸´woA[8GKúxŒ·íìv{ÝŽ¢ììlzT~:v옚`®M:UÍ…‘¹sçšL&«Õ+"QQQu׎R›‹ˆÚ–¸å¿ÐÌ›k·WnÛv¤­ œF/BY­V›ÍfŒâ©7•¢TcFFÆ‚ D$;;{Íš5ª1<<<>>^å*5ö§¾ª¨¨Poá3Fm0\oØN½ŽÇºÚ³å˧}úéE‘šªªšýûO<ØÔ\ŸèèA;wu[míÇüùYm]àdz*  °°Ðn·« Ô«v*÷¨e m6›Õj-((°Ûíþþþñññááá"’ŸŸ¿sçNµM^VVVyyytt´ÅbÉÍÍ-**2†ðÔšRªçI½÷ÇåÚ¹ 6‰ˆÅbž1c´H1+èZcdž6?B•–vưÕIôé3èú'¡}Ó‹Pj®¤¤Du)™Íf³Ù¬Ö50›ÍªG*###55uÆŒcÆŒQÓÆÇ‚ ÔåéééêÌ9sæˆHHHˆ¹SáI­¥§"”É4Ä©?\⺋t×[(¼Áõ²ëÙ±#ÓÝ?£–,Ù»oßjk±%Köž:UÔÖU µtçB Y%ßÍ‚RÝEªJõHUTTª$¤òÓš5k²³³UBR›Ã¨åȳ³³EDmŸW76©•ÊÕ±šÅT(ž¢Þ"Ýååÿ‘;ï¼uÊ”á/¿¼5-mÓ²e Ækqj½ì“'Kn¿½çSOP]Y×¾æÎweîþ×’%×YGfÖ¬QÆ1µÕ£[$¸ê@R“ÄsrrÔŒ(“É”••¥öuQ+Ì™3G©z°bcc<#33& €u¡xz‹toßž?þÆW_ÝæãÓÀBàj½lµ{Ý /¬so¥Í•™9½­KhT{®ÍàE¢e´#”ZF\DTèQÉIDìu¨•ÊGŒ1sæÌÔÔÔ­[·ª}ZæÌ™£ú¨DD½Ägt8Y,µ ”ñ ÀÀ@#“@ûלEºë.ÞàzÙíŠúÏû í¹6ƒG‰kA/TíKjµLã:£Éáp”••ˆHbbbdd¤•¢££Õ(•Œ&»Ý^7-­X±ÂÏÏÏáp”•ÝÖÊ_®–’3wî¤gž›—w¶Þ"Ý¿ûÝ$‹åcåkµP¸šQ¾n]nß¾½æÍ‹}é¥Çǯý£59yRcOIšòHä}?pGÿšZuÿÃÝð˧ýñÐþÑ#yúÔ —æ„Ú¾*¿ø³ÇGG¼'!î᯿.×mtz‘ðD-&‹ŽŽV[«¹äjŸ`µº1Í<77WM'—ïvr8FœRÓžŒ¥f̘‘““cÜ?$$$""¢¬¬Ìf³‰ü›3~&¸ÊÏþVƒíkDmÛ–¯¶l9¼eËauü¯ÙW®ÜSïª&æBýG¯Üöà Û[[qóhí]÷ôƒ#âããsà½Ý³ñäÎ÷\»yëkËXÕmt]‘ð -^Ôàî1cÆìÞ½Ûßßßb±”””X,cqc¸±ñ‹|·NfEEŪU«žþùo»~ýúˆˆ›Í–ŸŸ_RB~wÛ¾ý:ÃO^^®Z¹sëÛ»¶­ÿã–ýÎ.ªÖÈ‘7}B+jºº6CkŠ„giù’þþ‚‚Š üýýKJJ***|}}U’Ú¡ÅX8JDŠŠŠV­ZµtéÒÆ–zÚ½{whh¨Íf+,,ÌË«lqa€;wödË.üÓö o¼6ï²öõ¸ÅêÜ’ -^réÚÚzûÝv¡ìÓøßùù…ÏT'“V£+Š„ÇiáºPJdä³AAA%%%¾¾¾!!!j‘q›Í&"j5Ç…ˆÜŒÚÐñôé3¨ù'¡ ýb?5Àm–,Ù«µ? ÚµÓŸÕ´u @ÇׂÉs­Ú# s"Bh#Bh#BÀ÷Üq‡uåʤûîëë¶'FG7ë% _>-?*Ñ#%n‚œ>UÿÛ¯ÊågKôHIˆ“¯¿nª€S¡à{""ú?þñ!ýÝöıcC›sZLœ¼{@vî“_<'³QÿÛŒÅ);÷ÉýÃdÙëM5p "\åíív×ÿx oß^ݺݠ—/ŸöðÃ÷¾ðÂÄÿüϸ{ï xä‘°^˜¸paÜÀw¨¬Ö›ó› óæÅþæ7ã{ö´W·]¶,ÁhŒŽKNž´pá“÷Þ{§ˆ¤¤Äøøø¤¤Ä¤¤Ä4]ÛÈÑâã#">D>û´þ·Ù'ã7IŒ=ZlàD(¸jÀÿO?½øÕWßœ8Q~—Ñ^Qqåå—·¾õÖÞÄÄ‘/V¼üòÖÌ̽±±÷«oãâ"óòÎÌŸŸuèЙ¸¸È¦qñbÅÂ…›W¯Þ!"ii›ªªªÒÒ6¥¥m‘ääI×-ò¿WȨ‡ë7^(•Þ~""½zË…²¦8 ®ŠˆèäH‘ˆ>|."âêXÞáÃgEäã?7™|Ô üù-·Ôv8ú>|NDŽ)êß߯éG9rNDΟ¿Ð£‡åÚo.ÜÜôå;·Ê®m’<¿ù¿ €K°´&Ô2›» xg` ßøñƒEÄ×·›Õz³ÍvID*+«D¤¦Fª««ŽjuìåUÿ55uk¼½½ª«kL&o¯:§·ºöòëúÓvyã5ùŸ,éqKý¯zûÉ…2ù¿|~¡¶ç©±FNA/Ô ë[PðÉœ9ë’“×%'¯ËÎ>ÑÌIåEE¥ƒõ‘Áƒû9S;`öÅ—úöí%"ƒõk:-9U]»^ÿ/´ïn—×_–߯¿> |;ì!Ù±EDdÇf>²©FNA„€ZC†ü0?ÿœññèÑóÍŒPo¿}(22hÞ¼ØZ¿þ jÌÊÊKH•œ<©W¯îÕÕMmÒ’“sòÅcÕtò&æBÍž)ß^‘_üL&Dɤ1µÆÁ3ÏË_HôH9´_ž™ÝT#§ðJJZÙÖ5´ViéÑ;2ÙF Àµ§fŽ{ä{ƒX¯¦ç¶U=ZøÃ põg…Ö6ÃôBh#Bh#Bh#BhkîºPÁÁ.­ãºfÍÕf¾€®Å©™m]€h,­©5MݹJK¶Õ£  -Y²·­KÐ0V'€ökß¾ m]Љôé3¨ù'¡ ýÚ±ƒQ<ÀM–,Ù«5àF„€v¥57hÁ¤CÞÈÐæ¦^¨ÌÌéꀷê@àò•™9½¦¦fåÊ$£ÅË«#lÌ:3×ä©üäU‡ÑîÒç@ëÍš=hÐ]ÆÇ€€^/½ôxËnµlY‚“Šj¡ŒÅ ·OãÞ:€Ä…½PF~ªÛç4}z¦ˆ\ÛíÍûïŸ2$ðèÑóêã!ï¿Ö¥Oôöö®®®vÅW¾)3g×o¬rÈæÝ®xÐ)ðF4ìƒ>š=JÄëäÉãžVëÍO?=òÆ»\¾üíêÕû¾ø¢B]¾gω  Ûöì9~äȹÆêIˆ“ÒÏÄd’›,’ºHîp»œü¤ö„{äïÅ""oÿ¬ýoñò–.&Ùòg™%••2!JDd[¶ ¸]~6]þš+ ?—_Ϭ½¼Á›h f·W~øá? ºkÿþSÁÁþÿüç×6Û¥éÓGggÿýäÉ’ÛoïùÔS#,ؤN¾x±báÂÍýúõž:u„ŠPO<1ô½÷>j´¯JDäáò»Ù2n’Œz¸á~2¾å7 ¸*B© ãjþøµ“Çv¦ChÏNž,yê©ûôérûúõEÄËK^{m‡Ýþm½3++«D¤¦F¾{mFDšZ³æû_^¹RyÝbfÿR^}C‡ÈåodPPm£—·TU‰TVJõw÷ü¿™rô°lÞ ÖÊÞiàVÝnjÖÍ4Á…oäÕ\ë NQ]]säȹ„„‡Îœ)ýæ›+"RPP2|xíD¡€€^M\[TTv—ˆ„‡÷«ÓX:hP_<¸ß™3eZÅ\úZzõyçWoó—ywûÕXöé'>D~û¢|x¢¶¥ë rù²öÍ4Á…ysæÌqÝÍÀ=òòÎŽuÏ®]S×­Ë6o^¬Íöõo¼ÛØ…6JJ=rdÈéÓŸU×AôöÛ‡ŠŠºçòåÊÕ«÷]{Us¡~û¢üG¬ÜÒS%>ßýýwÎ<ù?¿·ÈC£¯6þöYùúk©®’ߤԶ<ù”Œ%ݺ}oFÔuo  Í]Y 88Pkï=µ¢Áœ9s-Ztí·ª½ùë”–ݱ#³±“Õ·l#àZ‹S3ƒƒÇ=âW·ñÕôܶªG ¸n£þ¬ÐŠ:.ü»FÓ½PôQÏåÂÕ`ÿS3¿hÏ\>ª±Þ&z¡€çra„ºn?Ó+¯¼âº§¸Ž #”WÕQ-³85³­KÐWE(ÖÌ€Ö[²do[— alðí×¾}Úº éÓgPóO&B@ûµc£x€›,Y²Wk]("´k,­ ¸A &jD¨ÒÒ£ºwèš¡fÍåÒ:=RRbš¸íªÿ’9óä–ž"">>òäTññp»ˆÈ„(©¬” Q2!J²w˳Ók¯*:#¢\ôCN ³8wödàÿÝ ò÷ïùñÇÿlìÛ´´MUUUii›ÒÒ68ñ€€[-³ˆ tà@¡1Øw­Â“ro£Ý–-]ºÈ¶lÙ–-EÉßÉ—EDÞù£<öÓÖü #BèÜ–Ÿ´TWWçå½ÿþšL>aaw>|Öìk “Lˆ•-ïÈ·ßÊÿî”qMõmh!"€Î¢è̇Eg>tÃJJ.Þyç­Í<ùÀ¡Cï ë[Xøé7ß|ÛÄ™wKÁñæÖðØOeóùß]rÿ0éÞ½¹Wh>"8Ùž=Ç'Oޏùf³ˆx{{1ÀÛÛ«î GU×®µoó|ùe…Ív)&fÈ…Mß6áç²h¾\üBD¤ªJÖ­‘ªªïÐõ¹|¹ö¸ÏÄÿy-Q<ÀUx#@§ æ’Ÿ;{Ò ÏúÛߊ»t1=ûìO¼¼¼||| Kjj¾·IKNÎÉ_Œ½r¥2-m“ˆäå¹õÖAçΕ‰Hrò¤ÆÆòF»]⤺Z*+eè0ñþþß‚Ÿ|JÆ’nÝd[¶ˆÈÄXùäc ìš tzD(…šåž±¼Ã‡‹®¿_éÏþ–:زåð–-‡ö~ýz8pJ7=jÜ£2îÑú'?©=˜,³“¯¶/Çë— yˆP:…ö9\DæÍ‹µÛ+·m;âÜÛFËM2ë·Î½+€«ˆP: ÷ô?éš??˷ݹÏwpÓÉ´¡t î\@gÀ@€ÎÂÓÉhqjf[— D(B»NÞ´%Kö¶u F„ÐYx\ÿSŸ>ƒNª¿2€v‚¹PÚˆP:¦“w$wÜa]¹2é¾ûú-Ñу>>))1êã8-mS÷îݦN}°G›ªªjÖ®=P\ü¹ˆ,_>m×®£X,æ ?þ±ˆÜzk÷éÓ£D¼Nž,1žÕàå 6>`äȯ©©©ªª^° ©]zÐahL'oÃY¥¥GÛêÑ: ›NŽ àÿé§¿úê›'ŠÃÃïÚ¿ÿTZÚ¦eËÔžÍ"R÷8.îì쿟:xÿþSMœ|[¯^Ýcb†ˆH·nWÃÍ‘#çDäüù =zXTK``Ÿ·ÞÚ+"ùùç¦LÖÄå 6ž<ùé”)>\tüx±,Ú3"€NAÍ%?wöd[‚V1›» xg` ßøñƒEÄ×·›Õz³Ív©±ó½¼äµ×vØíßÖk¯¬¬‘šñò2Újšyyƒ™™{ýî¿ÿîa—,Ù©ÿËày˜N ³`:TÖ· à“9sÖ%'¯KN^—}BM*w8ªºv­í¨{\PP2|x°:èÕÄ‹ŠÊÂÂî‘ðð~Fcƒ—7ØØ³çÍgÏ–mÚ”wçVgüPxz¡t ä§ŽaÈþå/Wç´=z>!aÔ®]ääœ|ñÅØ+W*ÓÒ6Õ=^·.7>~ؼy±>>>6Û×o¼ñncwÞ°áPRÒè‘#CNŸþ¬ºº¶GªÁËlœ:õ¡nݺz{{mÚ”çâh/¼šùš[pp`‹§“wÉœnW¶è­ºÒÒ£;vd6Vªúöôg ôÁèä§fŽ{įnã«é¹mU€Ã…½PM$§U™ï$&=æºG¸”«"T—Ìéa]º|PYym·ÓªÌwª.\•™,")îÁtrÎå’uü´&[^?\=p¡ˆ¬ÊL&Ep5ªè̇³S“ÚºíÑâÔÌæŸìü7òš“ŸäÿüHµT\¸*ó§×õ0€s99B5˜ŸTHú^~zý°ñ-) €{ùÊ8‹›Ö…ªÍO"*?yŸHö>‘ìžG83#”ê‚jð«Úü$â=5ÊûDrbÒc‰I)ŠŽ(®Ö¯ÿ5£œÂù½P ΂ªË˜?^7E€«1 €¹iurï©QÆ1‹Bp?òçrG„j"0%&=¶*3Y-p.Å\rNÄ6ÃÚœß Ö¥Ë™ÓéPu·yQZ¶M@ûáò^(˜Ò{÷PÿsõãÜÀ%*¬K£óéÚ^¨ºÔ~y®¨Àuœ¡*“V~PY©ŽUŠR+EOÏ_ø²á"N°Sð$.È ëÒ%¬K—'o±¬»X!"Ï_ø’YP cpr„ªÛ%"*?=y‹ÅÈOõöΫ¸.(àqœß U7EÕËOu‘Ÿ€çrÉ@žJQ*H‘Ÿ@ÇãªÕÉUlª»@”bl'L~žËµ¼ùÉHNÒä~/ÁMÛ ›@GÂyÚˆPÚˆPÚ4æB•–u]¤¹jÖ¬Q.­Àƒ47B-Y²×¥u\´y§N¹®Ž¦1†Ú¦“h#Bh#Bh#Bhsþy}”ÕœÓúöuú£ÜÃÉꣲžyæ™æœ9~üø¤¤•Î}:€{8¿JDÆßô Û·owÅsÜÃ%JDFmÿùÏ®û•———‹ ஊPuýøÇ?vÃSÜÆUª^ÏS]ôBOçÂ^(//¯šššz©¦¦¦îÇ#—§‹Èà™W<‰ ×…Ri©æû®=Í>ÙO)OÑÆ½Pž¨í{¡D¤t²/QÀƒ¸{ƒ—°ÿðºoŠÌÛ8þ¾)BlÊUy½vwßéwŸˆ”‹ýK‡Ý.—U{édß#§3¯xWE¨ºë?Þø8oãu.hÿÜ=ׄSšÚÁU½Põ¶É3>Þ7å:ÞáÿÏ”ÜꢪœÂ%ª‰]„›È Þbé¿Àõ8—KòÞ|óÍ7ß|³Áƒë¢ ´îØf¸žÞþ›ql±Oö‘>Ë邞Â%ê™gžiì ^NÚtvnÝtAàäÕ·ol½‰äIJºº]PÀ³8¿ªn6ÒBðm¿.”yc]PÀ³´Átòº߸òÿ ]PÀ£´q„Âð@m?àqˆPÚ4òJKº®ÒÜ5kÖ(—ÖàAš¡Z¼Ú@ÇÃ\(mD(mD(mD(mÍNnwi×õ³i¿š>=³mkP4Ö…úÙ´_¹®ÒÜ•—oÎ˧@„¹P-@„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐF„ÐfjëÀݧf¶u <½PÚˆP€kùòi3fŒ6>.[–ÐÄÉÑу\_:" #»ývkß¾½šsæØ±¡®. s¡Ùöíù“& Y¼xGÝF«õæ§Ÿyã]._þvõê}_|Q‘’ããã“’#"ii›ºwï6uêƒ=zÜTUU³víââÏÛ¨|´_ôB:²Ã‡ÏvëÖõž{î¨Û™—wfþü¬C‡ÎÄÅEŠHZÚ¦ªªª´´Mii›D$.îìì¿ÏŸŸõ‡?äÄÇk›ÒÑ¾Ñ èÈjjdóæÃ11C >1ýÞzk¯ˆ9R4yrĵWßÖ«W÷˜˜!"Ò­Û n«„èà>ü𓇾7"¢ÿµ_ÕÔ4|‰——¼öÚ»ý[×VOÆ@ ãÛ¼ùýqãÂE¼ÔÇ¢¢ÒAƒúŠÈàÁýΜ)SGU×®µ= %ǫ fÍFGgC/ ã+.þçG}ÖW}|ûíC EEÝsùråêÕûTcNÎÉ_Œ½r¥2-mÓºu¹ññÃæÍ‹õññ±Ù¾~ãwÛ®v´S^II+Ûº†Ö*-=ºcGæéÏéЉ-NÍ ÷ˆ_ÝÆWÓsÛªyÚˆPÚ˜  Ó™šÔÖ%h´ö § @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @›©­ pšÅ©™m]è,:H„Z²do[—:¯¤¤•m]€‡a.€6"€6"€6"€6"€6"€6"€6"€6"€6"€6"€6"€6¯¢3¶u †^(nÕ¯ÿ€~ý¸á#¸ €»;{2ð‡ÿî†à:D(nE~Ð10 @›éÕôܶ®Àؾü2»­kð0^555m]€‡1mܸÑé7ݸqã;ï¼ãŠ;4Ÿë2 oäh#Bh#Bh#Bh#Bhûÿš³œžÊVüútIMEÕ  .ÏÃIEND®B`‚jpilot-1.8.2/docs/jpilot-install.png0000664000175000017500000004021612320101153014340 00000000000000‰PNG  IHDR³;é„âøgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝ\÷ÿ?ð×9ýRùQ™0ŠŒ¢IaÂÛx{Û—!"êöƘ±yLÌjëmmÚÛü*ïØ°VÈ{æÇö&?F¬’”ZÖ¯‰!o5²HªsÎ÷k»vöº®suu:õ¸ßüq¼Îu^¯×uuy¸Îu:¯§ääÉ“ M˜c›œ¦SBS»¬õ§F9-$ ·Q³ïÆ-@?T*•ú¹'ðß'®A#ÉïˆZ¢‰ 5Ý^µáZˆ=oÕßXPO©Ã5#4ƒÀïy&|…H…¦ÿ̹ç4ïK„I$æâ=»(¸fPO@ê´^Ô Õ¯OÕ_Îþ•º’‰:NN\3‚Fbþk%ŽEæ¿åfVs¯ûpz€d„ßpß*ƒÔãUø;@³PgõŒ:¼›†ßpß½Àûe|º ÚQÿ¿_àæ5ɺ¡~o±ÆFà-o8"¡¥¸¿ÙCÔ>TÑâ¯êw½q4 ŸÀ@‹h:c¨OŠ…_ÂÛ‰¦zž’ø =sJ«C2¶G¿HÉØ>! „á># É@“‘ßËÊ´ È4Ý“„‡ÇzÆ÷hHF’€†d !hHF’€†d !hHF’€†•kõÍÍÍÕÐS³jÕ8¬o gHF¸q£ÔÐS“QQqÕÐShðn€†dÐ‡ŠŠ«¸ú3!HF= œeè)€XHF’€†d0¼øøpCOþÉ``L," ’ѸLêíããJÙ¹s‰ÞÆ2îèëÖMØž}VøÈL™2Œw”ÏÖûq¨"ÂÑx Ë A½~øáç¶7–˜Ñ?øàˆÀöÂϲ&M’ bT¸Qˆp4øŒéÔɺ¡Aùôésæ¯'ʽ¼\lm­RR.ååÝ"„88Ø.ZheÕáÙ³úÄij¿üò„²sç’¯¾Êòòr±±±:xðû^½ºzzö¶µµJN¾týúmBˆuhèè.]:*ª.–—? Æj²Mãþýï»™©nß¶lY"!$ À=0pJ¥R(”ÑÑGÄŒÎb;ܹsÉéÓ×ÝÝ{¢ŠO«¬ü•ŽÁUdd™™Ydd!$**•eêToOÏÞ„¶Ï•+'wéb£P(Ÿ?¯OJJ¿sç!!ÄÒ²Ãk¯ìÛ÷…BÕÐиyóQ•JÅô`n.‹ˆÿã÷NŸ¾Î»û¼3‘Ь3ôÉhDî]Pp›ýkMMmLÌúõ{!4t “ŒÁÁ~Å.Üðóì·mÛ·Ì–Ož<‰ùÊÙ¹ÛêÕS’’ҙNjer-8øå´´üÂÂ;/¾h¿`Á˜èèTîXMõÀ?.WPÏúõÉ55u;Z0-bF线úÈ‘ÌQ£Ìž=êÓOù‡ãÎ***uûö°¨¨TÞãYUU}D½ÏÏ?ÿ®ºú)!¤OÇ€˜˜¯˜ WW×nÚtH¥";Z°±hee¾téÄï¿/¾|¹¨…3ã‡wÓFÄãw~þÿ’¯\)#„üôÓÿºt±aZ\]»ge•B®\)íß¿;»eVV !äÖ­2™Ù•+¥Ìã®]{•›[Ï  ßÈÈ ÐÐ1l`Qc ÷ i\®Â»!!£½½ûÕ×7Š+'ç'BHvv™««Æášœ5 ·O{{›Õ«§lÜ8sþü€ž=í™FOOço¿ÍeòPýªvõê¿;W ‹"gÆ׌ÆB&“vïÞéî݇lKCƒ‚¢R‰„Þø÷ëzK¥RÙØ¨¤^%‘ØØcuuõbÆâíw\•J%•J”J•L&•ü¾iBÂiW×î#Gð÷w‹‹;.rô¢Ž†øQÂÂ÷î=WRrßÂBöÉ'¡Â£””Txxô¹v­œ¹ŠäÝ}h3pÍh,ú÷w*)©Þ¦´´bØ0BÈðáýŠ‹ï‹ì¹ àN@€óØÙ¹›È±š÷—_j\\ºB† ëÇ&ƒ½½mIÉýÔÔŒ>}Z2º—W_Bˆ·w¿’»É;«ÆF…¹¹ŒwnŸVVæÕÕµ„??7v³ÜÜ›'Ê™=b/r !))—ëëCB˜§xw_äÌYññáÜ?M¾ ô׌ƢÉ7˜„/¿¼6vüxgÏÏŠì9))}Þ<ÿg˜™™UUýºuë7bÆjrÜÇ3ÂÂÆ=yR—ŸK©üí²-4t¬µµ¹T*IMÍ9úºuÓ¹Ÿ;;:Ú­_?I|üéfÍêüù f<ÞPTtÚÇßû$ññi¿ïBæêÕSjjê n³»œ|yÖ¬‘7¾¦P(ëë?üðO`’“ÓçÎõŸ7/àÀ ¼»/r欈ˆ* ñ™Œ‘`EL=ssså]Ÿ12rÆæÍ_±·çZ•>Ç9º…E‡?œ·rå^Â÷1´®Fim3¯¨¸8‹÷Gφ#o,VT\=v,ÿNõ ï¦ETÔa½ý3ÖçX"Gß°!èܹ‚ÖÅ81ˆ«E£‚wÓ`Þy'™}Üò FCÑzæˆEcƒkF’€†dÐ,èmZpŸ@P0Ò´àš€†kF@ 9#‡dÔ·U«Æz Ð|€†ûŒ4$# É@C2ÐD}6=»®µçm@F¶%ó Y¿–8ëoýSa€ çÓt9-h£´>ßÄüÖ½ØßÚY¾RüØÐ©TªŒì?Œùe¸U«Æñn‰ó „éö|ãjÆï3ÆÅ¿1´«V+-þÛÞäÿÌÂÿÕã|^­t¾Qš÷›Þøî'PZõû<8߀¢·ïá’ô$!!ÂÐS€v¤…ç’ô9MŽ -?ߌÐêÔOP„#´6œoHFh]ÜSá­GWç›–«íܹäÞ½‡ÌãÇ3nܸ«i3n5µíÛÖ-KÔn\09:Ỷ:ߦMóýàƒ#DG•©¡-ÑÕâaگϕª“h"•J•Je«&Dý|»qãˆgíÎV®up°]´(Ðʪógõ‰‰gùå‰ú³ŽŽvã ‘Þaíì¬CCGwéÒQ¡P8p±¼ü!dçÎ%§O_8°çéÓyVVƒT*•B¡ŒŽÆ?ø ÷R‘÷\ pÇùÚÑ>##ƒ˜ï¿D©Tûed_¸pÃÏo`p°ß¶mߪo<{ö¨sç~¸t©hÔ¨R©„i ~9--¿°ð΋/Ú/X0&:ú·‹‚ÿýïñ‘#™„ý+týúäššºŽ-´ž'´ êç÷YÞs)(ÈçhGgï¦]]»ïÞ}†råJéÌ™#¨]]˜g³³ËBBü™F7·žÝºÙùB¬­ÿ8w³³Ë˜……wCBFge•æå•k=O0Ý~]Aøî ﹄ó§]Ñíù¦û:0*3·I"!±±Çêêê©öçϘ §]]»9Àßß-.î¸nç ­JÏånxÏ%œ?í‡ÎÏ7%ciiŰa.—. Þ¯¸ø>çÙû^^}/_.òöîÇ6Ü p;u*âìܹ7¤ÎÞÞ¶¤äþ½{Þ?XWóý¹„®NhÞs çOû¡óóMgÉøå——ÃÂÆŽïñìYCbâYêÙ””ËááÝS*»~LJJŸ7ÏãÆfffUU¿nÝú õªÐбÖÖæR©$55CWó½ÑíÚ'ÂxÏ%œ?íŠ!×Úaq‰¬ªê×Í›jÚìÁƒ_ÙXúžyðôi]|üiž?úèkí¦m u¾±eðžK8@kzª7®þ׈ˆM[páü=ÓS2âT†–Àùz†ïMÐŒ4$#­y÷õV„€à|ÃiF2êù[ ÐÎá|jF2ª4|ï ¬¤Pç}â|MZã|£à># É@C2ÐŒ4Ý$ㆠ’’’tÒ€&999‰äÈþº–––"["%%eذar¹ÜÝÝ}ùòåÌÇDÞÞÞ̳›6mb·dE’ÉdC‡õòòòññILLTo—ËåC† 8pà—_~ÙÜ ³G@&ÓÓWÛÝ$ãÿûßW^yE']h²ÿþ©S§8p %466jýÚ£GnÙ²åÛo¿ÍÍÍÍÏÏwwwgЏegg3ÄÄݳâ]»v-''çäÉ“ûöíÛ³gÛž›››——wâĉåË—k=yh$cEE………E×®][Þ€& …âðáûvíÊÌÌ|ôèÓXVVæåå5tèеkײ[ò6Êd²µk×z{{>|øþýû“&Mòðð:thVV³Á®]» äáááå奩%66öã?vtt$„˜™™-]ºÔÌÌŒü~9&—Ëëëëår¹\.'j×h"‡c988lÙ²eÇŽT{uuµ‹‹ ÕÈìs±YVV&p!6lðòòRß4ÑA2ž|È4N˜0añâÅ)))ÖÖÖšZ´#r8¹¹¹7nÜHNN~ë­·¸ÏΘ1ƒÙ»ôôt¦EÓàn š´4ëë닊Š<<>žyÌÞø+//÷÷÷½zõª¦–5kÖ¬^½º²²’¢P(vìØ¡þ^•baaQ[[«Ýp¬ªªª7ß|séÒ¥Tû÷ßß»woîî°;ëïï/|¸[‚&Úïíí·Ò û÷ïWOŠ™3gΙ3'22ò_ÿú×Ì™3·nÝ:vìXæÃBo£º;vDDDxxxÔ××÷íÛ÷›o¾!„,X° ººZ¡PÄÆÆ2›q[¦M›öìÙ³‰'*•ÊúúúñãÇK¥º¶Xºt©§§§ú­F‘ÃBär¹T*•Édááá‹-Rog>g–ù×ÇoQ©TLð fKBÈ¡C‡DûvJßäF#¼ë…¯äý†ÿ!C¾ÿþûÞˆSWVRد¿;[“ ¢âj`à,1µÜŽKˆ‹;ó·¿vWo¿p>MÓù™LÖ’ßC2Q-<ߚܒ´¼L^^^ {06øv € k‡Œúd !hHF’€†d !hHF’€¦ãdDÙh=F[íÀ PM¡Uéxgþûßÿ¾ñƺí€ÁV;˜>}ºÖ466jýo˜­vàèè¨P(âãã•J%ï¢z ]5BHUUUPPD"a­`Ö¿(++óññaÁ]^3¢ì´c®vpóæÍ—_~ÙÃÃÃÏÏ]Q&“}øá‡¾¾¾}ûö=zôhTT”¯¯¯‹‹ËñãÇÕ§D*˜8q¢»»û!Cüüü®_¿ÎnùÞ{ïy{{;;;ýõ×l#óÕZƒ.“e õsµƒeË–ÍŸ?????44tÙ²el»½½}fffrròœ9sz÷î™™™’’²zõjvn¡‚={öæåå}òÉ'K–,a·ìÝ»wvvvRRÒš5k¨ÑQM¡5´t2uÓ§Oß´iÖ÷n‡ô° Ùœ9s&MšráÂ…uëÖ1ëõÛÙÙݽ{×ÖÖ¶¶¶¶S§N še2Yuu5³¬wçΙn=zÄ\å͘1£¡¡aΜ9¯¾ú*sïŒÛbkk[YYɽwiggwçÎ;;»§OŸöèÑãñãÇ̈Ož<±´´T©T:t¨­­577W©TÖÖÖÏž=c6xôè3O'''æU—/_~çw*++e2YQQ»%Û•úË™å$DîŽúze]ºt©©©Qo?zôèG}tñâEõ]㤦#Ìݲ•˜À*d,”=€ÖÃT;HOOŒŒ$„Ü»wïæÍ›...-©v`gg§þì¡C‡ÒÓÓ?û쳄„„3gÎð¶0Õüüü4Í“š‰$‰D"“ÉÌÍÍ™ÇÂWsçÎÝ·oŸ¿¿ÿÓ§O;wîÌíŠûr‘»£NS5…¹sç ÌMÓn¶I:{7²ÐzŒ¼Ú¿¿?3brrr³þpË<~ü¸G„Ý»w‹ìÕZCK«”=€ÖgäÕ>ýôÓyóæÅÅÅÙÙÙ}ñÅâ÷‹[¨ 66vìØ±ŽŽŽ“'Où©7ª)´ÝgDÙƒö Õ´`… Œs’¦tŸe ÍÀ· ïŸLb’­É@C2ÐŒ´6µ<´[ôon¶’LÞªUãtÛ!’Lž˜ßËnÜg !hHF0mµÚÁ¦M›xÛQÏÀ€Œ`2Øj-é¤%_ê`«äæææçç»»»3 1´PLL ·±±±Q»z999'OžÜ·oßž={ØöÜÜܼ¼¼'N,_¾¼Esm7Œ`L±Ú;ºúeU·@.—×××Ëår¹\NÍõ ɦÁ«ð¢êäææš››çææ2eªÔçɾõ ôO—Õ ÝBµÞjì;wKK˺º:¢¡nû,5Ïö\Ï@÷|sr&òµnn®bV!Ã5#˜¦ÚÁ;ï¼ãìì<þü¬¬¬›7o ËvÀ\¦±o~:´fÍšS§N± 0s[˜jóTZ*•2W[õõõê·#êPód‰œ°:Mõ ˜ÂªMjõ „!Á˜bµggçÌÌLBÈÁƒ…ßoYXXÔÖÖ l€zú׎>†ÓeŠÕ>úè£9sæ888L™2E¸nÁÒ¥K===mllØ[ÚM˜ žîà>#誘.ã¬g ÷ ÉЮ™Ü£~ hHF’€†d !hHF’€†d !Ád¼ÚÊ ´øI€É`«LŸ>]ëN[@Ì*^UUUAAA‰„]µY ¢¬¬ÌÇÇ'88XëþÁHàšLƒ1T;`¡œ@›‡d£Ð¯¿{¿þîCµu('ж!ÁX”•º¾4HÓ³û÷ïgÞ¥ïß¿Ÿi¼xñâÌ™3 !³fÍb·ämTÿkZZÚÛo¿-—ËCCC>|È4N˜0añâÅ)))ÖÖÖšZäææÞ¸q#99ù­·Þâ>;cÆ fL‘Ir·ƒÀ}F0 ±ÈT;HOOŒŒ$„Ü»wïæÍ›...-©v`gg§þì¡C‡ÒÓÓ?û쳄„„3gÎð¶¨ÓTN`îܹMìªà$ÁHàšŒEiñ¥Å?ð>e$ÕX('ÐæášL€‘T; ('Ðn Úè@Ë«0¿”•’6WíÀË 9T;€vDøV#€>!Á(´áXÄ£)Â}F0š>~Ð?\3ÐŒ`šü €>!ÁX´á[`rŒ`‹`Tð  |Æ׌4$#|FÉÆ¢É[¯v‘‘áãããáááêêÊ4nÚ´IøUMnÀ…² ‡d£ æ¶ÚAKjÉ7RæÏŸ¿uëÖüüü¢¢¢•+W2111¯jr^×®]ËÉÉ9yòä¾}ûöìÙÃ¶çæææåå8qbùòåZt "!ÁX¬BFŒ£ÚAeeeÏž= !fffC‡%„Èåòúúz¹\.—Ë !'Ntww2dˆŸŸßõë×¹ˆš…² †‚dÓ` ÕV®\)—ËgÍšµgÏž††BHnn®¹¹ynn.S!kÏž=………yyyŸ|òÉ’%K¸ˆZÊ*’ŒB“ŸÀCµƒwß}7##côèÑÛ¶m[¸p!w’·nÝ;vìàÁƒ/^Ì\3RD-eô7bÁX0·yßPOµƒþýû÷ïß?88øÅ_ä1wîÜ}ûöùûû?}ú´sçÎÜ D­e ׌`„?1’j§NbÖÓÍÏÏgn8B,,,jkk™Ç?îÑ£!d÷îÝìpꈚ…² †‚kF0¿Iµƒ;v¼þúëæææ{÷îe—.]êééicc“››;vìXGGÇÉ“'³C«o rh‚² ††j -¯v ÞÞÆªèMû)«€jÐ^à;0`TŒ`,°ÜN µ“ Fý@2‚Q@,‚QÁ'0`,° \3ÐŒ`ð $# Üjãd£€X£‚O`ÀXà0¸f !Ád¶ÚüwR©”]‰ÖÛÛ›yV½¤Ask  ¶Â!“ÁV;˜>}ºÖ466j—ÌÒ³„KKKö1»”CLLÌÆµžÕµk×!UUUAAA‰„]B‚¨¬¬ÌÇLJYžô׌`Œ¡Ú²TIj˜.$#˜c¨v  UÒ€…Ú¦ ɦÁª4j˜.Üg`<Õšµ L®ÁIµê% š; µ Œ®ÁIµê% š;Amãƒj ¨v í§¶ª’À$µÛ Fý@2ÐŒ4$# É@C2ÐŒ4$# É@C2‚i¿ô?[@WãŠÜR½² ˜:üüÀdˆ\úŸ]pÁ´h]†Z®ÁĨ/ýÏ[N€Í|òÉ»ï¾KÙ¶m›½½½J¥ª¯¯ïÑ£³ü5oo,Þg5UàÅ[Ÿ@½ CMMÍâÅ‹ 4dÈ#F0«ì€A Ádp—þç-'Àâ>;zôèóçÏB¾ûî;WW×üüü¬¬,///fÁ®æöF4WЄ[Ÿ€ü¹ ƒ££cAAA^^ÞÉ“'¥Rüó4\½ƒÉ`ÞM=zô­·Þºxñ"!$--­´´ôí·ß&„°e³XÜg™*+uuuÅÅÅ+V¬øî»ï?~+•J‡¾wï^77·1cƬ]»¶ººúŸÿü§v½ÍÕšµ[†Œ.×ÁĨ/ýÏ[N€ÅûìèÑ£cbbƌӯ_¿²²²Â¡C‡jÝ[“•(ÂU¦M›¶yóffÉ^¶¢®Ádp—þç-'Àâ}vôèÑkÖ¬aÞA4¨gÏžlU-zÓT]@½&p}u[·n}ã7 Ô¡CkkëK—.áV£¡ Á4ð¾?µ··§"æÉ“'lµRooo¶ŽSfK 7õqyŸuuu½víóxË–-l»úo©?ŽŽŽŽŽŽÖ´_666ÿþ÷¿9{ €ÿ‘ M2dÈ믿nèY€ÉÃ5#´)ìï !Ô'0!¸f !hHF’€†d !hHF’€†d“‘’’2lØ0¹\îîî¾|ùræK~Üu°Ù¦@cáÂ…Ü͘Ed}||[{ò999‰äÈ‘#MN€™öàÁƒ‡ Æ.]¡ißÇϾpòäÉ:t ÆÍÈÈðñññððpuu Õù~©×xhy'Ƴª¹±Ì@ØÑ£G·lÙòí·ß:::*Šøøx¥R©¾ˆ/fIGM˜¯|x×®]™™™Ü5q© °&L˜PZZ*¼ï‹-Ú»w/!dÏž=ÜëbBHeeeÏž=™²ë­ñÎVýzMý"î½÷Þóöövvvþú믙FÞ»ví4h‡‡‡——5Þ2š ElذÁËËK}Kƒ@2‚iÈËËÓ¢( ûnú½÷ÞØŒYë›y¬©æ½½}fffrròœ9sz÷î™™™’’²zõjæÙeË–ÍŸ?????44tÙ²eTÿ§Nòððprrš:uêÁƒ…'À:xðàÀ‰à¾¿öÚk©©© d×W·råJ¹\>kÖ¬={ö444ˆ™-¥wïÞÙÙÙIIIkÖ¬aZxk<¬]»öüùóùùùiiiÜN¸e4ŠpqqÉÉÉ¡ BèŸ$<<¾É¨AÿMèIDATFx×- _É®Ý@)+)ì×ß=""ùkEÅÕÀÀY7n” ¿ª¢âê±c qqgþö×îêíΧqÏ7[[ÛÊÊJî]-™LF­ÔÀ¶pŸÒôÂÆÆÆ.]ºÔÔÔB:wîìììÌ´?zôˆ¹¤’ÉdOž<±´´T©T:t¨­­577W©TÖÖÖÏž=#„ØÙÙݹsÇÎÎîéÓ§=zôxüø±úXsæÌ™4iRHHÈ… Ö­[—žž.0™L6xðàÆÆFGGǸ¸8¹\.¼ïáááÖÖÖ555‰‰‰–––uuuÔf%%%§OŸþ÷¿ÿíîîÎ,¼Æ;[õù°ý¨ï¸úÎÞ½{×ÖÖ¶¶¶¶S§NLàΘ1£¡¡aΜ9¯¾ú*5U™LöèÑ#f{'''f8ÞNx·äâžoNNÃ4ý )nn®Mž™÷ÁTxzzfggûùùµFçyyy `kªyÀük—H$2™ÌÜÜœy̽\àÖ?¨©©9vìXzzzdd$!äÞ½{ÌAM œÛ£Âû¾xñb__ßË—/kÚ»þýû÷ïß?88øÅ_˜­T*U(fffõõõêe Ùgw–·ÆÃ¡C‡ÒÓÓ?û쳄„„3gÎhš ïÐFï¦Á4¬Y³fõêÕ•••„…B±cÇ1µúĨªªzóÍ7—.]ÊüU¸æ&þþþ̺¶ÉÉÉêO¥¦¦Nš4éöíÛååååååo¾ù&µb.5.á}÷ññQ©T#GŽä}í©S§˜DËÏÏgn8jš­³³sff&!äàÁƒÂoyk<”——ûûûÇÆÆ^½z•ûn™M…"„ Bè ®Á4L›6íÙ³g'NT*•õõõãÇg+ôêÕ‹yðÊ+¯PkbËåræÁСC™O*¨g¥R©L& g?®y É§Ÿ~:oÞ¼¸¸8;;»/¾øBý©ýû÷«§ÞÌ™3çÌ™Ã\?òN YûÞ¤;v¼þúëæææìàíG}4g·)S¦ºÅ[ãaÁ‚ÕÕÕ …"66–i.ó ©P³%!äСC"÷±5à>#è€î3‚é¾á«=ÜgÄ»i’Z—)–y@2ÐŒ4$# É@C2ÐŒ4$# É@C2‚É0Ýje Ôg«©øÕ èINÚ!S¯vÐdYñóA=À5#˜“®v@D”%Ð4.0Ð$#˜“®v@D”%Ð4.0ЬB:€jÂÕÊðΖ*~ÀÝ‹¶WÀ YPíà7¦[í€ÕdYÞùðBƒÖ†wÓ`L·ÚK¸,¦ùp¡€àšLƒéV;Odñ0ÐÜg@µƒöFç šÕ ÉÍfŠ š÷¡µTTðܶ0 HFh«V3ô´‡d„V×ô¯¿(舛›«˜ÍV­'òÌD2BkóÙ´~fínÏ7|@C2ÐŒ4Üg„Ö•ÁmóÍ+-èê|Ã5#´.îI©u,ЬvÐr쪎R©”y@ÑbuHÐ?]oHFhuꧦֱÈV;ÈÍÍÍÏÏwwwW_VK·rgnnÎ< „°+)hAä7FÚüKôC'ç’ô9A[ò&Z ÚÁæÍ›}||Ô×îç­XÀ]»_`5.öâ´¤¤„Yåýúõìz®šj$¬]»ÖÛÛ›]†·H€úf555‹/4hÐ!CFŒÑzéß¶µü|Ã}FГÞ[¨vð /dee]¾|944têÔ©ä÷ŠùË_rss.\ÈTžZ»vmii©££ãÇ™r[ÄX±bÅŠ+.\¸oß>vHÞ !/½ôÒæÍ›Õ_>pàÀÍ›7ïÝ»wÅŠ'Nœ 6[°`A= $ÉÇÙ•Ö ¹Zx¾!ÁäÍž=›2räÈŸþ™iIKK+--}ûí· !=b'L˜°xñbfí~M-b\ºtéàÁƒ„3f„…… ŒHá–|™1cÓþÆop7ûúë¯ËË˙ű»ví*~V [HF0 Õ¸k÷óV,à®ÝßÜÕü)ê‹ûkª‘`cc#¦+‘›Þ ¡µèöËLµƒãdzõ¦#""4­SÍT,xë­·!YYY>>>ä÷µû Ô·o_f3n‹£F:räÈ‚ RSS…Gäuøðá… jZúÚ´i›7o~ÿý÷™wÓ¸lO·ç[3Öô.-þA‡CC­±|ìX‚ÈjZÓçhÉù¦ËÚXzÄ œØDIea8ß@¼–Ÿo\¢®ÚüN É@C2ÐŒ4$# É@C2ÐŒ4$#M›%P&Lˆ“Ó°æ¾D˵vÄÀ€D.!AÑ~²¸¸f¯g 7«VÓz]ˆ­Ï¨EèA oúá’€†d !hHFšn’qçÎ%‘‘AÌ7·žëÖMgÛµëpʱ¿™©Åìôt5vâ'³}{X³æú¤³ªªQQT˜¼qãH {›4I~üxk}Óæƒš7½V ¡V©7½sç’¿ÿ}·z‹uhèè.]:*ª.–—? „¸R©T …2:ú´ŠŒ 233‹Œ "„DE¥:8Ø.ZheÕáÙ³úÄij¿üò„nêToOÏÞ„øø´ÊÊ_5 ÇÞÎKNœ¸êéélcc™’r)/ïwVÔdV®œÜ¥‹B¡|þ¼>))ý·¼G€wŽŽvã ‘Þiá€V¥³dd²ƒòþûùàƒ#ýú½:†IFjVÔd>ÿü»êê§„>}CBbb¾âí–w³g:wî‡K—ŠF •Jš:¢`0­ònšËÍ­g·nvAA¾„këßr°°ðnHÈ謬Ҽ¼r׺ºvß½û !äʕҙ3Gp7ÈÉù‰’]6kÖHáx]¹RFùé§ÿuéb#fVöö6aacml¬”Jå /tnÖþºº:1;’]â/0+0¬Vy7Í%‘ØØcuuõê §]]»9Àßß-.îx“ˆ/ÎÎ;¯†Ó³ä÷k8áY……îÝ{®¤ä¾……ì“OB›9T—0 zú­‚‚;nÌcgçnÌ{{Û’’û©©}ú8PÛ76*ÌÍKíÒÒŠaÃ\!Ç÷+.¾ÏíÜË«/!ÄÛ»_IÉ}áDâÎJ}2VVæÕÕµ„??·æîoié}vªÍš虞®“’ÒçÍó߸q†™™YUÕ¯[·~C kmm.•JRS3¨íÏŸ/ܰaÆóç QQ©_~y9,lìøñÏž5$&žåvîèh·~ýtBH||šÀp"qg¥>™Ã‡3W¯žRSSWPp[©Ôx È;””ËááÝx-œD‹Uz**®;– ÝªgzÀÄTxx¼››«I…ïÀÐŒ4$# É@C2ÐZô[;(¯ m’öɸjÕ8ÎÀxhŸŒE÷ð»Ê`Ô>~7A»â># É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@C2ÐŒ4$# É@“iýÊßMÐá<Œ‡–ÉwF·ó0Ú$£“Ó°7Ju>#ûŒ4$# É@C2ÐŒ4$#Í´“122ˆù³kW8ó ¹=ìܹ¤5&&`Ê”a:é‡wæëÖMç6nß&²Q l?¼C‹§«Ã¢«~Xì~ñö,þüÑÿ™Æàþ …Ïînòþ+ëÝÛ!>>|èPõn##ƒ"#g¼÷ÞkÇ»êr AûïÀƒ¨¨TæÁöíaìc#7i’üøñ«­Ôùi¥žµZ*•*•J‘/X„»Õùáe÷«Up'°›¼ÿÊFŒèŸ—wË×·ÿµk7©-íþïÿ¦]¹bÚ¿òlÚÉHqp°]´(Ðʪógõ‰‰gùå‰ú³––^{mdß¾/(ª††ÆÍ›ªT*BÈĉr//[[«””Kyy·!+WNîÒÅF¡P>^Ÿ””~çÎCBÈÎKNœ¸êéélccÉnÙ­[§ððñ„¨òóþË_<—-K$„ØÙY‡†ŽîÒ¥£B¡:pàbyùv‘‘AfffÌÿºQQ©Âæ†:îÌwî\ò÷¿ï&„8:ÚEDŒ'DRXx‡Ýž·‘w¶¼;+Ü;ôÎKNŸ¾>p`ÏÓ§óŠŠ*¸së×Ooò°°ÝVV>–H$ i„'§.‹²ÿ\Õï±cW}|\©Í˜NÜÝ{¢ŠO«¬üUøçÅîõƒSß`êToOÏÞ„‘r÷nÜ8kkócÇ®Ž;èoó^½ús33éÌùÇ?¾P*UÂçïOŠ÷$æÌØMuR©ÄË«oLÌÖ­›nmmQ[û\ýYkkóªªM¯5m*ƒƒý22Š/\¸áç708ØoÛ¶oÿüìËÕÕµ›6R©HÇŽL,BjjjcbþÓ¯ß ¡¡c˜³äóÏ¿«®~JéÓÇ1$$ &æ+fˇŸ|ðÁõ-gÏuölÁåËE#F¼$•JØÒÒò ï¼ø¢ý‚c¢£ÿ8â¢RÕÿãž°¦i°¸3gÍž=êܹ.]*5j;1ÞFM³åî¬pçêþ÷¿ÇGŽdB""&p;çþ D¦[©T=ËÆÆòÉ“:ÿ/þÈ{x¥Rék¯änvÿ~õ‘#™£F ˜={Ô§Ÿ~+üóÒôƒSWUU}D|‡Ü½+.®xíµ‘„\}é%§ÊÊÇ={vµ´4¿}»J=I3OKá¦3G`7Õ¹»÷º{÷áãǵׯ—{{÷½páÓ$“™ÙÛÛnÙrL¸ãצ’ÑÕµûîÝg!W®”Μ9‚zÖÓÓyݺ$&Ÿ>ýã¹+WÊ!?ýô¿.]l˜{{›°°±66VJ¥ò…: lÙ¯_wæª$'ç§ ˜F7·žÝºÙùB¬­-´ž°¦iÌG­g'¦çìì²FM³mnçê²³Ë:×ôƒhò°0Ý*•ÊŒŒ’‘#_:wî/¯¾ï½wˆÛƒÀf99?1]Íš5RøˆÔܹ{wçÎ/Ý»wêÐÁ¬[·ÎgÏôïßÃÊʼ¸øõBñ§e“? ®#FôgÞ,ge•M›6œMF&R‡ q ûµ=6•Œ,•ªémX æ%’ßÿs Ü»÷\IÉ} Ù'Ÿ„ lÉ;¢DBbcÕÕÕ·pš¦!f>„ðžFM³m~çxþ¼A¸s‘¨ÃÂv{ñâ+VLzü¸öÇïÖÖjì\äf-œ¤Ö²{§R©ÊË+Gpÿþ£ââ{Ó§ûZ[›9’EmߜӲ‰à· ––<=û¸ºvŸ:u8!¤sgk[õ·Ï·Ã›ݯ‘1íϦ)¥¥ƹB†ïW\|Ÿz67÷æÄ‰ræTèØQèÒÀÊʼºº–âçç&ˆÿqiÚM–——KAÁÏÿøGÒºuIëÖ%¥¥]÷õí¯¾Aß¾/<|øDÓËME›ºfüòËËaacÇ÷xö¬!1ñ,õlròåY³FnÜøšB¡¬¯oüðã* ×–‡g®^=¥¦¦® à6u¯‡’’r9<|ܸqƒoܸ[_¯`“’ÒçÍó߸q†™™YUÕ¯[·~£þ’óç 7l˜ñüyCTTªð„ÅOCÃÄ&.*ºÇ¾–·Qx¶â;çÅÛ9ïBüaadd;:++£sS½ÞÍíÖ¯ŸNˆ$>þt³ŽÕ3§CŸ&¦CÞ½+.®˜1cóúÞ½GÕÕO¹¶™§¥¨øÝdùú¾ôÝw?°½zõ§°°q'NäB"#ƒ$ !ä‹/.4kP#$ 7ôL›™™T¡Pzy¹L˜à¹yóQCO§½xíµ‘¿üRsæLA³6c?@Ö¦® âÍ7§tìh)‘Ï>;oè¹´7Ψ«k8zôŠN6àÂ5#­M} HF’€†d ‰Mƾ}»ýßÿMÛ¸qFtôìÐÐ1[j±Ú’úÂG-\ÌŠ5uª·«vóÑz,ƒàŽ.| Ùg… µ•®Ž§¡ãh±É¸páØ””K›6Þ°!¥É_"k®I“äìc]­£5hP¯~øY']ÕXbF>†"°ú…w€6Lìï3ÚØX=zTKQ*Uì÷–„W[â}¶É¨ØßÅÕ´•ÀêX¬N¬”ìjÜ5—4uþÕWY^^.66V~ß«WWOÏÞ¶¶VÉÉ—®_¿­iÔÇj²M㲿~¼}{³”Y@€{`à •J¥P(££ˆE-F-ºÅýmgը¨Q¸ënñ.¥iÙ7Bˆ¹¹,"bü?Þ;}ú:ïîóÎ@oÄ&ãÙ³ù‘‘A7nÜ-,ü9#£D¡P’¦W[ây¶É¨Ô^οwÍ¥uë¦S×Aƒ÷.(¸Íþ•»æ’¦ÎŸ×®•3W‘¼»`Xb?qwïÅœ´={veÞ7‘¦V[Òn*V“KQiÒ¿¿SII…ð6ÚuÎÝ#1c59î/¿Ô¸¸t#„ ÖM{{Û’’û©©}ú8´dtîY"gÅþP¸£pûä] KÓ²o))—ëëCB˜§xw_äÌZ‰ØkÆ1cÜgÏ~Y¡P44(?ÿü<Ó(¼Ú’v+P±/³ƒºÏèáÑ;?_èÖ[³:Þ#1c59îáÃaaãž<©ËϿŮ:ÖÚÚ\*•¤¦fˆ{¿•ð-º%rV쥨èµÜu·xÈXö-99}î\ÿyó¸À»û"gÐJÚàŠ‘‘36oþª¾¾±%rt ‹~8oåʽDG‹nd±\–ØkÆøøpõ¿FD$´Âdt#*êp›Käè6;§Ë_85ì>D¼fh!|o€†d ‰ºÏXQqµµç NNÚÜFüw`Œ÷#‘ââÎܸQÚäfÍøLѽæ•g0*¿+ö ÷hHF’€†d !hHF’€†d !hHF’€†d !hHF’€†d 5cåZñ‹>˜4±Éw¦Uç`|ü¸öúõroï¾.Ü „Ìž=êܹ.]*5j€T*a¶äml†í{÷îCæqpðËiiù……w^|Ñ~Á‚1ÑÑ©Lû“'Ïcb¾rvî¶zõ”¤¤tæñ¢Ec™d öËÈ(¾pᆟßÀà`¿mÛ¾ÍÌ,ˆÏ$£OÿŒŒÎME¯^ö·nU lÀ=„  Ÿõë“kjê:v´ø}3c<HFø“#ú_¹RJÉÊ*›6m8“Œ®®N»wŸ!„dg—…„ø3[ò6š´ÈÈ ++óN:~øáWL‹›[ÏnÝì‚‚| !ÖÖì–YY%„[·ÈdfÌáºuëA×®6̳®®Ý™#såJéÌ™#!÷ïW76*{õêZUõ¤_¿ÏtÞfp!¤°ðnHÈ謬Ҽ¼r¦Å8’þ`iÙÁÓ³«k÷©S‡B:w¶vp°­ªª!„÷æQ¹£Äbî3Ž7xÒ$¯]»NB${¬®®žÚ²¡AAQ©ˆR©llT2%œëfõ{nYY¥>>®÷ï?¾~ý6óM›Š;wöéãXZz¿É-ÕCBÂiW×î#Gð÷w‹‹;NŒõ8à·và^^.?ÿãIëÖ%­[—”–vÝ×·?!¤´ô¾—W_Bˆ·w?vcÞÆ6àÌ™‚.]:º¸t#„Ü pcÚ»‰ì¡´´bØ0BÈðáýŠ‹ Ž+WJ½½ûÑŸ¹ÞÔºsãqútÞÌ™#lm- !R©dÌwê¦ ïq°··-)¹ŸššÑ§ÓbœÇ׌ð_ß—¾ûîö¯W¯þ6îĉœ””ËááÝS*»àmlþûß¼ÿ÷ÿ|ââŽ'%¥Ï›ç¿qã 33³ªª_·nýFÌË¿üòrXØØñã=ž=kHL<Ë4VW×VVÖ¼ðB§’’ ¦E»Îǵkå:ÈV®œ,‘HÌÌÌ~üñõÁ4ïq kmm.•JRS3˜ã<¨hJÜÜ\Ûí*{ÇŽ%4¹8+Ž&88Í}!ÞMÐŒ4$# É@C2ÐŒ4$# ¿émb´®ŸÛààÀÁi$£)Yµjœ¡§`¼ppàà4¾@Ã}F’€†d !hHF’€†d !hHF’€†d !hHF’€†d !h²GÒ =ã"Q©T†ž€q‘:tHç:tèàÁƒ­Ñ3«õ¢÷hHF’€†d !hÿ¡r ›¡PÏEtIMEÕ «ïIEND®B`‚jpilot-1.8.2/docs/Makefile.am0000664000175000017500000000174412320101153012724 00000000000000# Install the man pages raw_mans = jpilot.man jpilot-dial.man jpilot-sync.man jpilot-dump.man jpilot-merge.man man_MANS = jpilot.1 jpilot-dial.1 jpilot-sync.1 jpilot-dump.1 jpilot-merge.1 # Install the standard GNU doc files miscdir = $(datadir)/doc/$(PACKAGE) misc_DATA = \ ../BUGS \ ../ChangeLog \ ../COPYING \ ../AUTHORS \ ../INSTALL \ ../README \ ../TODO # Install the manual docs docdir = $(miscdir)/manual doc_DATA = \ manual.html \ plugin.html \ jpilot-address.png \ jpilot-datebook.png \ jpilot-expense.png \ jpilot-install.png \ jpilot-memo.png \ jpilot-prefs-1.png \ jpilot-prefs-2.png \ jpilot-prefs-3.png \ jpilot-prefs-4.png \ jpilot-prefs-5.png \ jpilot-prefs-6.png \ jpilot-prefs-7.png \ jpilot-prefs-8.png \ jpilot-print.png \ jpilot-search.png \ jpilot-todo.png \ jpilot-toplogo.jpg EXTRA_DIST = $(raw_mans) $(misc_DATA) $(doc_DATA) DISTCLEANFILES = $(man_MANS) # Make rule to build man pages %.1 : %.man sed -e 's|@DOCDIR@|$(miscdir)|g' $< > $@ jpilot-1.8.2/docs/manual.html0000664000175000017500000005720312320101153013034 00000000000000 J-Pilot User Manual

J-Pilot User Manual

J-Pilot Logo: http://jpilot.org


J-Pilot is a palm pilot desktop for Linux/Unix written by:
Judd Montgomery, judd@engineer.com, http://jpilot.org
J-Pilot has been reported to work on:

  • Linux
  • Solaris
  • HP-UX
  • Irix
  • FreeBSD
  • PowerPC
HP-UX J-Pilot should work with Palm Pilot models 1000, 5000, Personal, Professional, all III models, IIIc, V, VII, All Visors, Sonys, pretty much any Palm OS device.

01 Feb 2002:
Palm OS versions greater than 4.0 cannot have the password set on the handheld.  This will be fixed in a later version. 

USB Palms (m series) and Sony Clies will work, but require pilot-link 0.10.1 or greater, which is still unreleased at the time of this writing.  J-Pilot will autodetect the newer version of pilot-link and build appropriately. 

Updates

This document was last updated 03 Feb 2002, for J-Pilot-0.99.2. 

Purpose of this document

Many things in this document are pretty much self explanatory, like a lot of the text on how to use J-Pilot.  I have written this document for a user as well as someone who is thinking about being a user and wants to know the capabilities of J-Pilot before much time is wasted downloading and compiling it, etc.  In the using J-Pilot section, I have marked some things with "*Hint*" that I think may not be right away obvious to a new user.  If you are in a hurry, just read these.

Installation

Prerequisites

  • GTK+, and glib (installed by default on most Linux distributions)
  • pilot-link (comes with many distributions)
  • pilot-link > 0.10.1 for Palm OS 4.x USB and Sony USB handhelds.

    To compile J-Pilot you need to have GTK+1.2 or later installed.  You can find out what version you have by running "gtk-config --version".  GTK+ requires glib.  The glib version probably should match the gtk version.  You can also do a "glib-config --version".  You can get these at http://www.gtk.org

    Pilot link must be installed and working.  What I mean by working is that you can use pilot-xfer, memos, or some other pilot-link program.

    Here is a visor USB howto I found: Handspring Visor and J-Pilot guide
    The HOWTO is also relevant for the clie devices.

    The pilot-link code and other helpful info can be found at http://www.pilot-link.org/

    If you are installing pilot-link from RPMs make sure that you also have the pilot-link-dev rpm installed for the header files so that J-Pilot can compile.

    Compiling

    To compile and install do the following:
    ./configure --prefix=/usr
    make
    make install
    jpilot
    ./configure --help will list all the options available.

    make uninstall is also an option, however I do not recommend using this ;)

    I have included a spec file so if you want to create your own RPM all you have to do is "rpm -tb jpilot-0.99.2.tar.gz"

    J-Pilot was written in such a way that it should be very safe to sync.  There is always the possibility of something going wrong though.  As with anything else, backup your data if you cannot afford to lose it.  Just make sure your backup software doesn't destroy it first.

    Serial Port Setup

    When syncing, J-Pilot uses the port and speed settings out of the J-Pilot preferences screen.  If the port is blank then J-Pilot will use the PILOTPORT environment variables, as does pilot-link.  If these are blank also then J-Pilot will default to /dev/pilot.

    It is recommended, but not necessary to make a link from /dev/pilot to the correct serial port.  So, if your cradle is on COM1, this is /dev/ttyS0 under Linux.  You could execute the command "ln -s /dev/ttyS0 /dev/pilot".  COM2 is /dev/ttyS1, and so on.  The Linux serial ports cua[n] are going away.  You should use the ttyS[n] ports instead.  USB ports are usually /dev/ttyUSB1, or /dev/usb/tts/1 (for devfs), but some devices use /dev/ttyUSB0, or /dev/usb/tts/0. 

    You must also give non-root users permissions to access the serial port.  The command to do this is (as root) "chmod 666 /dev/ttyS0" for the first serial port, ttyS1, for the second, and so on.

    Color Files

    Make install will copy a few default color files to /usr/local/share/jpilot/ (unless you told configure to use another prefix).  These will be selectable from the preferences menu.  Also J-Pilot will look in $HOME/.jpilot/ for colors files.  They must start with "jpilotrc".  If you want to add new ones, or modify the current ones, just put the files in one of these directories and they will show up in the preferences menu.

    If you create your own cool jpilotrc files feel free to send them back to me and if I like it, I'll include it in the release.

    Use of the JPILOT_HOME environment variable

    J-Pilot uses the JPILOT_HOME environment variable to make it easy to allow multiple pilots to be synced under the same user.  Just set JPILOT_HOME to the directory you want J-Pilot to use.  Be sure to export it also.;nbsp For example, I have 2 palm pilots.  I can sync the one I use all the time into /home/judd.  The other one I can sync into /home/judd/palm2 by using this script:

    #!/bin/bash
    export JPILOT_HOME=/home/judd/palm2
    jpilot

    This is also handy for syncing xcopilot or pose into its own directory.

    Oops, Reverting

    You can always make the databases revert back to the last time that the pilot was synced.  All you have to do is "rm ~/.jpilot/*.pc", or ~/.jpilot/*.pc3 for version 0.99 and above. 
    Deleted records will come back, modified records will be un-modified, etc.  Nothing is permanent until the sync/backup.  You can do this if you make a mistake, or just to play around with J-Pilot and then delete the changed records without syncing them.  For example if you want to restore the addresses to their last sync state you can remove ~/.jpilot/AddressDB.pc.

    Also, from the preferences menu, you can choose to show deleted records and then click on the deleted record and use "Copy" to get a copy of it back.

    Using J-Pilot

    Datebook Application

    Datebook Screenshot: Download full documents with images at http://jpilot.org

    Viewing Records

    You can browse through days on the calendar for the current month by pressing the days. 

    *Hint*To go back to today's date, just hit the datebook application button again.  The application buttons are the 4 large buttons with pictures on them on the left hand side of the screen.

    *Hint* Page up and Page down keys also work for scrolling through the days. 
    The Home key takes you back to "today". 

    Deleting a Record

    To delete a record, just highlight the record and hit the delete button on the right side of the screen.

    Adding a New Record

    To add a new record, first press the "New Record" button on the upper right hand side of the screen.  Then fill in all of the details of the appointment and then press the "Add Record" button.  New records will show up in a different color.  Once they are synced they will be the same color as existing appointments.

    Modifying a Record

    To modify a record click on the record in the daily schedule, change the details of the record, and then press the "Apply Changes" button.

    Address Application

    Address Screenshot: Download full documents with images at http://jpilot.org

    Viewing Records

    On the left side of the screen there is a list of addresses.  These can be viewed by category from the menu above them.  They will appear in the same order as on the Palm Pilot.  You can resort them by clicking the "Name/Company" heading.nbsp;

    Quick Find

    Just type in the quickfind box the first few letters of the record that you are looking for and the display will incrementally jump to the first matching record.

    Deleting a Record

    To delete a record, just highlight the record and hit the delete button on the right side of the screen.

    Adding a New Record

    To add a new record, first press the "New Record" button on the upper right hand side of the screen.  Then fill in all of the details of the address and then press "Add Record".  New records will show up in a different color.  Once they are synced they will be the same color as existing appointments.

    Modifying a Record

    To modify a record, change the details of the address and then press the "Apply Changes" button.

    ToDo Application

    ToDo Screenshot: Download full documents with images at http://jpilot.org

    Viewing Records

    On the left side of the screen there is a list of todos.  These can be viewed by category from the menu above them.  They will appear in the same order as on the Palm Pilot.  If you want change this, you must change it on the Palm Pilot under the menu in the todo program and then sync and switch to another application and back.  You may also check the "Hide Completed ToDos" button if you don't want to see completed todos.

    Deleting a Record

    To delete a record, just highlight the record and hit the delete button on the right side of the screen.

    Adding a New Record

    To add a new record, Press the "New Record" button in the upper right hand corner of the window.  Then fill in all of the details of the todo record and then press "Add Record".  New records will show up in a different color.  Once they are synced they will be the same color as existing records.

    Modifying a Record

    To modify a record select the record, change the details of the todo and then press the "Apply Changes" button.

    Also, todo items can be checked, or unchecked by clicking in the checkmark box.

    Memo Application

    Memo Screenshot: Download full documents with images at http://jpilot.org

    Viewing Records

    On the left side of the screen there is a list of memos.  These can be viewed by category from the menu above them.  They are sorted alphabetically. 

    Deleting a Record

    To delete a record, just highlight the record and hit the delete button on the right side of the screen.

    Adding a New Record

    To add a new record, Press the "New Record" button in the upper right hand corner of the window.  Then fill in all of the details of the memo record and then press "Add Record".  New records will show up in a different color.  Once they are synced they will be the same color as existing records.

    Modifying a Record

    To modify a record select the record, change the details of the memo and then press the "Apply Changes" button.

    Expense Application Plugin

    Expense Screenshot: Download full documents with images at http://jpilot.org

    This is an example plugin application

    I've written the expense application mostly for an example of a plugin and a proof of concept.  The User Interface is pretty much the same as the other applications so I am not going to waste time being any more repetitive. 

    SyncTime Plugin

    This is another plugin that comes with J-Pilot

    It is a GUI-less plugin.  It will do something during the sync process, however, it does not have a GUI interface. 

    During the sync process it will set the time on the Palm to the same time as on the desktop host computer.  It should be accurate plus or minus 1 second.  Palm OS 3.3 is broken and this plugin will crash a Palm running OS 3.3 during the sync.  It auto detects the OS and should not do anything during a sync to Palm OS 3.3, so it should not hurt anything to have it enabled. 

    Searching

    Search Screenshot: Download full documents with images at http://jpilot.org

    Search allows you to search for strings that may appear in records.  Just type the search string into the "Search for" entry and hit enter.  The "Case Sensitive" checkbox can be clicked for a case sensitive search.  A list of found strings will be listed in the window.  Just click on these records and the J-Pilot main window will go to the application and the record that matches the one that was selected.

    Installing files to the Palm Pilot

    Install Screenshot: Download full documents with images at http://jpilot.org

    The files entered here will be installed during the next sync.  J-Pilot just keeps a pointer to the file, not a copy, so you shouldn't move the file, or delete it until after a sync.  Just browse through the directory structure and select the files you are wishing to install.  You can either double-click on them, or press the "Add" button after they are selected.  They will show up in the "Files to be installed" window.  You can always remove them from the "Files to be installed" window by selecting them and pressing the "Remove" button.  When you are done press the "Done" button.

    Preferences screen

    Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1 Preferences Screenshot 1

    Locale Tab

  • Choose the character set for internationalization.
  • Choose the localization for the short dates field.
  • Choose the localization for the long dates field.
  • Choose the localization of the time field.
  • Choose the first day of the week.
  • *Hint* Some displays will flicker with every change of the clock, so you may not want the clock updating every second.  In this case, choose one of the time settings without seconds.  Then the time will update every minute.
  • Settings Tab

  • Select a GTK colors file.  J-Pilot must be restarted for this change to take effect.
  • Set the serial port.  If this is empty, then the environment variable PILOTPORT will be used.  If PILOTPORT is not set then the default of /dev/pilot is used.
  • Set the serial rate.  Some computers will not sync reliably above 9600.  I am not sure why this is.
  • Set the number of backup copies to keep.  Everytime a backup is made it will go into a new backup directory of ~/.jpilot/backupMMDDhhmm where MM is the month, DD is the day and hhmm is the time.  Backups over the number to be kept will be deleted.
  • Set "show deleted records".  Having this box checked means that deleted records will still be displayed as a different color.  This can be confusing at times.
  • Set "show modified deleted records".  Having this box checked means that when a record is modified the original record will still be displayed as a different color.  This can be very confusing at times.
  • Set "Highlight calendar days with appointments".  Having this box checked will make the datebook application highlight the calendar days that have appointments occurring on that day.  This option will slow down the application noticeably on slower computers depending on the number of records in the datebook.
  • Set "Use DateBk3/4 note tags".  DateBk3 and DateBk4 is a rewrite of the Palm Datebook with added features.  Some of them are implemented in J-Pilot and will be used if this button is checked. 

    Alarms Tab

  • Check "Open alarm windows for appointment reminders" to have J-Pilot open a window when an alarm occurs. 
  • Check "Execute this command" to have J-Pilot open a window when an alarm occurs.  Enter in the command to be executed when an alarm occurs.  This has the potential to be dangerous if an unwanted command is executed.
  • Conduits Tab

  • Check which conduits you want to be executed during the sync process. 
  • Quit

    To quit the program, use the quit button, or quit from the menu.  You should not quit the program by killing its window.  This causes a harsh death and the cleanup routines will not be executed.

    Sync

    The sync button will sync four the main applications and any plugins that are installed.

    If you get warnings about the palm having a different userID or a different username than the pilot that was last synced:

    Every palm has a username and userid.  These can be set by using install-user from the pilot-link set of tools.  If you changed the name or ID and it is the same palm then you can go ahead and safely sync.  If it is truly a different palm then you can still sync, just beware that any records pending modify/delete, etc. will try to be modified in the new palm.  You can always remove the .pc3 files to prevent these.  You can have multiple palms under the same user by using the JPILOT_HOME envirenment variable.

    If you get warnings about the palm having a NULL userID:

    J-Pilot cannot sync with this palm because it looks as though it has been hard-reset.  If it has been hard-reset (cleared) DO NOT sync it unless you want to lose data.  You should use pilot-xfer to restore the palm and then once the data is restored use install-user to create a username/ID on the palm and then sync. 

    If your palm has not been reset, but maybe just has always had a NULL userID because you never used the Windows or Mac desktop, then good for you!  Just use install-user to add a username/ID and sync away.  i.e.: install-user bob 1234
    You can type install-user on the command line for instructions. 

    J-Pilot Sync Daemon

    I've included an additional sync program called jpilot-sync.  It does not need j-pilot running in order to sync from the command line, or a script, so it can be handy for network syncs, or logging into a machine remotely.

    Backup

    This will sync the main applications and any plugins that are installed and then do a backup of all databases and programs.  It will only backup changed files, so the first time it will take a while.  Subsequent backups will be a lot quicker.

    Restoring a Palm Pilot

    This is not part of J-Pilot.  J-Pilot stores its files in $HOME/.jpilot/ and $HOME/.jpilot/backupMMDDhhmm.  A symbolic link of backup will be made to the most recent backup for convenience.  To restore a palm pilot that has lost its data you can use the pilot-xfer program that comes with pilot-link.  The easiest way to do this is to put every file that you want installed (or restored) back on the palm pilot in one directory.  For this example, a directory called backup.  Then you can execute "pilot-xfer -r backup".  Do not install applications that are already in ROM on the palm pilot, such as the Address.prc, etc. You probably shouldn't install "Saved Preferences.prc" to a palm pilot that it didn't come from since this can throw off the screen calibration and make it very hard to re-calibrate.

    Do not try to use j-pilot to sync data back into a reset palm pilot.  It will overwrite the data on the desktop with the empty palm pilot files.  This may change in a later release.

    Plugins

    Plugins are shared libraries.  They should end with a ".so" suffix.  They should be placed in the ~/.jpilot/plugins/ directory, or [BASEDIR]/lib/jpilot/plugins/  directory, where BASEDIR is the directory that J-Pilot was installed under.  The source compiled default is /usr/local/ and the RPM default is /usr/.  The BASEDIR can be changed during the build by "configure --prefix=/this_dir/", etc.  Once the plugin is there it will automatically appear in the J-Pilot menu.  If it doesn't, then that probably means that J-Pilot was installed incorrectly, or the plugin isn't compatible.

    Feedback/Contributions

    I always like to here feedback from users.  Sometimes I get a little busy with email and my paying job, but I should always respond.
    If you want to contribute some code just email me and tell me what you want to do, or have already done, etc.  I may like it, and I may not.  You are always free to do what you want to with the source code.
    If you really want to give me something for my effort in putting together this program.  You can send me a little donation.  I collect coins from anywhere, anytime also.

    Judd Montgomery
    P.O. Box 665
    Sunbury, OH 43074

    FAQ
    (Frequently Asked Questions)

    Q:  Why is it called J-Pilot?  Its not written in Java.

    A:  Originally I wrote this program for Myself and my Wife to use.  The J was for Judd or Jacki.  Not much thought was put into this.  Then, out of the goodness of my heart (ughh), I wanted to release it under the GPL.  I asked around for some better names, but I didn't come up with one.  gtkpilot would be more appropriate, but I hate typing gtk.

    Q:  Why do you give it away for free?

    A:  1. Because I can.  2. World Domination.
    I would like to see Linux, become the dominate desktop both in the workplace and at home.  This is one of my contributions to help make it happen.  The more people that use Linux at home, the more I benefit from the hardware support and commercial software that will become available.  The more Linux/Unix is used in the office, the more pleasant my job becomes.  If I drove cars for a living, I'd rather be driving Ferraris and Corvettes around than Chevettes and Yugos.

    Q:  Are you going to Gnome-ify it, or KDE-ify it?

    A:  I don't run KDE, or Gnome, and at this point I don't even know what it would take to do this.  If someone else wants to do this, that is ok.  My only requirement is that KDE, or Gnome isn't required to run J-Pilot.  I take pride in the fact that Linux/Unix has many window managers available to use.

    Q:  How do I cut-and-paste?

    A:  Cut is ctrl-x, copy is ctrl-c and paste is ctrl-v.
      jpilot-1.8.2/docs/jpilot.man0000664000175000017500000000216412320101153012663 00000000000000.TH J-PILOT 1 "November 22, 2005" .SH NAME jpilot \- A palm pilot desktop for Linux/Unix .SH SYNOPSIS .B jpilot [-v] [-h] [-d] [-a] [-A] [-i] [-s] .SH "DESCRIPTION" J-Pilot is a desktop organizer application for the palm pilot and other Palm OS devices. It is similar in functionality to the one that 3Com/Palm distributes. .SH OPTIONS .TP .B \-v displays version and exits. .TP .B \-h displays help and exits. .TP .B \-d displays debug info to stdout. .TP .B \-a ignores missed alarms since the last time program was run. .TP .B \-A ignores all alarms, past and future. .TP .B \-i makes .B jpilot iconify itself upon launch. .TP .B \-s initiates a sync on the running .B jpilot instance. If you have more than one .B jpilot running at the same time the sync may not work as expected since nothing is done to support a multi-instance configuration. .SH ENVIRONMENT The PILOTPORT and PILOTRATE environment variables are used to specify which port to sync on and at what speed. If PILOTPORT is not set then it defaults to /dev/pilot. .SH BUGS See @DOCDIR@/BUGS .SH SEE ALSO jpilot-sync(1) .SH AUTHOR Judd Montgomery jpilot-1.8.2/docs/plugin.html0000664000175000017500000007065312320101153013061 00000000000000 J-Pilot Plugin Manual

    J-Pilot Plugin Manual

    Updates

    This document was last updated 28 September 2002, for J-Pilot-0.99.3 

    What are plugins?

    A plugin is code that can extend the functionality of j-pilot without adding any code to j-pilot, or recompiling it.  It is basically just a shared library that contains pre-defined callback functions.
    A callback function is a function that is not called from the application itself, but from an external program.  When J-Pilot starts up it will scan the plugin directories for any shared libraries (~/.jpilot/plugins/ and $BASE_DIR/lib/jpilot/plugins).  When it finds a shared library it will find callback functions inside of the library and call them when needed.  So, a plugin can be an integral part of the overall program just by its existence and when taken away the main program will still run only missing the functionality that the plugin provided.

    Creating plugins

    Plugins are relatively easy to write for J-Pilot.  All you need to do is implement the plugin callback functions as needed and write the application specific code.  I have provided an example plugin for the Expense application.  I used this application because it is included in the palm pilot ROM and everyone should have it.  Since then I have been proved wrong.  The new m100s don't have Expense and I think some old Pilots don't have it.  It took me about 10 hours to write it with a lot of code reuse from other parts of j-pilot.

    I have created a library of useful functions for writing J-Pilot conduits.  The code is inside j-pilot and the header file is libplugin.h.  The naming convention is that all of these functions start with "jp_".  There are some I threw in there and didn't add a jp_ prefix because I would have had to change too much existing code. 

    If you do create a plugin I would appreciate it if you would give me a link to the site so that I can put it on my website.  This will encourage more people to use J-Pilot and your plugin.  Even if you are working on a plugin you can let me know and I will put it down as in progress so that someone doesn't duplicate your effort.  Its GNU licensed code so you are free to not tell me of course, as long as you follow the GNU license. My email is Judd Montgomery <judd@engineer.com>.  The official J-Pilot website is at http://jpilot.org.

    Example Plugins

    I have written Expense and SyncTime as example plugins. Expense is a GUI (Graphical User Interface) application and SyncTime has no GUI.  It shouldn't be too hard to use these as a base point for writing your own. 

    Plugin call back functions

    These functions are functions that you may implement in your plugin application.  Most of them are not required.  All you have to do is write them and they will be called at the appropriate times.  The naming convention is that all of these functions start with "plugin_".


    int plugin_search(char *search_string, int case_sense, struct search_result **sr);

    struct search_result
    {
       char *line;
       unsigned int unique_id;
       struct search_result *next;
    };

    char *search_string - input parameter, a string that the user is searching on.
    int case_sense - input parameter, will be TRUE if a case sensitive match is required.
    struct search_result **sr - output parameter, a null terminated linked list of search matches to be returned to jpilot.

    struct search_result
    {
    char *line - This is the search result text as you want it to appear in the search result window.
    unsigned int unique_id - This is the unique_id of the record that the search match appeared in.  This number will be passed back to plugin_gui if the record is selected in the search window.
    struct search_result *next - A pointer to the next node in the linked list.
    };

    This function will be called from the search window of the main program.  The output parameter search_result will be displayed in the search window.


    int plugin_get_name(char *name, int len);

    char *name - output parameter, a pointer to a pre-allocated buffer in j-pilots address space.  The plugin should copy its name into this string.
    int len - input parameter, the length of this buffer.  Don't overwrite this buffer.  Its currently 50 characters.

    This function is used to get the name of the plugin, e.g. "Expense 1.0".  This function must be implemented or the plugin won't be loaded..


    int plugin_get_menu_name(char *name, int len);

    char *name - output parameter, a pointer to a pre-allocated buffer in j-pilots address space.  The plugin should copy its name into this string.
    int len - input parameter, the length of this buffer.  Don't overwrite this buffer.  Its currently 50 characters.

    This function is used to get the name of the plugin, e.g. "Expense".  This is the name that will appear in the j-pilot menu under plugins.  It is possible to have a plugin that isn't accessible under the menu, in that case this function should not be implemented.


    int plugin_get_help_name(char *name, int len);

    char *name - output parameter, a pointer to a pre-allocated buffer in j-pilots address space.  The plugin should copy its name into this string.
    int len - input parameter, the length of this buffer.  Don't overwrite this buffer.  Its currently 50 characters.

    This function is used to get the name of the plugin as it wishes to appear in the help menu pulldown, e.g. "About Expense".  This function is not mandatory.


    int plugin_help(char **text, int *width, int *height);

    char **text - output parameter, the plugin should point this string pointer to a string to be displayed in the help box. 
    int *width - output parameter, the width of the help window.
    int *height - output parameter, the height of the help window.


    int plugin_get_db_name(char *name, int len);

    char *name - output parameter, a pointer to a pre-allocated buffer in j-pilots address space.
    int len - input parameter, the length of this buffer.  Please don't overwrite this buffer.  Its currently 50 characters.

    This function is used to get the name of the palm database (pdb file) that is to be synced.  This DB will be automatically synced when j-pilot performs a sync.

    For example the expense plugin uses the DB file "ExpenseDB.pdb", it would copy "ExpenseDB" to name, leaving off the extension.  A normal plugin that just adds, deletes, and changes DB records using the plugin API will not have to do any special work during a sync process, it will be automatic.


    int plugin_startup(jp_startup_info *info);

    typedef struct
    {
       char *base_dir;
    } jp_startup_info;

    This plugin function is called when j-pilot starts up.  Any initialization needed should be done here.
    The base_dir is the directory where j-pilot was compiled to be installed (default is "/usr/local").  More fields may be added to this structure later as needed without changing the API.


    int plugin_gui(GtkWidget *vbox, GtkWidget *hbox, unsigned int unique_id);

    GtkWidget *vbox - input parameter, the box underneath the sync and quit buttons.  This is where the main applications put the delete button.
    GtkWidget *hbox - input parameter, the box that makes up the main part of the screen.
    unsigned int unique_id - input parameter, a record id that the application should go to.  It is used by the search window.  This will be a non-null when this function is called from the search screen, null otherwise.

    This plugin function is called when the plugin is selected from the j-pilot menu, or from the search window.  This is where the plugin can draw on the screen and provide the GUI interface, etc.  If unique_id is non-null then the application should go directly to that record.  This is how the search window forces the applications to go to the search result records.


    int plugin_help(char **text, int *width, int *height);

    char **text - output parameter, the text to be displayed on the about dialog window.
    int *width - output parameter, the width of the dialog window.
    int *height - output parameter, the height of the dialog window.

    This plugin function is called when the plugin is selected from the j-pilot help menu pulldown.  2 things can be done here.
    1. allocate memory for a text string to pass back to jpilot and it will be displayed in a dialog window with width and height as the width and height of the window.
    2.  set *text=NULL to prevent jpilot from putting up a dialog window and then implement the help portion yourself.
    3.  I guess you could do both 1 and 2.



    int plugin_gui_cleanup();

    This plugin function is called when another application has been called and the boxes for the plugin GUI screen are about to be destroyed.  Most widgets will be destroyed when their parents are destroyed, so this function normally is not needed.


    int plugin_pre_sync_pre_connect(void);

    This function is called after the j-pilot sync button is pressed and before the sync connection with the pilot is established.


    int plugin_pre_sync(void);

    This function is called after the j-pilot sync button is pressed, after the sync connection with the pilot is established, but before any syncing is done by jpilot.


    int plugin_sync(int sd);
    int sd - input parameter, the handle to the pilot sync connection.

    This function is called after the sync button is pressed and during the sync process.
    Unless something special is needed to be done with the sync handle this function does not need to be used.
    The sync process in j-pilot is a forked process, and this function will be called from the forked process.  Therefore the previous state of global data in the plugin will not be available when this function is called.
    The order of operations during a sync is as follows:
    1. The 4 main applications are synced.
    2. Plugins are synced according to the DB name passed back from plugin_get_db_name().
    3. This function is called.
    4. Modified pdb files are pulled back from the pilot to the desktop if a backup operation is being performed. 


    int plugin_post_sync(void);

    This function is called after the sync process is completed.  Screen redraws may be a good thing to do here, as categories and records may have changed during the sync.


    int plugin_exit_cleanup(void);

    This function is called when j-pilot is shutting down.


    int plugin_print(?,?);

    There will be a print API here, but printing has not been implemented yet.


    Plugin API functions

    These functions are provided to make it easier to develop plugins for J-Pilot.  If you need something that isn't here and it is something that J-Pilot already does, or something that you think others might need in the future, it should probably be added into this library.


    int jp_init(void);
    This function must be called in the plugin.  Preferable in plugin_startup, but it should be in the first function to be called.

    int jp_logf(int level, char *format, ...);
    int level - is the logging level.  It may be user configurable in the future, but right now I don't see a need for it.

    You can turn on and off the debug level by using the -d command line option though. 
    char *format,... - is the same type of things that you would pass to printf.

    example:
    plugin_logf(JP_LOG_WARN, "error number %d: %s\n", n, err);

    There are 3 places for logging output to go to.  Standard output (stdout, usually the terminal window), the log file in ~/.jpilot/, and the ouput window (the one that pops up while you are syncing).

    Logging levels are bitmasks, so they may be combined with a logical OR.

    You can run J-Pilot in debug mode by executing "jpilot -d" to force debug output.
     
    Logging Levels
    level stdout log file GUI Intended use
    JP_LOG_DEBUG
    Debug
    only
    Debug
    only
      Goes to stdout These messages will not normally show up unless jpilot is in debug mode.  These message should be things like "x=%d", or "inside while loop", etc.
    JP_LOG_INFO
    X
    X
    X
    Informational messages that aren't serious.  e.g. "Put the palm in the cradle now", "Syncing xxx plugin", etc. 
    JP_LOG_WARN
    X
    X
    X
    Warning messages, that are not fatal, but may affect execution.  e.g. "Out of Memory", "Could not open file".
    JP_LOG_FATAL
    X
    X
    X
    Fatal messages in which execution can not continue.  e.g. "could not open display".  "Out of Memory" may also belong here.
            I didn't intend for the following levels to be used unless they are needed.  They provide more precise control over the logging output, but also override any future configurability.
    JP_LOG_STDOUT
    X
        Using this will force a message to be displayed on stdout.*
    JP_LOG_FILE  
    X
      Using this will force a message to be written to the log file.*
    JP_LOG_GUI    
    X
    Using this will force a message to be displayed in the output window.

    The concept of the log levels is to use JP_LOG_DEBUG, JP_LOG_INFO, JP_LOG_WARN, and JP_LOG_FATAL so that the user can choose how much he/she wants to see. For instance if you have a plugin that collects a bunch of data you could use JP_LOG_INFO and it may say:

    plugin foo started.
    scanning yahoo.com
    scanning bizwax.com
    parsing data
    loading indexes
    printing info log messages...
    plugin foo done data collecting.

    And then if the user doesn't want to see this he can set the log level higher to JP_LOG_WARN and only see LOG_WARN, or higher, or he can set it to JP_LOG_FATAL to only see memory errors and other fatal messages. 

    I only have the log level hard coded right now and with the "-d" flag DEBUG is turned on, but it was coded to be flexible.

    By using JP_LOG_STDOUT, JP_LOG_FILE, and JP_LOG_GUI you override this flexibility.


    int jp_install_append_line(char *line);

    char *line - input parameter, this is just a line to write to the install file.

    The install file is a file that is read line by line during the sync process.  Each line is the full path to a file name to be installed.  Once the file is installed on the pilot successfully then that line is removed from the file.
    example: "/home/base/AddressDB.pdb" will install this AddressDB to the pilot.


    int jp_install_remove_line(int deleted_line);

    int deleted_line - input parameter, This is the line number to be deleted from the install file.  The first line is line zero.


    const char *jp_strstr(const char *haystack, const char *needle, int case_sense);

    This function is analogous to the C function strstr except that it has a case sensitive parameter.


    int jp_get_app_info(char *DB_name, void **buf, int buf_size);

    char *DB_name - input parameter, the name of the DB file to be read.  For example to read the Expense data you would pass "ExpenseDB", leaving off the .pdb extension.
    void **buf - output parameter, a pointer to a pointer to a memory area to be allocated for the application info to be copied into.  Memory is allocated and must be freed by the calling function.
    int buf_size - output parameter, the size of the memory block that is allocated during this call.

    This function retrieves the application info from a PDB file.  It is packed and must be unpacked into a format that is specific to each palm application.


    int jp_open_home_file(char *filename, char *mode);

    char *filename - input parameter, the name of the file to be opened. 

    char *mode - input parameter, mode to open file in. See man page for fopen. 

    This function opens a file in $JPILOT_HOME/.jpilot/ Its analogous to fopen except that it looks in the jpilot directory for the file.


    Using J-Pilot database files

    To write plugins that utililize j-pilot's built in database and sync abilities it is necessary to understand how the databases are used.  J-Pilot treats the pdb files as read-only, except at sync time.  It will not modify the pdb file in anyway.  Actually it never does, it lets the palm pilot do that work.  I may change this in the future to achieve faster syncs, but I will try to keep this API the same.  J-pilot keeps a "pc" file of all the changes the user has made to the database.  These are "reconciled" at sync time, and the PC file is cleared out.  So, after a successful sync all of the data should be in the pdb file and the pc file should be 0 in size.  The pc files have the extension ".pc".  So there will be an AddressDB.pdb file and an AddressDB.pc file in ~/.jpilot/.  The pdb file belongs to the pilot and the pc file belongs to j-pilot.

    Records are just chunks of data.  They must be packed and unpacked into some meaningful form by the desktop application.  To do this it is neccessary to know the record format of the palm application.  The palm processor is Motorola 68000 based and the palm stores integers native to its own processor, so some translations need to be made on integer data.  There are examples of this in the pilot-link library code.

    To modify a record you must write the new record to the pc file and then delete the original record.  Actually if its a record in the pdb file it won't actually get deleted.  A "deleted record" with the same unique_id will have to be written to the pc file.  You don't really have to worry about the details of doing this since there is a library to do it for you.

    So, when you read a database using the libplugin calls you will get records back with different record types depending on where they came from and what they are scheduled to do at sync time.

    This is a short explanation of each record type:

    PALM_REC:  This record was read from the palm pdb file.  It is unchanged by j-pilot.

    MODIFIED_PALM_REC:  This record has been modified by j-pilot.  What this means is that this record has been deleted and a new record has been created to reflect the changes.  This is the original record that still exists in the pdb file and it will be deleted at sync time.  This record is kept so that at sync time it can be compared with the palm pilots record to see if it was modified on the pilot and in j-pilot.  This record shouldn't be shown to the user.

    DELETED_PALM_REC:  This record has been scheduled to be deleted from the pdb file at sync time.  This is the record retrieved from the pdb file and there is another record in the pc file with a matching unique_id to mark this record as deleted.  This record should not be shown to the user.

    NEW_PC_REC:  This is a new record that has been added by j-pilot.  It is in the pc file and will be written to the palm during the next sync and then retrieved back from the palm into the pdb file.

    DELETED_PC_REC:  This record was created in the pc file and then later deleted.  It shouldn't be shown to the user.

    DELETED_DELETED_PALM_REC:  This record should only exist during a sync process.  During the sync when a DELETED_PALM_REC gets deleted from the pilot it will be marked with this record type and then as soon as the sync is finished the pc file will get cleaned up and it should be removed.  If a crash occurs it could be possible for this record to be in the pc file.

    REPLACEMENT_PALM_REC:  When a user modifies a record if its a pc side record then the pc record will be deleted and a new pc record written.  If the original record was a palm record then a MODIFIED_PALM_REC is written out and then a REPLACEMENT_PALM_REC for the new record.  Older versions of J-Pilot would just delete a palm rec and write a new one.  This would give the record a new unique ID and break some programs which tracked the unique IDs of palm records. 

    The SPENT_PC_RECORD_BIT means that this record will be removed during the next pc file cleanup.  If this bit is set then the record can be totally ignored.
     

    typedef enum {
       PALM_REC = 100L,
       MODIFIED_PALM_REC = 101L,
       DELETED_PALM_REC = 102L,
       NEW_PC_REC = 103L,
       DELETED_PC_REC =  SPENT_PC_RECORD_BIT + 104L,
       DELETED_DELETED_PALM_REC =  SPENT_PC_RECORD_BIT + 105L,
       REPLACEMENT_PALM_REC = 106L
    } PCRecType;


    int jp_read_DB_files(char *DB_name, GList **records);

    char *DB_name is a pointer to the name of the DB file to be read.  For example to read the Expense data you would pass "ExpenseDB", leaving off the .pdb extension.    Both the pdb and the pc files are read.
    GList **records is a pointer to a pointer to a list of records to be read from the database files.  Memory is allocated and should be freed by calling jp_free_DB_records().

    This function will read the pdb file and the pc file out of the $(HOME)/.jpilot/ directory and put all the records into a list.  The list contains structures of the following:

    typedef struct
    {
       PCRecType rt;
       unsigned int unique_id;
       unsigned char attrib;
       void *buf;
       int size;
    } jp_buf_rec;

    PCRecType rt - This has been explained in the previous paragraph.
    unsigned int unique_id - This is the unique_id of a record.  The palm assigns these when they are created.  The PC records will have their own set of unique ids.
    unsigned char attrib - This is the attributes of the record.  Look at the pilot-link code to understand these.
    void *buf - This is the raw record as read from the DB.
    int size - This is the size of the raw record.


    int jp_free_DB_records(GList **records);

    GList **records is a pointer to pointer to a list of records to be freed.
    This function will free the records list and set the pointer to NULL on completion.

    This call should be used to free the record list allocated by jp_read_DB_files().


    int jp_delete_record(char *DB_name, buf_rec *br, int flag);

    char *DB_name is the DB name to be witten to.  For example to write to the Expense application database you would pass "ExpenseDB".  Do not pass the file extension (".pdb").
    buf_rec *br is a pointer to a record to be deleted.
    int flag can be either DELETE_FLAG or MODIFY_FLAG.  DELETE_FLAG should be used if the record is being deleted.  MODIFY_FLAG should be used if the record is being modified.



    int jp_pc_write(char *DB_name, buf_rec *br);

    char *DB_name is the DB name to be witten to.  For example to write to the Expense application database you would pass "ExpenseDB".  Do not pass the file extension (".pdb").
    buf_rec *br is a pointer to a record to be written to the DB file.

    typedef struct
    {
       PCRecType rt;
       unsigned int unique_id;
       unsigned char attrib;
       void *buf;
       int size;
    } jp_buf_rec;

    This function is used for writing a record to the pc database file.  The record type should almost always be NEW_PC_REC.  Unique_id can be left blank since it is an outgoing parameter.  A new unique id will be assigned and placed in the structure.  Attrib is the record attributes, buf is a raw database record, and size is the size of the record.
     


    Other Miscellaneous API Functions


    int unlink_file(char *filename);

    char *filename is the filename to remove. 

    This function is like unlink except that it looks for the file in the jpilot directory. 


    int rename_file(char *old_filename, char *new_filename);

    char *old_filename is the filename to rename. 

    char *new_filename is the filename to rename to. 

    This function is like rename except that it looks for the files in the jpilot directory. 


    int get_app_info_size(FILE *in, int *size);

    FILE *in input parameter, an open file pointer to a palm pdb file. 

    int *size output parameter, is the size of the application info block. 


    int read_header(FILE *pc_in, PC3RecordHeader *header);

    FILE *pc_in input parameter, an open file pointer to a J-Pilot pc3 file pdb file. 

    PC3RecordHeader *header output parameter, the header from the file read in. 


    int write_header(FILE *pc_out, PC3RecordHeader *header);

    FILE *pc_out input parameter, an open file pointer to a J-Pilot pc3 file pdb file. 

    PC3RecordHeader *header input parameter, the header to be written to the file. 

    jpilot-1.8.2/docs/jpilot-sync.man0000664000175000017500000000150512320101153013633 00000000000000.TH J-PILOT-SYNC 1 "November 22, 2005" .SH NAME jpilot-sync \- A command line tool for syncing jpilot databases to a Palm OS device. .SH SYNOPSIS .B jpilot-sync [-v] [-h] [-d] [-P] [-b] [-l] [-p port] .SH "DESCRIPTION" J-Pilot preferences are read to get port, rate, number of backups, etc. They are read from the directory .I $JPILOT_HOME/.jpilot/jpilot.rc .SH OPTIONS .TP .B \-v Print out the version and exit. .TP .B \-h Print out help and exit. .TP .B \-d run in debug mode. .TP .B \-P do not load plugins. .TP .B \-b Do a sync and then a backup, otherwise just do a sync. .TP .B \-l Stay in a loop, otherwise sync once and exit. .TP .BI "\-p " port Use this port to sync with instead of using preferences or the default of /dev/jpilot. .SH BUGS See @DOCDIR@/BUGS .SH SEE ALSO jpilot(1) .SH AUTHOR Judd Montgomery jpilot-1.8.2/docs/jpilot-address.png0000664000175000017500000015052612320101153014325 00000000000000‰PNG  IHDR;F%ýÉgAMA± üaÊPLTE ® „‚„´ÂМ4^Œ¢´üŒ’ü\^üÄÎü\^l´¾Ï´²Ì4²$ÄÒìl‚”Üæì\ftÔÖÔäæë$&BÔÞäDFtÄÎÕ”–»\z‘dn| ÜÞÜ<><465TVTœžœ¼¾Ô,..ìîó$&%|†”DFEôöù¤²ÁŒž­LNL„†„ü¬®¬Ln„„Šü\fü¬¶üÄÆÄ”–”¼¾¼l†œ$&üdÄ2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœì½sÇu/8EWÙôS ^éVb†ÑÞµ‰ë ʇ¢¥m˜ŽÃ6g4Π»Öº ®MD  ¶ ¹ü’*sÉõ[Š—pîÍ}0}µï9›0CÏšqÝ}yµõžY mqC;\.ó¥T")ù¶¿ûœîž¯‹/’ºç~ÌLOwÏt÷9çwN÷L··â¦Å„ð>õé¢$6÷V<U¼œá}êÓ=DIl>— µ¾XôéÞ§$6¿– ïè‹EŸî}Jbó>ZôéML}´èSŸ,ê£EŸúdQ&ZDŠØa-v„DmîÝ•öî‚÷)6—õ&¶s bÑG‹â¤8“×¢ü¹c±xê_¦Ó12ùۈЋ^¨¦Å"›>Zì 9¸Zs©RGì+"ñ¯Ž#3ƒÌ«¹.Þ§¼¤Ù\h2Q}-dÌ>ZôJ†X(>—5.¹]3¿†·XD8©ÈT_Mÿ"°éSnlÁÚ»– }´(N bÁwÁI·X8Œ(y Žœb7}ÊOÍ¡Né£ÅΑ۷jßÃÜ.Ô”! ~J_,v€j bÑG‹#Îä¨S#M,YÔG‹>õÉ¢´¨ÔÞa}+$>ùëûß{ú[I`ókÞí=Ð>õ鎧EïrŸúÔ'Lž7ô©O}‚4íy—÷ûúÔ§;Œ¦ûhѧ>™ÄÅ"ìúŸþG} Z´û¿þ¯ÿc?î[„íý–Ïþ§ÿ¹s>T,&ÈFP·\.OÌA#pÒ–£å`Ä}ZÍç¨Kfº>õiO¨¡þ¼'»ÜQ@ýŒ ì†fag­T’ÈwlˆšK}æx01èÓGŸ ÇæN šñÈeΗ©pP1l„Áà…à϶{!œ RÔ8†f¢>õi¯ˆZùeœ‚Ë)§^àÆ'ˆm&“žI7gd—.€Óa#,_8~å¸*ˆ×ÈQš[—CP# ™D2ô"ð^<Ñ‹>íEÔ±ÖlÜe!g´‹} aDQ†¦öR`°; ½HÂõi"$—.^œ0bÑ,._!ûÑØCjÏÑßÄgžÙâö©O™Ô *3àhAõµRÕ¨'вn›F .‚£ #n“=[¾ÀÓÇ‚rGj a¤››Ï“[<œç&õ:¨³ ÑÜo+³ÿ{óý¸ËݦAØ8<*¨ ̈¢1B‰<:@‹3—Êsƒ¡>ÅéhDcëÓG£‹¡Cïwùµƒ`hnä  âriH± RõL¹|!´’õ©O{CÌ[ |(ؘõQ—[ê‰b€Â}(l ex¨¸â„0.Ùþ`>Ô§Å™¶•²O}Ú Á¿Ø‹#Ëž(Jí EQ7Hâ×vWL$• 1šXDqAw¤õé.!¦ø½¾jïSŸLh‘4"(©—ÑDGfû>ÀÙÿõ™¿£=p“ŒÚ§>½©È ÷ìR}ùêÓ]Aá.ºÜ}!èÓ]K¡F —•r*ëg§ì5§þ¯ÿÛë_Z´ÓO÷©O÷"Q´’@½KF_¦út—RZì([÷e¤Ow …°'Ê4° õb á”½æÒÿõ{ýË×ÕÎiGöIÒ¥¡‰¡½ûïÉeöæ*¹ËŒ+£…’>ÝqÄÅb/8½ d…{r•Ü4m¢C*ZQ©´&—&[•°ð¥L9ëË]OÄÄÂz³xiÚ~yW®r'-Ú8mŒj#ßÂ2±†‡½aõbÆpÅ#Õ@Cù&]£ÿKÿQ©˜·æ3Ý=Ú#=~G¡EÈÐÖz Z‰XZX{ÃõÂj$Y<ú”öÁˆÚ =¾7˜”—œhát-˜(LV;JÕú;6c:ѧ]¤ˆQ»Ä.z¢EnߢB¥ UiΙ¨US£³D,¼ªõDÔ§]¤}@‹½Ðã-ïò„­4ßBWá$EŠÊÔ ‘ŠÅ1Ñ>o´êKÃãóaÿÞA¥»)¿X„t5“ àPíž*rÁÜzüD¹;»0s”…ËñKº\Ù*Ù én7ãf¤§“Œ2„˜P‡TÜ8±¸8uâFt¨sŽÛSk“㣣³Vã¥Í‚•*ï»dRÛ¹Ë.ï9«‡yn‚­ŠiQB:ªËΔ;…”!ÿ]$fù³ÇÃãGT4› aÏ^ ? ïyèbl1l\ 6`ùtŒH‰EvU‡x/DAAÎiòŠ<‚ˆoH æJšû*¡¾L(þõ±œM–—=W¡CØÅêÙò-tO•ç†ÓÜò &FH‘‘“a¹K¦¸X÷Ók¢_¯{dþ¼@1?¤œL»2]àçCâ6a(v¥qé|È;U肱‚‰¹¤tmÑORŒ¸t…öÛ±V‹Î3ë“õ뱜øÍ”GU·ŠºÍg?#Ãä†X*‡Î¨ûW›pDŸؘk\d2®ä™<-dV]±'h Ï'+˜rëqœyÎ ¾E¢Ü˜”Q‚^ h“~‚V’‰ÏÛ괨̠BP>м½Zétš/lÑïnT÷ªU]9nÌŠ"[¬Š~º‰¨v'þF(;ùXGüØà¸ÖÅãÔ’¥z·K; )#Ö/!²‚@õLP¤פýzìH1SyŸ.Üùò™P†‰ aø+ƒâ´"Æ3´Ÿ©¸Ý°çÌå[˜™·ÍÝ<2"ηr=AÛSq@¢O^% Z;ùtá»$bîF …JÞò–:[ˆ\\;Õ¬L5§šÍÊ u1juæf\_¢xÒ“62Á·(MRCœøgºëäçƒpâ3#2þ™3×ip$°Ä™Ž&•F”ìÎî¢v¡ý¥M,Ò@b]ÔFÔ‰9êDа¹3¡°¯$žÐLÛÚo!‰i 8*n¾'sÜTàQÁQEß·0$0/Wd^¥W°ë)5å¦éÌãYo¡ºµU{_­Ò¬Õš‹÷½z³Y«Ü¦ÀñÚÊb5F(ZTªaRï­>#Œ(Þ•FlãTõ6¸*‰¨Â=ûMjqbŽIÀùˆwBtCg:î](—[ ~ÒL¸òñØàÒñö뉎í£Ú½~VvgRA|퀆:Î6$ú…²º¹aÅ|–Ç WâãÉ*nO¾¯ºìg¢rf¤÷Ó3áz<}—b¯eÞgƸEÞâä9›£(ª'JÚxæ3R«ÞäVµC̨Z§9Öˆ¸!Õ锉‡±5u[WWׇ‰XÔr_ؾ_ M]Úö 15ÈæQþæˆͺÄåùð™ò7þçØã’CsåS]Žt¡PöD-}T†àÍ‘¹r(úîDW¢è×þÉžºãgž¡½°Dç3hФ¡è™=3O6a0RžaÒÌ5¢9dÓ˜£®A¤·Ì|yr/<.‰ÑmÌÂçý1â¾…\zÐõkÂ%-3ÌÌÄJ‰‡ã‹¬§å.Ø7“˜÷D®’˜½¾Ó¬â8ÏŠª˜V!YE©&¾o!›aÉ[Øj+ªRïQ\#²ñjµJ¬¨‘ÙÎúøjôñ>šµ YêElÃ@÷ºÉý—|¡Ýó ’´¥“êˆD×CÇ•ÈxëÊÆtyF‡£Ë'd”pwÎ\Þ-†úÕá>íáö1F¹CbDmܪ·¶¶¶^øHw­z(ŠÞèT£¨¹²¶Iì¨kôAªVi=67Oç4.t'Ÿ;‘«Ã.Té2ÉdÚp䛜*4cØ;ˆ‰E ;éwÿ£Kq÷_¥ÀÝ-lúuoi´Näb†ˆÄËnt£Ú$âq»NÇò&©¤4<¯ÒÌ?HVp›…ŽpÛŽuÅȼr®H{GZÞ\,r×ö¶I‚÷î^qo®’—ì«Æ4{¢‚Š7¼²V¯×¯‰wòNtjl˜»U½9³Ê‚<¯iQ¹\‹\ü“)IlRÒ%_Õ uH ûz ˶}Ö¼¦#f!×B¡Å^‘Ã4¼k¯Ò;¾F8ãy“+£+[ÔÕ#òPë°n¨¨¹>>G0ä”çM)´(lFÁ6O!3Ë;qŠDRN:ÜÃÎËuiÔ6¶YñrÓ^‹Å^ñë&˜@O”ØxÞæèää êUÔ·ffZõ±¨KŒ©±ÙÛÑå™nTõ¼úfNW+È »i™ì%e`O®Ä=ŠE6 ¥Çßî5@š/Û¼XZ s³¯‰ÉçCújÞƒ“³/DˆøõVëÖËìÍÕk›­(ZžiP¯}ñÜí"ž¤¾3C3$9Nhä¹^Ž»Ëˆ›#Bj ±Øïiyîy‚¯eVOTÀžþØØX8DÐbp¦¾2º¶E„‚Ž_Œ¯DQwf½z®™Ôþ©²š‹A’Ùåé2¡Ü ζ3cäÈ2ÉtÊ’·jŽ‹ÅÎL®Ó§D2ÐÃíR+jycõU‚D®£ÓDÝntÛ‰—®R©¸ùÚ},ö[ÐïmŠö¸'êÍJº†©,Øh´¼áÕå&s(85E7½ÅEŽë#Gerúëk²]¥½w¹û| iU‘ áåá :’7Çßµ`²2>Ne‚ÀÅ—á,úªl7IˆE; Â"¿”OžèÛ¼„•GÊ¥‹f[ì“óІéŠßÎã»MoiÁ{UˆÅ êgxËW…cQ¦/Þ ýDw½Ùz¢vŠz쉻æ(7•œª·9>LûŸÌÁ Â1Kq‚ Æ}çì«s=Л¬ÚšÂŠÏ"Õ“v¡ä³½ß(N‘ £çUˆ2ޛΈÚËžÙ¤pølsvy¡K§6 v‘[ò‰ªW_.¿„ ƒŒ²¾!gª¶½—¯'*í¬¾Xá5/ž–ë|ÞV¥[¹HØ~öæ;žgïÓúÙdôDÜUX¿º¶é 2ŠÎ²Ê‘Â[»1òlÛäÖÞê%Û»ßØÛéÕ²sÚ5_1D{öÑö~æ\O‚Ѝ }G*/¬‡G½ÉµáMöíXMBű—Ø+˜È³-Pô›®QÜ1‹ª¦Ôœ³.‹c™Á^ž;G¹ùz{>‘ÿÝJÖ;ùu¢m8f,炲ºQ¯ƒÒW›¯zማN#’É-úM Gnøój5+ž™sÖeQ,ó¼x)Ù¼»”©¦ioÏ×λ+hzÚJ\Á(/鄿Ûy|Ÿ5B}cm«³ukeíÁÉ•ê¯6oŸ;wó„: h/Wê¹iw—õáb±—kçÝ>jUzh Eü#šÆœ7Šï„œùG×ZÕÊÌÌL“ÐÔí¦u9öÿfø–KIíæ²>Ó}#ÊI-»FZ.V–Yž…A®õ-D?QíTkµZEÅ·Ž7“&›¶[ƒQ»yA yœÇ{ᗃ³V¥‡ .w²¯œ¸Òjh›K0Mo&»wÚ–6¢zhß,j½ù|‹\5§ÑBMªB¨œæ —ë‰ǸEÛ±'"ã>(±?äŽÜ³¦HW"½©žRdÓ–ÚVÓ*9[³ ¶½üÂ7«o‘U1-ÚauEmôå›·7à,ƒ1am‡õ$SLè”mÞ ¥¤ëMï â¦äTRIªÜ¬”^Èò-äÔTtÒp$3PZ7òn'ÙìqV^Ô·˜öÔ#–ßuÆ«Š6CÙ.£Æ@{…ƼQ¦„è§ÜÀzß2·w ï4’&­PR”ö¢'jD!rØ›O¦%æ+lòÌÝÿËEgY„\X„-”X„¢ÎB±ð¤£+¾‘¬È} A3õÉ¥…õVEMÒiݹV–P“ÑÙÃî=MæTR|ÊVZj±P# ˆ—e>?–”Zö{–o!®J'm„l2^:ûüÅ€ÍÉ~P>éаŠó-œhÒªj<;¾^!Õ?tIÌp_ŽÊe>o½UíÎg¢¤á4…gíªDÊî•xG¥ÉA!M‘®DzS=;¡ÈDˆRRmé[´ù<‡°ä4´r^PIùÅ#CLßL’~¾Ì¦n§Ëñ9Dƒ{‹R›UÀvþ ±83Á3áUEk"MD×y¢SfÓÉêédÁ|Þz|Õ -jB(––ÄÞpÊä:¡ÉÚL“Ñ@.žH“E圚,EOäØH•D¸»\()^Ù¢·t%"^æ6_hƒÑJóRC=Ãf㤋s4dtÅ\º°6_uC.ë‘ä[DLßE 6Àjqo’ Á±‚52ñ-ÂD Q¢ªB¶2+A†FÈf¸—ëë•6ÛjÂó682A˜­Öj33•J­5ºÀø»6G žÆ¡ÉØÜɃjUÎ\”ÎÈû+gEÿ+ŽTRÂÌ%õ{Џ+fSgárAR»Gù Óbe U,öF×Ù &VÝ`Ëz†XÐŽˆNž8H[8`2Á/Äær×E½›¹HÀv[µ‚冾…DX^U|]”àø• Ÿ Ä ÷r{ÛqND‹ ˆ‘h¤9S™©Ô*t^ÿN• †=U¹Ã·˜#âÉÑ¢&»Ã¡¢ •”*ò-xXq#RµÑùV¬Á¡4”ZœC¯ºÁT??wið|Ès7| YÇì&ºLL¸ê!ùìlq÷‹²åC7„x¯ší'öDW'T@Î4ž™à3ÜG|{>o½Iî÷-‚I"“¯‘Ì_¯P° BÑ©V;õÍáñáIãÆ±oÁ5YÀîÞÒd…ûT;álz†ES¥ävQdO/5³W™%±s^ ÖPa çU¤Wìà†ÁÄgƒߢ-èZósÏ\ds²÷¥5wòæã±–°ÐôD²zƒ`„è9Ãý³r¥M[ ÏWµƒI‚'Uš$÷©ÊLs† E­ÚºÕjMŽ/y³† ^°k³ òµ$ŠQw2a%Å eøbÅH­-]îÆÅðÖP$êùH,àËцä!ÎÉe=Lßâè稗‚äçî:Ê x¢!˜\ˆ ³'j"ÄÙ… šBø!®:%w`ZE…`Šɹ¶HþˆTÀ¨Õj­[õúúÂÂð(ÊF¢ëŒaœA"¹Å<×d>B{ 10 ’Šx¦Ð·8„Ìåfb!ËL×é}–8Ñ\C©µ€YÔgªŠ8ÊËU7FIJ†oÁ–ø¶ Ø."î÷—$¥!”¢ˆ¤ÏÍÅâßøÆö ·5œäò-VÔÊtBfºlý‰©©©‚µÚÖV}eÊŽ­¤rBÌ£ÏîR*µBdW:UœvF49”T‹=A«/–—ŠÉ|T xGv$Vó-æ•oÇUwºtwå)î‰âA´'êòÐÐÐeöÒ=¤I–zÒUÛÖûÎ0;aŒ`ÆM)­úèÚäÂèÂ8¼†ò-„&kƒÜ壠üÊÂ8ãØÍ‘Êz›Ê,<«žt‰$;ÛOÐBO@š/Ïá‘$+•z „Ý£ÂতÆÏDªÒÌ÷-22 ,FAdäÕ¦ó~x+3µ¨Û%’1óRôÆÛ·›ÄÃè±hÕG×7&'Pó)߀;‹v⎠’¤þ0‚Ü3. *Å3| Wò¨Â»Úê/Ô’FjS,ð7ie(|ßBhwêXTj "èÈ}Ñ닯OM5éØu.FG7Æë£ ›üï[ÜíóÕn<å’‡ø„>9ͨ!;I–„ÜÍ¿l²¹Ž-"¬d!L®%™Íf#çµ4b« ¾~âÄë‡ÿ³¢:ÄŠZ[Ÿ]ݨOBI4l8ÇÕòËCŽøû*\RIµµ’jåY`ÚPQf’Ë”õ¾Å= jz#Z! ðmõv^¨…#‡±ž¶Æ-(XÐ~§E6!óK¯Ÿ»yb‘XQ¬/Š ÅÊÚìÂ8±¥ÞLæ :nÀ6+2´„ût;G&îTí´Œsg5„»7ÚAÆû6µÍƒ¶#\QÒûoiHm0G¼|oç%p™EžyÂóF+J­ÑÙÓn>GÐâ6ñ¹+-ªL,¼É*„‹š,Okî^‹ïNÎà} SóÛ0=J*}‹i×"»)kßý½|ð´kÍ`½#ÿÏz¸êR«9-B¡…ˆíy·èãA:sÚÜᛯ/..ßb¦V!6T}tmcsy³6ª“dùø¢Êõ˜éÎHÊ%û}‹„‹&ß 8#Ä¢àjºoR -Í’·]ÚæŽé[T‰œßƒkaÍü¶¼¥N§C=‰kÔé™9@ÄbŠçUoÕ''76—¼V¥ªSì·Ž¸Ç©ð„8¹»ïï5*îZA`׬ÄYo¡ºµE,¦Ú ¶ðð‰ÿB°¢Y£QD*Fé(7A‹Š„‹6uCs+²{ïKÿ._;»ñfbq9¿Úœö~¹ ¶±(ï0A¼È ©ýA`Œr·ƒpܛܪv:ÄŠê4èR’QsfŠuÎÖª[­Ñ•ÉÙÍ¥Uok¬Ë=A þ,úª]#<雿hnæwzÛ9àÛ8ë¼@òå g/SÑ?.Ï@‹iïìõ³ÅÉÛfÄ;£°¥Ôc_‡82WC÷f[·¶˜\L1¸ˆ:µwLÔhm1° 6A‹™švo†ÎN ]¾«>^î@÷•÷òîÞétQ#j:7ƒCúTÞT ?ÕûÜe&etȱÜQÚ8’+Nr¶5n ÞÆ­zk‹N%H;£ˆ×ݨuèæƒõú ížÝ\ZöjMý^w8á˜jïŽ&gßQÏxì;8ˆÜÔÙ¢óD1±¸~öÑb?Îíf~"’àí哜ÞsO„ó4×·¨{Kt9îꋚxtý\¥Úˆ¢7b¤jÞ IDATÖ$Xx3-ÁÄÙ»lλiñ>]v`™ÅݵâO{…Ñ¢Õ“õ©¼©"î ZôFy‡ÄlKË•Òå+ž·²V¿µEí¨Î"](ŒZRS£ä¯¾F=‹ñe"Ä·P¹ Ý}há˜LywgX¥¥ÞiÉÔ³a~/ÁàömEüÔ>ù.Ó¨w,Ñ)=3Ìó&GWFë[[T2Nѱnú(mµu_]˜¥`1ìyS3 [÷.D ‡M²»3,÷HL,æ5Zt鋬Éo:²æhí—Xìšs‘RX¼gÜ&çb„šøWZ%ÇD,6×ÖVˆÕª¶ª+côÉ(Š DB–ˆT¬^õ¼Öíà CŽùŠïd¢O1YMè Üo¢75 |‹°;wTÍ?•œ†²é£g¿=üø£t{öú°ØðCç—°57~œlßÅÓ¹øŸGü6F¢°X×%ZìŽkáʹ8JeŸçyëëkk£ÄøÕj­ ²g£¢hf-Š––ØêÜ‹÷,tQœËì {Òˆ¼SÑâ,ô-¢óóì¥q>+^Ð85?7Dœ^*дO=õ”àäaÎÈœËMG‰Tü¹Çy*¦øÈˆ$ûñ³¬·–‹É.Q…#=‰-SNÄpŒrS¹Ø˜œ$ˆA £^_{ƒû76¢ÚøÒ&•Š«¯ÞhN€7¥îÄŸErY/ollÌóP`íÓ}K´‘h–‡èô rΩ ÁDã|xt..MÈÉñdí𣠆‡ßåÉÍõáwyŠáÁXàÿ”Û¯›§ÿ6‚ñëÏyÏ Ÿõþà9“& Á4­Ž(²÷$¦|Ê~˳Gråâ6‚‚rÜF¶¹Þ·X^X˜$ˆ±²6::º2{ŠõF]&®6ý]õN:„ºõd-3|S'„ºr>Nˆ©Z÷Œln“3;q±ãŠòÙ­ùT ۃ졖1nÑ †ÊrV<6çTÈfË#!bz©@ùŸ}×>üìã$à©?`0öS!app]þk— åtÊì$ö·‡Yº¡iuD‘½'‡÷v- T}¯f—;Œk?AKêuxis 1¥(mNQ±85{$zi“>¤³>xä0ÌJQa47‘1jùLfdÝ/Rn„‹1¯Í_ÉÙDà‡ËwÌl®¡ì‰’ãDéD„|Î)6YHWL/u†}[÷Df~ü9Î÷T¥³ 5x®?GpâúSO=~]üs´à!Å‚fÂb“,†Ÿ{ކ< "2YyN‹ÅõO¡{wÜ%Æj;wsPrBó} R:ïêêÒ&Œ…ÙÙÙõõõÙ¥…sbã]žûÆC(ÙÕ=ÿ ›éhp޾]fø–ç†ø¼ª¤aÏŒlà‹#å‘‹(R÷H¹LBTj84GwvR°¶r#¨uˆ=GoŸ籉Àƒè8»#99ìXˆ½"Ö&Ó-¨¼NÌÑɦ؜Slæ!ñ;ˆÉñø¸±š¨}$åAŠ…ö4Î>þ®qõ¯@€QÏ ±à¢!xÐ ¹Ns'‚b¢ÅÎ#k¢i”z©$+/j8gô–––—blnl,lßÒUï{ÌœòБò`å&{¢"jø6¸á[¦†o8ц/ŸWõÂqÝ»(gÙf‘‚ ŸMÅ*RGÄlž ¹3á‘ ;­}¤A‘‚’'¹Þå³[“‹Ë{Grjë=t-˜o1| r]>+^¤æU¥?1½”쉺þ8ñ·¯¿ë]gÿfD]çÊÂ׉=uöÛlœzXþ9¢.ã´#êQær3Øð¸ŸþÔ»X(giöÔŠ.÷¾Xm´—W(“âpÛ& ƒª·¹ä-/m®²ïÒêÒÒÕÕ©Ékѵ™Žw³ûÒ91®+r‘=QÔð¥ŠKLͦˆ†/iУ¡ 1ñªŒÔes°¢É¤YÜ+Ç©dä,mJaQ¥É ϼרP¼ÆÅ‚O÷Ô•³[Ó[Ñóç†Èzß;2}‹PýñO”Lj»ÜãÔ ,ÿèÿ4Î\îçž{—Ðì׉Mb|ø9b?ñ´ƒö9ÖA;üÜu"èàâYâq(#êÛ;ä[8•Z!¤°%¥í:Ÿ`?‰øh5$•Ǻ·±àyãã««›KäyyØóØœÝò#xàFöD…Úð ÃHL© _êZa‡°ùW!ˆÄyšÍlRÂòyl±mXáÔÛ×Ôˆbhª@5}nÐ@“Ã6d!ö”ˆŸÇ-xó…ò_µnv.×Ù<§‘þhÇõ¼ÃyÒ·03üÿÚYp‡äŒ•Gjœ&”)€\hAäbx}uë’-oq“ÅHÔyÕÌx¢*| eøÇùTÚÒð=t…¾á퀒.·˜xDê2“EN&Ý'Û³ç]5ݴȈ Ťht2ß®ºGTˆ¼8½}j³;ÅãÎHxÇz°¼È£Næ Æu#ù£h”ÈÇŽ¡ERù Êq:ƒ8ZØy¬x“£ëø5±s#‡ß¸1x.0Gù‡ZpÃ7”“­J×zÔð ŸemKgd=Â'^=Bë8º2B\n1™4[[ˆž*ëRîòh1véè¡Õh¡îJOËÆ ¤õ¾w®EhŒ[1ìòµƒ´˯+—csj˜N GdÒ·Å º‘%î‰ÚQReu¢BÛ®—²·È–ò6ãû­ÕúÊÚ²–ŠáÚÍ#G^uÜ¢·¸.ß®…¿@ÌP«Lb}²ÍU´¢Pßî³Ç !ìàýrÆ™`×ç¾Å˜ô-&ðí†zÛÖwµ·4ÝÃû-ï,–ÆBÑÙo£T(- ¢ò£äºŠ°sh± OÌKB„ xeØeÜM}a­Eg5X{p}¥ú«ÍÛ7oÞdã!Œ¨ž(qß7/T<5©«æL:¯­̶E-X¼| I{g+¥’ñL”“ ðp=AëGSòQ§Ì„ʈzÔº,À<Ö3º;[!(SoN0¹Ž"ÉØÕÑÉ[ÊÌÌL³Ùœ™ZçLR“ª›jÙy{m+Dæ«$`w˜RåÊ;ÀÜ 4Cˆ£uÚ8õÞL[Ý©ö-*Τ–§²õ£ipqýÛV*. X s"}Ž[Ûfm¤ÉIfã\J¬Ð˜\ÇNRíÔjïPoÙO¾„Ö´v~Ù¸‘Yâ^õ•±\“õv^ºÖÙÎÝä¾cÛ·pVù.OLL /§!µÂ!„.O ‘?”JŸ4ÎeãÛ ‘½¡}üfÒOUé° ™qå4¥M•ɶY/­& ¥M!Ø12®–å…¤ýKÎ'hÝw±w–zø#Ó·HAÙð—Cö÷Ë!§Ø~ž„:©ã:Y÷¸û‚Ÿu¢_ˆ“©ž'þ3F¹ÛIíÀÊLžÒ‹>Ø´MˆÇÛçDƒzXTP˜ýí½¤|—¾ç޹{”“Ûï¡ØUMtǶ­¡>Hmï[dêû"“¢·Aí„Ù Äcµ´PmïÈå†ÔÿûLår9þj9.ßµd¯a=Ëb1…è@ †²Lß0Vö¤4e6¸ôl¨ëbbXoç%Þ ”’Ýüõv¾pÒí=Å”|úõãýýêùØŒée‡íŒ†ª;=íjŸÁž(&ÚÖÎ>PPIøO'™T0)0ˆ"øŸþO›çÓÉ÷‹Åï…0ZÐÊL¬ó–YZZ{^Ëoâly÷o|÷ij¿Êå¶b$$~;aÞWâ·}éä?ÅEàOžøÒOÿùÑ"øL&è?=ø½ÿúžöãÓ|òäjóKo;yò÷ýø7Ož<‹ÿ/?qò‰/“¼þé‰yB’ÉjÂ|m*ÑPh>Ë¢j•‰Â$ÒŸ®›·5º@‡‚14=pW—ôý¾‹ ºì寽ûîv±ˆ?ø7þãß‚¡ÅÛ¿ÿî¾èÿó—¤õvLþÓÛüÿî7ãø?áû§åÆÿôÿÿþÉØÿ•_¢üÿm_ô¿øi’è‹L¤`î8¿êT‚WaÇeXä'øfg ÙLR©hU¦fˆLT:j‡üf)U­f¸kÅ‚Ïp°ß·‘N—ùkH-R:óÚæÁ.w  ¿úö“ÿúùÿ;þçÏŸ<ù ó-^9ÍÐAˆ‚c ø‡ÿOü»Ç¿ÂØ[mNžü›¿ŽãOúƒ„KùÿNûe¿ÝÇ wÙô¹-ÏÛåcã0‰ºX ¾Å¤G× ›ši6k•ÊÔ}7¢h®z«S_X÷&ª'¸XD_½6ÿÙš‘Ù¼‘üRú…è‚Ü1ïûñ×éÿ¯_+•æöõùƒ×þ2)¹ó¤Gß@3äâr¹L²{ú¥ƒƒÏ <9 ò—»ÜµùÐ ±Í,?¯Î¼8­\¨„ äx‚öŽ!% 1cÿ¯×Xº×L¸?áë°øô~ï¯ï•/®gæ ßødÃØùwÿøóâŸþ—«WÌ>·” ·Ÿmøßü¡+’Ó· RQmÎLU:•Ão|L¼È}«ÕªO®. /‚4qö{Œ/¾¥8¡k6oW~ƒ=ùýà˜ù§é?ùû\ƒ°óß?60ð?'ÄtŸT3ÀÀÒÏü<Éî/nàç¾C ô˜‹¯|€î?Ï/Nˆ]q,Îýÿqà¶WøÌßqdøäüµþlþý—g5Z¼ü/öyþw–Q›Çž,ÏÿѲåƒóòÿk|ék$Ñ{ç¿=öˆd¿»60ðˆ*’æ™ÇäÅ™û |D¡$†¦{A¢~…düþÏ üÃ5z¬åû) ¿`œà»Z~èù¿ÿ…¬ŸFnßÂbO[dö’ˆë@yñ‹¿÷7ŸhAa€±@‹Ïÿ{rüû_"¾6qÏcÿôÿ+q¹ý?ÿôÉÿñm±ÿ'ÿõ‹òÿËA]n‰ÏtvñküâÏ»8N½œ?×x¹ñ¹ ðŸæþ?{QÜ=»œ-ÝùkoyLßÎ[®=ùµ^ÄÀ¤ {Ü"Ź@{ãX {uÿøà@ï£ðPõ*Dnô˜Pàb þEÜ/ñ¨%p¬ƒc.=âÏÓz¢@G×u©ŒQa霢¯p7ænÐ`ê+kë £ ã¨ê%Z”>ò DÕ~·ü1)ìÇù‡ËßÿÅŸ |‹hä.go¹9xðàÜÀÀ÷Ÿüçå?9ó<1H¢ç¹#úþßIÖùÖ‡ 4úâ–ILj¾…ôE øä[~ò$H+“~î%ôr¶XüqvžT磟 üä‘ ë ÚTñØ+œhã]ÍÆP ÿ C]2“I ãþØç¬.þcÄ%ƒÇ`qÕW CÂåvõD!ªzÞJ³s„ÙNÑÍ&‘‡C'¦jÛD.FWF×7gGê0¾@ Î4ïÿ·Ïkƒ)Rá-žï¾üþ¹èkRh3ð•ßyRþ%ÿ¼–/a`x´äì#ÿv@fÒˆ‹Ë“˜Ø;«&Zkþ#±k_xìýªTóóßkéå÷GsÏ˲¨¿8$¤«nçÚ?ü£ÕíÐ A´ªòÿ¾¹áòÂ!pjÍç.¤±ì?ì :H/ô0ýÐ0ö}˜î~Õ—ašb½‰ý"ô0ÿ{˜çw0-âÃÆ5faª®q¾â–bhg€NȘñ½°ko“bǸE>‰(î0p´¸È¦Æ¦“;žQÒå“S‹SÝ áÑÆ…@͹‚ÑT½ >Uê\Ú6²³HªjhxÅ­ÊÈQü­ú˜ ZÀ *ìPúÑ"6z¢˜Ž0Ñ¢î­VÙbõâU4ægškÑH³Óél#‚Ò h±êmUªº>‡¦c@ÐNÄá®0¤a]Uô?¨jäG*bÐùáûà–|+‡¤¬}}hDÔš­§o,,ŸOy[Þ) …‰Ø KʦÆÂKƒC¡6ÅcCž ¢0‡bÎm…ÐF&½/Ø…ÉØPýû¾¯l/Ü¡¤ú˜àP„B v,,Ý&€z@ H³Þlu‹Q•&Áˆ™™©7š3Ñ­ÚÔ}Ä„ê6¢QºPXµRÓÙ UN”üÄø ãcDõñ³Á¾•Ì59¢y‹cÅ´(¤H¼ÅäÖ m‹XÆû £Í;bFqhkŸáAm5 /?Åd¥Ëgé¥ÓU‡ì¥UÀÉà«Mz©éK°…}+Œc ?èüðyP´0| V—Z¬z“[­Å‹±ž¦ˆ‹q£3ÈŸì²¾¨eŠ3Ú·'Z›=æÍS-Jé*ä ÿAÌx~|•ÿуÇî_søñ»Eªwÿ) üѱc/’í××m|Ïâ>‘„ž| Bç Zˆ'hÅ ó¿uìØÆ‹ôàT^H¡6ß)Rüh}á Yç!?Zß8ÆÓ=ôž«<ù÷xNߣ Z½šR¦œ¤Ñ"Õ·h[;=É ‡†M¬M ¦ð Ÿ³†‰YxÉ© ‘šLžþ.ñÅfb¡‘¡ìÇŠA ´À’c—t:ÍôÚ‡WÉ!¶èD%Ž"*hk†?)hz¢™ããÞlë2­V#pqŠˆÅ}‘è¡%ÞÆ¡åÕUúl@‹iq髆~ÄœaqïUrÿcÿ½™zÕ—y=øÑÿÓ~üÍå8~ñÁ¿ý%$~qýÏ“@·Ó¯z‚Öµ\¼ó›ñ[ÆÉÞgVÿ!³_Ÿöã°H?üo>=ò?ÂOüúßò{#)ôæ“{5/”%âK_|Z(EF"b27|E™ØKÂàÊ›[L/›³Ì‹éªÙ­úréÿ’t(€O¬%Á…Âÿ°| ~ ÝIË£´§ ´ˆã4´ðÃÌž¨YoãV½UeÞÅHu*‹µÎËT"T&ˆl, {µfUÖ|\žLu5þÛ‡Žû¬Ÿ~ß±cú¾÷¿>øž G¿ûÁ÷¼• ºÿØG[pº¿üWJ¤Èïêû€Ú|äÁcý;ò¼c ‰þ꣱à¶ïÜû“?æ…$ñ$ñ¼¿#z7½&³ög¼bt&_'¿? l$õ-èîð×~ÿxÔÙš`vó³B¿#ªÙê³üH ÛUVË,…ܰâjk¬÷/Ÿ'*Ç(· 3ŠQ¨gÓArcœ ěġÿ•e£9Ã…åYHh¾F‹ØB õJaßB5m´€µgúuoi¥¾r‹ºÅ(:ÜéÈA¢k­%²Fif¦‚ЂÓUÿCŸŒ{Ýö‡ì1ú«?{? þ¸ÿÞû} $œ¾uøoüø½ +~÷òôÇ}WiÜø‡hJŸnú‘ÿñ‡X g½8þÖÌyl™@ÌòÃüÂý(þ÷Þábz1BËüÕ}’xg»-ÆZ(åòÍw>E#~÷Ç}†ñÏ-ˆSËÿíØÊ7yˆ<’Z HñîÅ<áUÕž=~¹ B´HÔóŠz #3{°BEõDÁ 6¿cͱ@Çq ±0+™vŸ¡„( ÃØZÀèHá™ñÁ… X¤¡Eö(wÅóFGWZ­­jµZc+½Dƒ‹Ô¹8U[ÛX½E*Íš®ŽŒ–©1ûï<ÍÕ±Ï@l®2N¥7ô㛽*í"ÿ›?ZÿY~@ÃNû§—I’Ó1ÙÐø§ßI¥Aæè·ÛÄŸü¨4Ã|Ï÷fyùò$ÍÄÿð2?y•Ç쪞 UlH¾} þÓÿ-£Âõñÿó»¹ÅWÿÔÿÓeˆ¯Ž„øoù(+ä7?*ËuUx0 ‡ŠîðoßÂ! ;3’¸¤¯í8ø¬„Ì'iõ Ö³,­ýµ?£v,`P Ì·ÞЕӷgêás·0q´` òÃ:¶ðu¹7¨km¡Åé÷ÝOÃ?þÔúÿpUšºÿØúÅñ‹"ì‡ëëßä›Äñ<¶öžÁï§<ù½9ó§úþŸÒ>X?þÀšŠ'DƒFz`ýرn¨“?\?öM„c-¤Þøì±ÿ÷XMÒ>8¡ãO?tl–H|üQÖCLŽŽ½—WúýïñÞó•B˜Oïaê!ÐÊù¾%‰?€=QɺÞ2mЉHfì´!·ð6İDÚtІ ßÛÜs¢¶Ñ|Ììà.Š Eœëí<â;lÎή¯c¥J'6 O|ܦ}QݨQg]7§ÎMéÊ Z(†ÓGöŠ04-øÿª*“R;­û>Î.—öÕ ø`_ô +®SOÐe„î eo”V¿YP .±Aœ‰Š©äÃÛ[W3%°¾»¯ I¥T¿x”–—q!Tµ?¡°B¥·ÑBG×:Æ÷Umk¹ê-ã!µ¢–g7×g×ÖF×êQt`öfucã%‹üy‰×_»öV°á<_s"‡L˜Ü I O\µø Raë߂Ζ«™X=A«ÐÂÊÙ‡9ÆR|±y7¾Š¢Ãc¡/ü IDATíU+XÞ½[u,œ ŸåÌ·é[”“]€€R«q]Nlb!¡Òºœ×,8 ®ÁòP P$?Zø- â:ÞåÞò†—6 `LNή4¢››«ëƒ´ƒvlÖ»J¥b}ðÈ"¨ vÐ¥®X í¨cßW¼£U-í³ NÃ/d>x"b&*]´], ½ª›Fß .H߀<ƒ0OFÍmé_-¤™ÏDi.nãÀ¼´½VŠí£âòú+J@I(•#§†…Jò!m(u‰"hgû .–W—V76g7×¢îÜZõEŠ7¶<*ä{ã†^Ažf£Ð"öKÄæd‹{«€#Í̯ƞ ÉžÁáðÆ}õŽŒ•7ÎÖyë.¹ðuÓ—T{çC‹’Ôcùž‰ê™ÉÛ‰©Ú ûvÄPQ.°'zc ´H°!%ô˜hkI‡Ê‹õµMŘŠæ(·{ž¨¦·º´D%ciTzÚ/Ô=žwäÚ  ½<Ç&Ë8v0Ÿ™¼f‰f}Í„R‘Œî?µOu—ÎX1®Áí"®y V«|"†Tm²M xR㱘Oö-Òz¡Š¢@†hØÆ•>ÇÒôGèˆqÛG†oÀ —æ %P§¾ö2Ekɪë-YóD…tžÍMoiiÉk2™\%BA'¥%’q®qã&ÎahÚbG׿#qg¶€ ì’ «Ó  Q‘¤¾‚–ÌÖz'FO#aI1ý•À9󮥶ó[8˜ÀíY¨{)ä[˜œ]̱°Ù=)OLa ˜& ˆc h‹’¬†2¶®8ŠŽÞ|¹G'á­¡&ç»#°lÉÔh”pÉÆUzË××¶Ôè–ׂ¡¬‹Î…L‡Ñ©쳵y9}ö"yrßBW¿’Í¿Jéøàa&Éç%£Y‘jQp¡a@)+¥‹·‹¹fääM®¬#‘ t{ðÆØ9´ˆ^›û¾68´–tUè¢j¡ª ¡†):Õ‡¹¨X1¾š¾溊¥- @ón ’j¤VŠF*BªýŒ‹Ih ”ó+…E óî@S²kaœU0”^ 7ºVd¢Ý¬Ct`€/«^·ÏvÑÂOx& ë 6”ÕÍÑ[kË.V›/¼ñ ·íÚch!EêI_öÉé"(FGÊAñªFyÛ¨à­ùÆâ_}µXëg-£²NbÅÑR1ïâ(ÅV«Éls$Z?@r}yº4ß"G_Q–ca÷éÚã‰˽[ 6ÁM©ªQ‹ÜEu¨ÔGê^¶p ¶1B¡Z2?ZĹž‰b¡ìcòVuëÖÊÚäúÊÖLóö¹s7ƒ³ªj8Zm!÷¥4K9c¬O”R×§ø œ- ¥¸Q;'@½Åƒ:E+ …P;!©…÷$,(é‚*AKe ³F°(I9ÌxßbÛ&Tb®I\Na ƒ§ö £äÐúÇXýcañÀ§ƒGâ+?Æ÷£ÿ"ÛQŠìdŽ Úc¸¦9‰[zLçÊLsÌA(ÀVÖnu*333SÍæÌÔ┨£v†¦…P‚!™ð¼´Û•ü¶0«­ÔSûÔQ\iˆ€¡²‘Î×ÒB!â[¥Þ‘?­»Ñ ½£äS+;Y8(Û@QA­™þÕ¥»œôL”›Qa„tIëÛ-F Vø]ExæGO”¼Û­jÎÓ©èp\|ÜI`´Ø`_ñF mëèØPË*u˜Ñ@ DÇÜÃô¦i‰¯^‚éñ# 1¶Ra—‹‚:(¬´×UÀ¿àO¡¦¼Ë½3¸`ä–œiª›'“¶Zµ¯:A<+¡3\k¶Ô¤¾„NàûÊ·PEw*С¨Z@u)-h$–|í`SÈMIjWèP@{‘—ªeKHJ@å£ÏGW÷uŽ1¼'Ô®Uz J£^A.ËûPÀzÉÄ ~E4«` % E¤ŽX¸m¥DæO¤ð«IAg¢f<}t˜ˆX×)Q1Hn¤L'ßWåï‰â/(†fƒÄ¸…bÁëE`6ÅB>4ŒøŠËAŸPÑØ8Ò „`D£ƒt*rÁk¡j7„ÂÖóH6ÕÕ¥œ‹¼ R{Z㸂g[ÁfN«TB‹ºjljXr£…/„•7b㤠åA !àÜ·˜7×Îmå¶H'gŒmØ[зpsŸƒ¹Ý‘\ hïk‡zXc †F X2'Z°L&«µN¥R«ÔZ£ 1¦`Où@s"î„ ­$ÆÔÒZì$@PT}`›‰mô0‘,´ðÕ½#hPÿ‰h!²9Äà~ÑËða'5Щ)&ì²Ä<ÊËêv¼ÔIÊÐm°(öTÜ©Êg3)8„KÕ¦4"tn0CfAõûð¢:=¸ [èž(‡kQ¡RQ¯ÌÌTæ¢èõ]¦EW±÷ª–1´0y©jÈ~%Ålð¬ò"à22I"ZhE - $0Yh¡‡ÕµHúà Ÿ,´ˆc9\aj]D÷€7–€ªÍå[¤x ÁN×ÑÝ©•xœÜ; 7•ŠV  Íf¥jˆùi‘º9hñˆc•[¬yHU)h@º‡à2RŠðs¬o!ˆJÀdejq±EoDÑ`­VÛÚêԗƇ‡'Í:B¾…1 lv(,¾QT¡ÍÅÝZI2Ñ¢¤TPÞ°\hAC²¶¡O59ÑBâ^P€Ø7n@]q†ýU|”ý¾EÑÎX§“P8•!g±bPÔ¦>“*ÁÊÑF‚¯kdËãŠÍ9 äæ+P#‹®d•‹.£_ æÉâ<ë[0š$XÑš:Lש;¹Côj½Õš\ž5êŽr#™ÐŒÃKªðªdœYùÉhÕºâS­KRÐB°;h­æQ¶~ Z€ÌôóT@H{A © ð¸ENX¶OžŽWë„ᱤb%µ(˜æWé6ƺ&ueÁæ@(# %”V7Î-–M¥qZñ h Ù:½ž\=Qm:U”W;ÐŒ¢¹rê, ÎE­ÖÙºµ²2»´0<Šê'ԣ܋h¦…øå«®$¬Jí¬”rGhœ{A`Iªt´€‚£Û»qœ†zW3„)õn´ðÓº£dZ^/fOì'J—’"8Òk߬ é ­E[XŠ‘ö—Pm˜c…‘›jxåX]\7†‚­’fù Röú›@Í;ÅÞâž©½1²x-:\{ÈE§Ó]_Ù\XÆþŸ‡ ­œvÚD ( òÆo›*¼¤—ÏQBáî‰Ò® Ä u©L´PƲzä®ÖîÙha¤UàD‹¬ðõÍå·°ºUÑ™¶+FÁ>«ÄèrVAUû eÅùºhP  G°µ+o ›Wo ¸ 䡨@£6öE¯Ò ZÈB:Ђ®Ì};ŠP~©r8zµ3Ý$>wµUoDå…Ù…qTIô} $·à~´±¨w‘öPú¨ðf¥1êk e° ØÖB‚4´€šG{5*,ŽÓ·ÐØ¥²xÌ¢E2TˆÓ:;EQ"ƒÙ帔¶X7 ÔÙ`6XPËZ¨Ê„åÇB±E[[PÏ(~—y( z¤<“Ó·¨zÞl#ZÜšzmj.Ц^î#~wDТºÅÖDZ]¨ÃøÜ·P×ÖêU•ݰfH_âœT€cbóyT¬®-I+­dOX]N´ˆK >uj)‚>T[0SZ$A…¡¬g¢x3'/[Qq’n¹\>\†qN™×p]'”3–£ÂimeêwÐÆ e©}&€"ä`)€º•‘­øÌ¶`Lß‚:XhAÁ‚ÈA³9V[Œ¢ÅÛƒQƒMŸÖ©m݈Ê+7¢³£ >n«kÖ/)¶Õ ^2Ja¢…–(@P·pmU†®Ø’j ç.´Ð‚ 2‹Q¶qªoa¢…ÖCê)a '­"¦~EÛ¾Ebª»)Õc°=é¬WÏ÷èòªÎTFb¨ëc´#+NõIA‹¶ K¤znt­c¸±•=+±Ÿ(ñ“ruÙžX€Y™ë[ÐÉÓ¼­Z™ÊÂÌëQtø¨Ë×BêtGÑÚÆZ-×'¡ƒ2$f”Ò­Ô«j~ÐÚ¾¾'Q"ß@  { NÁ ÛWS¡:%´c•Œ²j hÄ ÛBhÑMg‹n1/DØãm·À³I½©É)E  ò×=2þBy®”£2_;ï ]®¾ýL¹<”ÍÏ ]¡ ØÓåê'øDþªúPªŠã{X'ÄPŨŠ+ªÎ»„WÅÐí T%æHØî¾¯’o>Aëx;‚E­vˆšM•11§`ùÐH¨FÑÖÊìTy­ú$HqYºÜ%ÅéZm Š $ï*mxCæP°¡:"´†hy+° R| ÝŽ†E ­¶€†C7 ¯›…"¿|óD夯\a!(ÓU»Nœ Ψ•Vùrõ! 8:B‰Æùð( aËÕËu¹ c”j2ZHå‚ÓkÇÇ–X¡Y$†¼šP§T+²ú¾Ÿ½v^;ð¼ÑJ§CÀ¢y.êv PYlV:ƒQù…èÈÊÚ o½: „‰ûúžâX±=¼3-·Êö”A-°#«ÅZ ícœ‚ C'¡…”ÄäÖZ%Xh¡ø>-xº|‹¶k¿‡a:+]l›®£J×£gËÕ‹¥ºéâô‘º\}—­ÇÍ—«¹\½¾ª2cUqRßI½…›¢L¯tˆŸ€¾ CE–P†n´Ð ›ã} Ïkuj•ªœ}vlñÀí©™ ó/¶n­'|yx£V×5+ßåÊ•hÄÆ i_gè@ ¥æ‹© ù§¢…–R-&Ä@U“à^ l´Ðeu}c}IøLTÒÀÚ¦?Ï‘””sÀ×ß¦ë ‡t¹z¶×V«pÏMgºz]îÃJ¼d°Â‘âÆh`; ÈP0<`ZаZiDØ„0¥šY]=j[lТÚét*Ä‘ P1²xàÀÔÔ‰|y‹ÖÚ‰(Z_õªUࡈ™?D¹JðF gJ9A·«€ T3±Ù]•´îMຣ…,u"Z@Ýš$*€²¢s¢EI]Ó Åqâ¸E:$™IƒÛÝÿQñ¸œ!þ¶`{± wãbx!âž¹ø:²åêcÅŽZ‘—@%¾ƒ¬PŒJ ¯ò³±EªÅØ´Ib¤ëÐ"Öa=Q´_©å-Q©¨Uéêªç*ÍæM²ó±#5bEµê•(j-m.y­JU§ROÐJ¨BQ2ÕâX­1Z€<|¡ L´€x!â¨L´èB s /Ô.yÑB©-ßšoÕD Sàf(jù-ò‡"† T&(Ï”ç.Á¾\=LJðÂÜü³]¶x½ÀðÌ¥ryD­-Ðà ¾¡C›6=B± -¯A›D+E@  ~b?iæH³ÞBµºEŸõˆ¢ÁêÔ:Rq“H qÁ·ˆcqs|asÜëTÀ@·x‚Vùõ¾º^ 0\,¥Ø‚Z%­3°ÐBLÂWôÕU8ÐÂRl¶¶.è[ S7-#®K} ÷v*ë;#i"V—½Œ1í?’ÅT7®Üd7ZèV÷a›ñ2uªãЬM´pñ‰Õê:3XÿRªXÆ™=Qá*q¨oujNíDÔ½F‹f¥Ö©½ Þ½/j,ÍnŽ/y[•šªT¹¾…,g|­´iyêÌ4´ ´\& Št‰*9VÖ-bT;æùHÙçB‹Ø‡ùa¸q¢EŒ® ¥_ëL÷ûö „=B‘dG¡÷(„+¦ñzü©D£…¯kÃD ³"@óˆs¡…¾¨®SÇÊcFs(Ù‚ƒg¢`O,ø’7ÛªW;.jL(èÎê[lµ¶¢hrvcsiÙ«6k:…X$LÕ…bmÜÔº¢,ëÁB‹RN´PØ uR÷áD ˆYP‚Q•E ¡1cpÕt´pá%ÞÃÚy¬,WªÔ1@G°¦¸ÄkCU-A„ÁÂFM¾-SÅJ…©Öm”—äÚþ)«!‰²Îz­zk‹ÈEg*ŠŽØX¤âÝl­4¢[ L,jͪ®é[”t‘Áû.qpH¡º¿e2W$0ôsš*¿. OÇJ2°:Òët…ÑB }n´°”û ÜšÆÄ™ ‘vÞ”k(QFx u3p7ÁY_Œ9Û`¡kÊ„ Ü|1ÌM·Œ– Ÿ´í µwߢåm®Ôë·(^Tç¢ÅêÌ " ­ÑÛÑ¡…ÉÍÕqÏ«4+¶oáûRO›ŠA5³¯ÿÝ@ cJIJ ms ´ˆ¥`"eí@ ýÛE ùÐ"ÆêÁÕ ÐÂõLT³Ç胅‡9%©3ئPuЪ‚#‘ÇUäãÂÃzô}T<}Ø|0·’ÕÖºYfh`…EÍ|&*¬xÞÚÚJëÖV§Z;uGPLU›Ñb½N|ï ‚›Ëž7Óƒ£À·(Iu€ƒ–L©MSÐÂ×·Žúm‚öM£Áz€ã?cÐE˜¶´c¨9Ñ©UÙæ±Ë·p›;m3 ‹©íÉœŸG5„ÄûÀkTnØö1l2?,ÌæÓ¹)MY‹(õ Û…’X?¥Ê癥õ¼õµÑ•úÖVu«Ã¬§ÚÖ­(ªO¾Lö×7‰ 5ìySÍP×’\;O[IŠ'y-)ÉDÂmhM¨TTA¡nIF S\ø)£ÜŠ5Ñ ƒ‹F õ8nIgëjq¢…dÄ7§Ñb$µ'j'¨`G®£…dH-ô°a5;Z¾…ûˆaEÚhá£zt¢¾æ~-´eŒrÓ~%" k/ê0êoDQ­ÕZ¹˜½Eݨ²¼´zÕóZ·€,„o¡üÉך=%£AáÆH´Ð’“-’¢½‹$´@8c+2§vÉ@ p±ØÌ - ˆåLæz&*±_6·k‘1ÝâRgquÆúÀF m CÈŸ-ª^ …ÂÿRB{J¥§ú>[;Ïô,´~ÔÏ„HÃuÀ1èoVw]-¡š„@ÉK¥´‹¾h Z€­~,%—ˆ&߸ѢÇ÷-289çq&œ0{CúгA ÌrëÊ´Z¬(ZŒ„õ¨h¶„q Ý]Êr@¾…(/Z¾>`Åô–W—6766f7+Q·Á^Ï£–Ÿàk߸qU—x—[±½6 TM•”>•o]!ÇŒíTÖ»‰šARñÙ\h¡5’¥äRÐB”dæD‹´w¹]<í´±r:‰Áé¾{lVlr¹cØœÛC ».KR–,P°Ð"ÖƒäÖûŽ·óúÚêÒæ8ŒÍÍÕ[Ô§ˆ\ÜÓ3)NÁ4¡z;O›"°9çE7õ¼ÌG}J  ÆÉD iàf£…z@Ã.¸h Z8à¢Z°2 ¯¤ÊHz&*÷øD!W$ LoD«Q¾Y‚ÝD ÃE•ì¥Ä@µ«5n¡;Iùé´÷-@pËÛÜô–—––ÆW".E9ÿ}¥7q-×ø=* Т-Ã*²©è}Y}%¨À" -T^éh¡[ÊWÚ ^>´J¨ ZÀŠr£…ò-L>ÖÇ|ç¤hí¬ÉB´Ð,ž€²2·‹FMŠÕ}}½)©v-Ùh›-Îõv­—YoaÁóÆW½IæSŒ4¯ ¡¸úÂÜŒ)Ŭ‚€Ÿ°rÖ W‚VZhß,´€*<ZX‹gû°¥Zø–¶ËD ã¾Á‘”˾… )ãÛ¹³Ët/Š E 7Ò¹ÐÆ5©£Â=_‰D --ÙóDѳÞú:í‹¥FÔk-µòËòØÁÌŠë[ø¦nTÜã«{1e<-tÙ¶ƒ±TàyÐBÄU+ÙÚ-´(ew¡E–o‘ÀªÙA‰'óvÞŠó„_¾Áךý‰âùòõOƒ`¾6½Xžþiõy |ôºõxÿ1+¶\”žæù µr= øÆÓòÒäÃ/ø4XÂ^Þ‡Z±žÝœUз@µ°âMŽ®{^+z ¬ˆ4E¤â\;gõ.·~ʼn*††Õ¨0‹¡… Yhác´ˆÁ¬„q\ -JI]Û@ ‡oá2¦¬tEp:çiCxæ™v_fî.rÎAk–mÆ÷K£·ÖÀa«Í^{ãÔÊÅ—=Qʵp¢…6ßM¸0½•©/]@¥íF‹8-´…+!þQ~´8SÌ·Às¢ÅZ ɪýÀu&=Øy®w6ƒÄjÉvÄ š’ »d9®¤ÝgÔ"ër×7&·ª[·VÖ\_©þêÔís7ofIŒ¼ _CJ@ ¡‘®_t£J‡ Ó˜ªéhÏfû jà¡’¼há6‰ÓÐÂ*»>’h1tÖ=c¹}œ¯Ûà?-†â¬g0°ªï¼ò‘›d¦VÎfCá3 êy”D߆xawkt­Õ©ÌÌÌ4§š3S‹)B³’ÔúhQ.ƒö,ŒIJw@º¾™Y/¸ìhá—L¡†º(º%ç…U wJ:Z÷ˆß"¹‡6uÄ!u.rNC­iU·ªó£¾Xx|GÔF´ÛÁ·BÜ æð¾…(vZ¨éT«µZ¥Ú‡vl¹¾…Ÿæ[hÓ1ŽÅkRÀkm-´OD ÍÐB@ô <¨é]B K‹é#©4œ=QE€µvbxªûa[z[ „ HlA->ú0›D±˜Ý@J0jÈôž(TÔÛÊQ§â]n­n“| íᦀ…i}o-2} É…±’ w6Z$2nr`z””$f”ê UÌ ùÝâvóçƒøH`zðÃQalß¼²ŸxPWZuôÐQÂÐ),â™(åt;{¢ ±’1Òá>H‡bJÛSeú³ªáz3âþ Å¦Gæµo‘Ðu”lô˜c½;ÖÉyƒˆMÄÇ&;#Þ´Ò»#&H…bw§|˜7"óHî'h J4¨Hàn:IÒ·P†” -@W•S[j®ð‚“ù1“#EkDÈ…²ÇJßäÉÎEŒQ IDAT&ezÜ{`M~,¹´¿ÉѶ‰cÕ%ªƒˆŽ)1jk “ 5BRÞåvW¢Ðê~1¤o¡Ôª -¤ÔäG 9v±Ëh!BÉ2ï´¾E¾†Ä³.O<ÓµpÚ2Ø õa¨aXk‹ª! ’`éQYc5gã‚o :§þ¤¦bÇ9F¹MÜu[N Ÿƒ6Ö–Ú]©_ˆ(‰`áìÚU´ÚøÝH¿ëˆÎ ÃËì‹oá&Å»¹Í(lj,÷CÛzBÝ[¢ø¾äPø~ ±hhUÓRbdKsÍ%eHƒRŒóàc]F,“ž uÕT !Æ -|ô4‘ji)@»ÁB+³ÅØ ´@bÝIhñöðÇü„«UàQ>³Çn¼¬X&Ž8»ªbÝj°e›¥ÒÜ㺀­rRCJ¢KD*M¨òÕUÅ¿ó*v #*gOTJ Äž‰‚7e¡ Q°@ªYëÓ½A iw;ZôîRÍFP-+~ÕZ¹%×’âsKÈwqdd™”_Mçuh5%!µ4-ÄCUO”ÂCL’9[O‰Ø(·f*õhKƒ£Øº4{ç[¨ˆ@Åßh‘kí,‘Åî#,éÐÎ*ÖÆ2àx0/*Vò¸6Œ&)©ªË\XV%ä…ÈjÖÈd‹D‹„g¢ú¤sôwÐX—ÛýŠ@Üî`r©JÀ“¶~ÉÊpÐ+;-ø3Qóæ´®£œ²’Úë”&#·º €‹µA¥‹%cØZDI¨*‘S‰kSd )6—1$føš‰ä0Š-vKªò½o‘Z)ŽJOÐJHC (Xƒ[h±Â·òƒÌdHƒ!?Z(“•}¢E–H´­hn±I‘ „I׃‚õ-´ÚÖ ®ú\•%£JÀšÄ¬*„.¼Rà˜«ƒ’®k %ÉW¬*-‰ ÷-±œ4â ßB, -0|:m"­y%VXv-Äá¾CÐ"eí¼$Î.nç‰Æâ”Ëån¹”ƒàJ[,žÄ(w Ë4*À:Ʀ€ñµªJ…RZ¸‰@Ø(ïEëXôD~´Èïa ©GeÉ’ÐB‹l ZhŒ¼•;‡1¨í:±hÁ]îùôž¨‚ý² 'L¥èÜåÚ«teb±Û–¾…æ>¤ ­ÇU`ñ©…š›KŠ5„l§7-, B(› ¾…Ñ•î|¥×·|ßÂZp©±58Š;{h»‹>lžØŠ¸wh!ZÌO|—»°ÏÌ¢œæ”ãœX4­céåêý8mfªn£"Q N®)¨õ’ÉÉÚµ0_‡Dhëx%ߌ„¦(æ[¤Ö½>©×åVÖyZ¨™£…0•Íž¨¤nò"ÊÌnÜ\ù°`±Ä*ùÒWdž‚£åPçi}n¨nU[©h!Xî*¨õyÖ"“’¯ƒpµû …lU#ÈÇýLTZgFÛñ3ú­å»Üè0³½Éh¡£kH~S¢E¬®i¾—“áÝn`o£}¨±»zén²AËÕ+¶¶êW¤-|íÜáªÂÕ¥¸]‰DZ(AuDù$ÍÕk13–ËMB‹ÝH Z¨ˆ¢žö-ôUQDç…áev-Ô5y¢lnM‚Tîv…8áÃêÍ¥hÁ×(¦hÑ8#ÖÎC ¬—´pð©b¡„ªRB£òæ½H¹ÐBÝŒ¤n&笂 c£®úãX׺Ñ•< -¤œ›Ñv-¬ûƒꚢ'j~®ú"”Þ‡•$UŽ«)˜ÙúÜ—Žr¹z©ŸaéÝ©ü¾~¨ÖˆˆXL³y*ZÄ:l%ävÄ9|‹ü¯bÊ™?b(­¦ú¥x[Vg Zh}¾gha@Šè¼0¼Ì÷,ÕŸî 8¶y€ž0qj®Fl¹ú¹A†@Û© (ùΊ”d[5²R@U¡ óuuJ9*e  ŒdZ¶ oáì‰ÊëZ åjHÕlêlC›ØL”³3Ú.£¨uÝ~¢E†oáVïpÛËØEv¬[Z@uËЂ²hlº @|TðqiH!“=-D¤`¿¼Ž– ½vž*¼»'*½bðYö.7B5›WÅ ÈYhQ2sÛ+´HPr †—Ùa´ ›”'h ¿s‘£‰ }Èv™LÁ`›Xr^¬Û-FEDÕd°(™lÊ‹¬Ë’¶:08ÐBæ 3w¢Eœ:OêÙάG/ê]n{ ? - -˜ŠP6¬»†R{ì7Z¨ äù#³/ÝÁíÅçÊTæÊ\n­ÏcØÈ°ˆ¬¢J’[Q5°/€kØ"*ÐXÏ“}c´(!kKÞ€B ~©,ßbh|ÐõViÔ¸E&Z`‰MG KÑïZ(i4•Üž£ çŒå=ËÞf–|íÖq¥Z5*ÑUí- `lD»$ÌA«Žäìu@<¶(÷0ˆÅNè×üظ…,´(9AÅæm§æŽ¡„ì8Z¸ol¿ÑâßÂÅᙽ3 +¢ƒVI–:-ŒjjÇ`T™Z6Š¡4œt¹Ç®œâ[°BÚ¾…Ñ¥"ÏLgûÀüÛ&Zvþž¡…}c(¢óÂð2{ŠYì›/_ïm1AB64jï´(ájä€éX‚¡òs¡EŒÃ]šK´O˜Ð%ªÁò-Vðr«N`ßBÉiZ$)e‹¹}kEØa´Ð½ÓÐⲞUв˜R©˜w‘ØU•m{1ß Ó¦A±ìè%ýXS¬…ÂOævÙbZû`ü]YȱB Uc=QX,@%M›ãÒLE‹RN´€Zu¯ÐÂŽ| ÅÒŸ‰JìfÊK®q¤0×ÐÛ-ƒ›/-À·äƒvÁñ}@Úêñ…ˆøéãHTtãÒô—Ø%ŽôìuâÄBK =gŒ[¼HE C—š¼f&ˆ÷з¸ƒÐBÃÅe{¥Uƒms AO&S†k!ˆû°œYhahm»up|Á¿BEA u%† ™£Ü’ðK¬&ZØF”L‹} )µn´G© Z`î³èžG Ë·(ÂÂÖ©4Ç¢°°é(Z«çC [kkµ`LJ 5ÖhQRÿIh¡®¢s1¯*.˜±Òªå[xP:sÜÜlÖm¢…çM‚ ,𬂬£|U¯]T2!Ý0þ¡ ï ¯V‚W+ÄÃEìÙâð™«ÒëXbD§?ò„ì€ü«äôû ù åôr®— Ó£o(Î%[Èú1Ñ‚õÎ òÐÓƒxÜBkÅ ´(ê[ØÌhˆ‰)€f„{ -[Z¶~QÇ%ve§ëª´Ìâ@¹ï,Zè:¯9¥>Øç6Ç-œ}G6Z¤Žr÷Ñ—"V.w‘™?ò:)g Ž‚85Eì'„™®xÉäã­‹‰T®¹ó…oçqJï‰ò¢¦ÀŠ)è\´­q‹Xa…_‚¬#ïôôÑ¢ Z˜³ ¶»iŒœà\¤ðyF†… °µ«öÒbºa‚ŒQcŠØè”ÕjâtÚŒåm—oÑœbÑlb\qŽ[˜}G–òÏ7Êý¦G Ý–ð ZÌÏߦõµº™¼z˜FøVâßüÒÉ“?Mîûƒ'O~éŸÌ6¥?ø9©˜Só©îþ }­a%YçÝñÁ%Á1Œ[pÜ"ô¢)-¹Æ-̾#pg}´ˆ{B‹”q 3§ŠAC)qÄí]ð£0þóØÿ¿âÇ?ýÄ/ÅþoúR™`U N"…ût÷-2v‹+eènr_‚€£™øI[.röDi¡™j6§¦Ø·‰Í/û} [bm*Üí>Zñ-.ç™U°w­ïŽ]$—ÞëO})ŽŸø]~ó_þüÉÏ9Ž_ù“'¾ôÓôÇJþy~2þòüä'žøà+Ÿ8ùÄ—ýXF'!o;yòó?Ÿ|åäÉø•ÿ¿½·y‘$Iï„sÅô¶†îÃNç \,…Xü0°¹ÓÓ4T_šÒÐyš‹áC ¢‹ªÐKG"š€dŠ)5©‹J1Ôj 1É‚dgk%’( Rl ³½»Pº½¼/}Ü›òTÍN_æX·çË>ü#2#«gäîæææîÏ×ïyÌÜÍ õòÝÛþžT%ü AdVˆ«Û*Tz&Š·D1¢hÙÅSÚoER?¾jB‹1hùK´X‹¿~±6³î× (%_B·zôà+e„»|ý¡zø‘2/š¯Úß?u"ø q»óõVÖºv•Š›V;~x»Õã~¯`÷·;ÔWŸc +b]@â{Å?1ä ZžD¿…f$̼o_!<‘ñŸú-Æ¢Å<ê·*Ñ#ÃqckQ²{ŽíÙo/ô¯?iå7ÐãÁcóøß´¿îÎ_1´;ßi7·;ý*Ëùê“££¶ S eÞq;Ô7}=¨‰ë+‡ÜŠ”¢†ýv¼oánSÄ-ÒÉû Ø ;« -®Žy-Úü¢€ç‚ôR­]}"î¾Z¨°~’½þw»M+ÊÞîÛýä^°-ˆ´j¡Z-R¶è‡?P_ú#^}ÁzR“/4Aª/¤dF²£»%ªáhÑkND¿Eß#LZ\ -Æõ[d¤ .ã8€×§ó e~zÛ¨ŸÚ¨ú¡õ“œsl¾ò¾ÕOo?Vær¢Œu¤œ“d‹äuáÏÔíž&쑬ž(ÎÁM¯À‡ yÏÙÂN©VÉ'*[@ê|—[ì;‹[¢âf¨ÿ¹r ´Gÿª •o·¡´aháÄÏîü• ¹ÿvþÑÑÑg¡¸…‡þòÝöÿ>=²›Tz F%P—ÁÎ(Àz*óÝ&Ø) ˹óš|lÁw“.È÷VãØ"Ó ÅùŒh1õr_Cl;5]b<\Ä´ß’ Þ þ±˜qv“`^f$ >ÞС¤ŠÍv¬­a® 0T¤^K"´`ý@äÙÙül>ŸŸ±ÏüÞüìÞÜe‡}þ·Du÷©ßbc´[tö+ÄëÃÛsóz#Šþ[~ a–\5áÜßK,-É"Tz*° (n%yçh Ð:U±ö¸_iÄrÜ‘ [ô¢ÅÔË}C±Å@cŸ+6_t£8­Œb—gE€(¤B-¤\ø©¸¡¯Â[EdúCzÁ>»w~ ->Mi§ßò {¹;lû„£EOl1Xz›0R(âFårk.Þ }) 'ˆ‰Ø'zÂŽã`$ßDºQ¡ìQÈÁЂà à 1ËLOKTœta‹+¦·ó©ÖÔpõžÐb|l‘siºa Õh÷~rGR­ä_åÝ®BE²#AÄ¿¥ÇŠbqª‰ˆ,Ð) ¶¡é'4ɹóx¿Ež¾8 s; 4Ž5-„*Oh1-†Å%ýqÿi]×·’Z;ý2m›¸˜W$»B؅ħ }@EP4ø*ÑÁËý®Ôzõ>•¿ë¦û}z;oZD¶4_|B -V«gZ]ZïŸ4zYdw¾Y—K0Óx°äLÉÓ–zÄ,7|¡d8Jx@Lœ¢@£bgdjô¦kA,1J´D…›ŠgCêBêµ,–ø.÷´˜z¹Ç£Åê`§-†¸H’k%Ý9=WçõÁyÓ\>:^쿨ûº¹ü¸®ÛœÝE}°gw´™Íþ÷Û’µæÂ,üú£Ä\ž”(¯*¶* ”°&\Ë"0a7aJwLÀèµüTÔB’aZ”85ŒŠ-&´[ì ZŒ,ÖMO¡„™§¡9ew©—»¾\6³Ë§Í¬v«6ç¤if~Ǣы“æÖ²AóŽ-†É.Èk…"ú¡›… ¯HøÅâ‹ÏT‡÷_{刱´/Sš—»×{ìL£Ð‚›“ -¡…Mýl¸B“,ã~P 7ãv»~©ýÏ®úœÙA]_bæ‹;V3 ¸%^ ã5Ùl´ø«e ’œì¼¨L‰ZHÃ0+O„-1,%±…¥Ãh´H)<*¶˜z¹G¢Å“Òtõ]"¿ihÑèПnàäÔÍLo§â¶¿•ns›f1kN.qÇy½¼Ɖòf›î—™nŽrD’ÀlºA¡H7¥CJ;i !T„-B[Â1ýÏD5e ^Ë"´Þå„`M&´Ž6ä€e±Ïr­ 9ûµ¹wËd¥ßNÅm—έjNÏõ»vì¶jN”´Öä)1SÍ—Ê@lí×cÓâó*ÅH,ÔlÄ N˜øv^º,»¥»{¹GWô´˜z¹Ç¢… ¹‡t]d0£#ÕÐOëºþv Çõñ‰“~D‹ÇmÈ­—‹úÅ¥›²Þf6Oë&¿ ½Ìdõ+â¨iЀޒ2  ,~U2ç”@@A9L]ÙU -d/÷:ƒã¡zB‹-Ç;½4Y³–Gƒ+ùbùäo“îµÂpW¡í!¯%:hÕqR–@}î)q"“;Å €´E½d–3hÁR[!ºÔÔ=GìG 5¡ÅX´p¯!mÜ02¦q±¨=™J–tãå²"Þ‚‘–æA§bŠäH)p¶D&rramQ|gj½LïüCW?íP´˜z¹G¢õrKiPhÑÅ¿Âfl×é®ÄQó,DŽ<—Šü%•‚q„sœD¥¨Ý(TeX)r´‚&A§÷æâÀŠÄ~ñ~ ¸¥ÌýwÑ1-¶ï¨Ah—<¡Åp´à½Ü#‚‹\v9¼¸‚k¥¡VPL=(_v»†SÆà ÙHC •°üR¢P=¸B¡&Z3°áßOÐn@ž1ýS/÷X´H,/s(ã÷ä´a³ÔU‡aÎ7ó\D8’Ûeh¡À¾K0Q©!º"p­„còha¯DÆöVe¾?k?é>| '°Ÿž‰Úrl1 —{¸à¯åëdϺ…åb CvóLZ0ÚeЂ+J8j{à‰Bpa("4¢E#&UXžÆšýpG,×o1¡Åh´È>A[-ºDxPoFOØ’ --VpaE¥ ãRB‹X)œhA0ÝÓ®(ó(-¤*dZˆ{Û7;¼ÅCŽeröŸ³9\(÷„#Ð"yߢz‡V3¸xè·¨!¤¿ãîÓ˯ `QŽ-Ø¢ŠHÅëEº†³T¤ —X¦l#Wý±E2by9QES¿Å–c ÖËÝݵÖ%Ã}:0¦!7Îðb ’ÊdQŠj¥²·ËР²Ä†Fh’ÕÐÄ9áAŽŒ{ЊW¬TqTAHÃÑ"™;oZL½ÜãÑ‚õrMqÄÝ>t¶buìsW.ìâ‚Mn”1é횈2&‚ ‹ £cXÌbPy_°ÃPüÃ͘‡ÿRø^³Õ~¦Õ -¶…q/wÜ«°îÝTãΉb´Ú$W‡g¢ØmAwy?(™ÛhUÉB<&À ³1áÜ^ˆþA_I©H-èÆvĦC‹ˆo¶)j¾j’y¹söŸ³™{ˆZŒB èåÖg‹í`·ktq¾©Œs¿ß ³Ð‡‰éÛï³03}Øyg¥wën%liúÀ´öö˜g6ãÇP«f‡ãôaÎûgn•ÏLOûüŸ?ÞU.Ìí@‹u&¶ÐN'Ú"ú½ˆ ÆS/÷H´x’ßb:äZ˜Æ§Š2Øó¾Ù4â²Ä¼Üq¿E[¼ù §MóÞï¿÷žØ·Yl¡&´[P/÷pç´ tÐp¯uSš—[Iþt¥¬E-Mö*¶Œê'­ã Èȃ¢[¢,xX­pùïýÉïÿþï¿Ç¨!û-ÔP´˜z¹ÇDz—; úãérÇD®¾l!Ú™E’*ªD‰²1kóWÁ­ccá ZºOða}hÅºÕ §ìØÍb‹ -6ˆ-†¿Ë=&°èß=4ióÓ££_ÿžQÿõó_¿þ_•yý×Dã_}³]ÓÙ·;àÃêË£££ï¸ý¿´ÓÝðË_©„¸ ÑÙ¿Š÷e¹S¨wwÄ®U‰Ç+ìß{:h…Å rC¹©—{»hQ'jhpœ‡–wí¡-ówo™·þΘõó“_ó×ßAé7_ý™]¬ÔÏß1Êî²ìË?’zlÜþ?üoÊNA\_ Jbu cOVœ 2ÒdŠ-Q˜DlÀâ½÷þäOþ¤ -.ìÑ›ÅÕ„µDõ Åuù£º•)ì1¿ü׿¯Ì§Ÿ™ÿõ)J»½;uû;ßôwòÖ¿·÷õÒ wBó ÿ¢Ýû‰Á‘6.R A3!*,S”gÕñbÌÈû.Ç-X8´h¬V¼÷žº=\ø½S¿Eæ4Û‰-¨—»(2]IÃc末•ˆÙ[‹MûÚªùù;ÿðÎÏí¤_~JmhaÞ}èfævÓÙÛÛz@ÂøÀéÏí£¿øîð?^+²ýÝ`:åpÍá°kP2ãÄÉÄù~‹Ú©…Í~Ϫ¾a¿E5¡Åè–¨½Ü‰dw(ÁP7 ’ùü¨?ü\ÙY‚íÜô4‹ö[ŸÀºùë¿Çžnõ;J½ûº»Ó¿þ¤U©‡æo y•¿0"%ɨMŒ&ùê:{¹× Z8°h(›Ô5=•9Ívb‹Aïr„WÈþ5…ØI²óÎÿÛV'þá3óOíU»¸áèöG?üðÃo~øØÞŒÕÚ«Vpx»ßªÉ§J©ŠÝ}^ÆqG‡žDàÑ]eaÄrJ[Ø-8)ß#'jÓg¢¦Øb£Ø{¹»D|\×C`Þ¬ø‘¯ÚD{ØçýÆüú¿˜ÿrdCnõ“_ÙËÇÈÚøéT[Ïè§·q‡¿E§ yxÛ(·ß˜_ùj šÏCê±ÝîBÃ>Nëpén ´p„Jc  4DIµ€€}Ã~ 5õrD‹\/wYä»/†) wÄšŽÖu\.dZA0ÿúè×G_µ.Ñç¿þ¼ô?|ùá‡(Ë6ØøäÓ£OÞò;>õùE>lw}úÉgnÿçíþǯýÐ׃=T%EIçöÁ£N.\ÙäU<¸¬Ñ®¸‹ÒoɆÜÚ?õæ›®G‹©ß"=Í6[¢ºì8W²O'¢=WšÂ5Báî‹Xã!’KvÉB¢d#A3B¶#D*EZRQý>·c^î¸ß"´DéæÍ?ÿó?Ó‡÷X‡Þf±ÅÔ˽AláÐb?²Ûr-‡{u½¸ÕèÓl(nÿGMøÝžç,ÍÚiœQdÔå®b·¦‚ 0ºƒ”Qø(¹’æ]CÅôÀZäðB1K uÂÁÆÈg¢lÊž@«V/Þôja›¤xÈ==•žf«hÑ-®qÈØx>.f­jø™(òq#Ñbž–? h!9! ƒiH»ÈW”ÙÍ IDAT¼°WŠˆŠ‚-ŠSÔaî”ÔÆMУ‚¹ë±<îånõâÍoX­x3€¹œö[Lh± Zî÷Èィ; Òé‰cÖêŽ2Ìyç…^ž6záX)µ­«GÃåÏ“ ­ Hr÷âÇ¥9†ZïCEê)®D0b‹âK†ŠéFF±¤#¥Qe¿äXµøÆ7þü-Vø~½Z¸ÒgÅÕ„¡Åþ ´ˆ%¼i^œ~ßÎ&ì'€lü<‘{Íózo¶ë™—Q†Ž ZøØ"Fm.ïÜAbY±â( ‘ƒ]G9‚ ¶°e(RaV&ºà0‚Ë~ $ˆƒ «Ú9°<ànôÔo‘9Í6Ðâ¸ÕŠãYZ7Îæ‘÷¿·¬où¹‹NÝ„xvú»S]/—/î¸ýò‘éÞ4‡òn*$8uä&QPKnjè š…ØÍ2,(ðR ¢C ¬c ÒLtIÅYl!ÌA×û^/|3íú=X°{£~‹jB‹Ðâ»}ja¹q6§M÷Ä®7aª‹/NO´UÝåóóç‡{Ž›Æ—«UàÿYp¢ g_UÂpÀnðï Çíx4Þ“à"§%rRà‚âÅ€A¢˜¢Åºoäý¦ëÓƒÀòŒ€¦g¢¶ŠV+Ž/´—G}Y×Ë–ê56%^"7îíì¬lÚÀXëÖÌYï)Ì‹扼³Xê:Ì4 ÿö‹öWÛ¦+ÆýË$¸h¡íi.±KúPØsFÍ?Üh“'SE[”‚¡…,²ÍŽðÀ³hvP¤Ž®ÖÀ~ ÝÐ ~öo[`œÐb$Z\ÀÓj­Í?9^’Y ­LŽs¯«Õ\ÿvëºn%ù²qˆaç‰yú2Xš3‹\úó¸Ýg[SêRhH ¬2°V(".BäÑ È€©Hø©¢4 ü±uŽyß"è…Fà=Þ›ÆS/÷H´xþfÚN{ºwlÿu+ò{-7άVì8Ä8ã l4Ÿô®‘Ö!˜Ô'mèQ¿ØovŸžXÝÑ—×OíIîix2‹+€Ø‚³–  3-€Ùˆ· AŠ{Z0• q…‰óákÄG,Ç$b Äi¹ Ô˜ú-âÓl -ްÖÎwª}´p¢ëò¬¶ óLwZ È2HfÓMv+È1(H°2ZT ÔHV³Œ-(È­œ®]q Ú5þm[Lhq´ðQðÉÁÒŧçÍKl‰jÙH±EÁ‰JúìZX~žŸ¶Êv±l}s•Õ¿•¾KõÄWì#nßuÑžšÉ¯â¬æ¤¨ §HZŠ,@ a‹Œ 'XÊ$¤B' ìÃÐ:/Ș҈åŒJó3÷ lÅmÌéo³Ø®zB‹Áhq,Ðâ²®këï·R»\Ô/V^~­Éæ-QÀі䟌ª±Ü1÷.ž7ÍÓÕ4W…6Ýû÷©†5Å®)Ê»[TLî*œd•l€uù$NÉZ¡D+ £–¤¤%TÉjª!ëØÔ‹;#Ø™©ßâæb‹Òì#ž­ó¹×  %Á RÇ´ßwêì`\_Ó”Ìè>Q+Ü3Q$‘LêŒdwÅ)âîŸ$ ¼XOüŠ–e ‚b¬_PTaSaÄr‚Éýý‹Ì>"ch6½Ë}±E¦;Z»çÝYà†EòùŲ·ˆËî1Á £].[ÈiêU»ˆ«Õâ-£4QKÔ Îb‹œ&F ¦7Ô&C\èx'ŠÐá t´Tñºè4Õæ±…ÎlNÏD½ ´ˆ{#ž-c.ÚDü²!HxLÐvMCVUŸ¸f^|3¯Ó5¶DáûAâá~ƒý«L–"IhvÖ ÉU E3hu1ýjœ&¥1Õ9N”ÍÛ6ˆ<p+P„Ôbz—ûÐBwÌ<²öÜÐÈ'J+×ÒªO'ÖnùýÝ}Àcä„ߨE‡Aw^ì rÁe$À¢`ÑáϨ˜%*Ç•˜–€X5úuŽ¢p†©`ßL«C_ÖÒÔ/8½Ë½U´x"c‹(Q/’aèo(ˆ*h©g÷wC‡GôíšoÈ·háu»|¿EE‚M·oÈ*“ÏU¼™˜×cЂÁçAÜ`k0!+ŒXŽ9èähaÇÌxLhqÅØ"æFÒüºvCY×Éã„Úå¹{¬ö4ëÜ*¬í§"6¶@nE~L¥xF„87ûOè›—X¨*ªƒ#„X¢ÇÊÂÐBQwC¸µ+ÌNïrßHl1—åò“¾†Ô€0´8]œÞ²±Åa½X6Í·uÃB–†ô2Ap *8ô†G‰ÐZ…“F¢…|Š/ i‚°ÍZˆõ[ˆ½?ã)îïÜ(¶˜ÐbC´èm:Ïʳ õ:xV±¡b‹%±»ðá;)•’"H8AC@Þ}G £»Â˜¥bÕÃÏÅAìp7ØfD¸´øÙ#–Þx?~…W7ô[Lh±ZìƒXç? uÙ°Ôgø÷ÓNÛ³y¶7 R¨-*t'€$C ј*nŸ“¾-w QƒªÇ ÊgÐB¶DÑŽA»vjÁ¬Ñ£f6‹-˜ 8¡Å0´8ô±E—UÏíËøEëÌž÷Çtà–€ Ñå; <Ã98 À|+´¢EŒ;°E. )L_ǨËݪÅÙÏ~væßøzÁÌf±—Š -£Eï´‘­ËjFIOÊ 4äcSÜÎ8¢/JoÌfNú~´`õ ´@¿ JšZÄOÐÚ$ÔDºš­Zü¬Õ‹:k¿‰Zl[L½Ü£Ñ¿†Ô£C£ä0Æu[’È^p±ŒH¨É  +&C Œ'àPá½éƒ@šq½Ü-VЉ VFoØo1¡ÅF±ÅL¿+~Hú¬KØ×“Üu¼/>Ú†ª1c´¨@d*“˜œñhÁN¬PGQØØ5!¤WZ02¥ãD!­Zì„Gøw¾Üi^{Ñãl£Ø@lB‹Áhq\v¢z%>ÛQ(°ajæY„-<±TL´éJEX± Z€€ƒ”üƒ-‘ÑBűE褎ÍkÿHz¡7Œ-¦^îb‹ì[“iZÖEÖZÈ Pœ•”Ì3ŒÁ|=¸ž¢„`Ò´@õ3É£E`ˆØb¢Å\löLº’ZŒŠ-úŸ>XwlI=G&eÆ' boY÷n$±¸±º Zø®üP¼&…/“‹Ã±—nmZüè/_Ãc7ë·˜z¹7B‹Ãt^î²ø¦{R_êzƒ 7ЉŒuŠ`øÝ&læ¤ïA 4¸•Àæ3ñ¼2Zšú-lbjñšKù—›ÅZŒF‹C†ù&Øžnè-'ݰ‘?*¼éJÞ¸©»c~ç V"Q D7˜Çý+CG,‡ÒküWÿø£ýˆôbÓØbB‹b‹>'j ‹’döQVÆ„!¶@´}-””ýT8é»Ð‚íGã—@y††[„[äýÖ‰úòÑ—nñÚ_ýÕÿc«›Å ÈZŒŠ-Žs. ˆrÅúd`µ˜ì•ýXßmš»¾Ûþ?kWß¶ß·›»ðw×ç¸-·íJÒ>ÿ—ñv(m¿¬",ðvØqWû¥_¸¦KÀ¼»>ÓþÝeW÷Ìå|&jçÑ£ÿðe»xdÕ¡ſx­'Ħ~‹›@‹'ÔµuHq_1¨Åªœ’˜û7;i>mN¸·tTAV-¨?þÇ¿üÑ¿hÕâw|É û-ª -6@‹1-Q]2ÝjŒ… —§WR¤Ì+±'S$¡°ê(WtÁŠ—ÀO-D¡0b9¶KEhñ%|¼ec‹ßñj±il1¡Å±E-Q}r…ÝûKM_,OUeo(f¢‰nþÊIA½TuÊ­È.b™1ï[´hñOÿ¾-¼Àbz—;sšF‹ÍLÝM¹×“tSkd %£Ÿ"³"lLš»’L¨„3 (ŒÄ ¿oZ¢@-¾ô ´?ò`q…~ 5õroÔ%PœËz!J(«C2¥J)­!âƒPtaŽ$¯ÈÀ+1~å¯bRŸ'gA.©PçˆåiK¦ß±Éö[XLý™Ól-ôp«? :\£¡uë"D\Ñ*· Œb+ÕV]n§ÊTieLÌÈŽ²2¥'hñf5oñhUF¾ùÚ ²Ø8¶˜z¹¯ÐUÌAžR©ã¡£’¾è3#‰Md•«„”ʬVDyÙÉ?Ôª¢:’ À:Ù%F,ÇDh‘¡ók ,¦w¹3§y•-Q¦m-¸ J}lÁä­¤’H!Žg¥âC„ØWáÕ,ëeˆ Ò:)§[¸Û”ÏDÅ”x Àb½ùûZl[Ï"Y,ð&.Ñ)Ñåœn]Švi}¥Àr %“ C°Ø2CVCÁ«•(Ù‰ÆIUÉBKœÓ1b¹OÑL«5œV„#§w¹ÓÓÜ Zt {¿²ˆ´?k?Wûî4ìÚÁæ“9©g€€%Ù@à¡,ä–­‡CÜÙ+²PÜT¥zö„ƒ‚& ‰Ñ¸¦~‹Ìi¶ÖÕåD]%´° O¼‚QIÃÈAæQ+…òÎH"BM£ ‰‡¢\q [‡Ò¨ ¨T”£ XnÆÚÔ5b¹]Îä^7$¶iÈÿxšÞåNO³´8 SJvXìöó~Il{fä´™4ßiPæPöéVA  ­7"ÔdâG€n”ðãMEjäÝešBhPÃk]„âf£Ë%݀ʛŽ5¡Åf±EË™.Ž_£Y]/nÅ3[°B#†‘ôç9K³`^nfëÑX ÕFF¶œ£ȇáTp‚Õ*=+…ñJ4‘ç#•œ4'n¥iº§YŠ{nCl±æ ž Hha ¿ó * áá§AhAJÓv|¤t,¨X-D’sçm\Lïro-dlQHg;ÞéO¯­]ˆ°Òº9•hñ|÷©›rO¦™F¬5k‰ÒØ@ ýÜ0K´@Bp´PÔÖ:-¸ÛÁt‚ÈåEØËCˆYßÛy¥©ßâ&ТS-\l±F¥´Âö¤°\[Ìгû»!3}07Ažè} ,œ(a˜‘ÔŒ -ÈŠû`#µö%´ g§ªp<ÛP¦È +U-Ø­Gšo¦w¹·ŠÇÔoAl‹¹±G ›.ñy¨5„ö÷Xí)G‹0+¼‡&;‡’£L#â°.´HÄ(¢q–܉’À’G‹õu ÅôLÔM Ek|üÃñËÃá“o9Ñ-N§·lƒîkäýö¢îy—›‡ïåJÏ€ÝyiÔ(HÌÑ‚TÄaƒ–(æLñÓæY¡àòTÅ‹&hÁï·Yøã¦w¹·Š!¶è{…˜d7‘\lŒ‡ö+Ìt·×”«Vn'ªŠ9“XÅ¢*¬}\°„PCtÚ<+Üë¨Q½hÑÜ|l1õro‚ºï‘á>‘§µîf¯ž…ñ+bô¡q.èr#  ’=-ÈìçiÔ‰,à º;º%l0†ŠË¢ZpûpÅ~‹õÔoAGn3¶è–nЂ.>¥ÚŒ÷Ç jQª ÃÐ"äUªD£h¡ø;àŠWeR6¸\Rűh±aÐ=½Ë½}´89œS7ãæõÁÏÀ•ŸŒkÈœ÷£…ëÍdf0Z( fŠ?jd-8‰D¿Å&ÝÓ3Qxäc‹Ñjq3É šó±…3Þìé¤áhŠ‚0¡¦TŒEÜî(ÁÜŠÔQd^slá5cz—{ëhMWße¥„ÅJLØvR¯ÄìçÑdSeiÔHZÐ#6b¸à<°RF A¨›}&*±)Zô¡Å¡ùR‡„.®ž¬Q}f{&pZT]ŒC ²øÂøH‰àÅk C›h±)ͦ~‹›C‹Q)ÏÐÊlÒ6‡{¡CïG‹ £Ð‚JQMU‚;Ä AM¨ßðÈ … ›xßbt`aÿ§w¹·Š6â­£lÜ•@ÄŠ“/#<÷N´¥1 „Hc¡#¤pù‚@ÑP " /Û§é™¨í£ ÐiPh‘͸æÔBqæv¡J'È©‰é^@ jÅT<º0SÊÄ ø?iQ-ˆPуæÃk‰:ÞjB‹‘h÷[”¹”ë—Ø”»£’»TÙQF °ý ß h¡ET” Ù£…D–>´ØœhÓ»Ü7€Ò‰º‚„›Ù7.tÛˆ(ÕÌÆA ê¢6JR‘S;ki -XÙ-)"5ÕcáW¦~‹­¢Els¤B¬;7¯;=»«Ý§iì·ý»±?ûq‹»n³ý> ûïÚ ¿„ý² [u¸ßÕµ¸ì6çœ óÏ]¬ÆéŠê»,`3s#–oB3vÌô.÷ÖÑâp¿IE;k© åò{úw HWŽM¿i£Ë»ÓôLÔVÑÂö[ÔÉÀâ© ol_Hôï–ØÒA4ðò\ë9ªS »øyâëëé·Ø„DÓ»Ü7[Œ|&ª“%”Ù<¾ÈI^,EûJ¥‡$–6U«¬åŒ+RFEâRn‰×s! Nïrã‘Û‹-ÒwEG¦µø+îß(iO¢L¾ÄŠÉ2Ef”¨S>‡E‰ $¦3w6XËX>>q*NýÛG‹ý˜èœ‡Ý¡…ìÓØJ¦Å `ã—k…ⳤ:Æ)~” ×»X¢Šè̸–Ø""ïô.÷ ¢ÅP¶ä½¤!ìŸtd&ÈQ"á‹Ä\þE?Å+ð Åà_©oˆ0ìÕ¦|uBST>¶¸’9™ž‰Ú.ZçÞ·(Iü@^ohÑäÄ9’kÚ—ˆd[É:’ Z!Õ.Ö†D-åiúG,Xð‚Ó»Ü7‰Áïv£úö]0~7±ÉvQ%QâHL…ÀJmˆ"Öœè¤&®R–N4Âo”G,chdšÞå67[ j–-s-ï\=ðÐM„tûÁ2øj)«‰Ì*êÆ®p;‡%‰"È °F¶|˜V*dT‰s¢:c‹¡Äáå¦~‹í£ÅÈ Q›ÁÁÅþ¬ý\å;Û÷C€ˆˆÛ´ôYÌ„„çné @x¢v¡1õ¢Š¸¤zA=AÔÕƒµÉJÜÁ¥˯€¢Ó»Ü[E‹'™^î¢Èçõ „¬ýˆå5EûÃL«Šy ”0ö2‰;J¼AaŽwµ+(¥Ø£äì`P+N4¬ÂÀé Öƒ‡qþʇŒXÞXˆž‹fz&ŠŽÜflÑeÕÛÏûœ«%#—ÉCqòâ„‹f\Ȧ’÷¬<ÅDƒ¨EÂ1ÇÐÁ V•´-¡:0¢w¸(y&?by,ç#’=bz—{›hA³!•ØÎ²šß±W׋[aôYɵP`d÷ùü,Í‚¡™å=3Ñ“÷L›lzZ0Âa.¢ ›9Ï„Xž)…âhæW”§sWL¸¼2vô[ R‰¬MïrßZt‹kÚ+ëX´˜µªÁ'EŠÙ<-2³átõüž+FyÏ•÷Ö] W ùÿáÈ01CCtºâsK1îBûßÎS¿ÅÖÑ¢>ÜÏÌÏ"ÄU<¼@éôıhuç`ÑVp~`'{ã…^žj½°ŒIy1Ó*G jN€pÙGANÈ|&Rþ„¡A=¡¬°Sáb@=‚’˜®ËYêì±HW¦w¹o-zæ·˜g{e×Í‹ÓçËvÏåRÛ©_üœÛ{‡Íózo¶ëŠp´Ðcu¶¯ã<š9B EŽ•’ÍO‘õ6y!6ŠÌ;ûG•A»’¢E¥$å©•"óªT±|sjz&j»hñ$4Ðö9QAlçÁûí-ë[vê?Ã6üÕËå‹;Ð5´óÂ3³f' ãh(ö£‘*K@r‡$ˆ€UÉ0®"Å)Â’Š)†-ÛÑo1°c(¦Ôô.7¹U´@ó•›»!eï Ð,ÛaÎíçËççÏö\…#c œ érµÒpêrÇhAn™g“""CJC¡Ll°#ð!bh3ø©ÉÏòGèëùcz—{ë±…iÕ›i × <¦p¹†™Vïíøˆw°¹H·RßzO0Ëö¡›s»¹sºlêÓPJÚŠÿ —Ù-4MËíc £ªèžÉR Ð %SJ0#`¤Æ |—*:* €!ØÚœ0bù˜. —¦~‹@ ¹ÃtõŒ®•i.çåFdÙm…}†³l‡9·÷Vçúþ¡?Ñ«:K@‹K×¶±E-üMVhø5RR´` ‚ 52•\ˆt |._ÈŸ`î -Q›…áz—{ëhäKÊ IDATqØ N¾µv÷@+V+Ö»àÚ›pHMY~/Ì=æªÑ­ï5{‹“æàiVüÜy¬P‹ÊD÷¬Ðs!ÿÇ|äJ1õ†XœT ¹jB™¢J}…Ë¥ØHö˜é™¨@ ̺5ê6>°¨ÑÚý:˜ùÖÁ'°hábÈ|.Z´¸¢O´«òÎý;Ï3Œ^óy¹aéfZU´`,D3í©abqGß'ƒ¨aäÿ ¶#´@bKã¤ø™<˜òöö[ôêFR`z—{»hqLór¯}µmMjÿgõâ4äÌ#µ˜ a.?+E \+7K·«²ÑÇ‹“,ó5Ÿ—;N˜ )Ž-óñéEÓ=ÂX!'Ï *øØÍ”¡-"õSÔiNW\±œ­Û»Lµcz—ûÐâ»[F,fÚÆÒ[èhAiÂ?ëd¨R/çB0aKTƒý$!äŽÐ‚ß(Þ-Ï F¡•vÝdÚѯ%´0i¥A›P«˜:[¢{Où‚S¿ÅÖc êånCrÛØâô¼¹³ Ó ;¶ö«Å:vÖå¼³¶Ê¶æû/ötz\ƒórû³ø¦¨9L@Ìo”[m†$Ÿ1„ ,ä¨p¢Âã¹20! c‰ sb£¡…¸ÙÁcЖ"îé]nªh—ëÐO>»:<Êæ®s›OfIÄâ–‚0ƒÕòa$#˜œÆ²!¤¹Šd3ÒD¼àѳèòq(¿Ò3ªàZ¬E¦#iˆb-Qfpl1¡Åh´8ì~ß"´í䟬½ô®“ljUÈjÎÝcµ§€kv@R·ÌßOGæ™SKTÀ¼MÈe’(È]!b€hÄô#k ZðèÂka¥Ðj+bTŠ4­[ô†y^„4½Ë½u´8Ü×ûó³ìgî—…ÅUÃÑâtqzËȱ{ ÷Û‹zôÛy™„-Qá¶Hâ Ü&{Åo–dÞý`ñlÓ*£c Ú 9GÂÁ6ôµDRÜU!Òô.÷MÄ;=‰óÙ¤¡iI;w, @dKT>¸(ú Î) ±ÜPÐ笕ˆÈmØ3…:9œ~dÓM$7@®”\ ×:òp7\sÿˆå£PÑ~ê·Ø~lqÑ4Oç> …Q³H# gzîý;ÿ D€ÄÿÜ ƒ*ùƒß¼Mæé‹Û3 §†!gŒ‹sZΚE»Rl[щ{F,ç Ð4gAÜrz—{«hfZÍ;IA¸;öõ¤÷%æ¼~£øƒäÝ&ˆy‚H:<6ÁаË +à b…Ì0|›æfZMÍÏôLÔöÑ¢/€Î'ɧï¤É“°£ã¬î+ÍÄ®_¢E.¶`V‡œ(þ5ÒŽZHÖ0ðU¶ )0!?byNôìžÞåÞ*Z žß¢‡ƒ.êd+îèîOîÊÙ Å·ÉdTRNñÈŠs´à†”}haPäA1”΄)[ ‚ÖщÅÒŸkÄ Æfz—{ëhÑ­$ôYÏwt´8< B!¦ë[€RähGB ¸A¾g¤IxübJpeAÛBݦ6¤<Ì–“Ý?õ[l-ൈ1¢×£2D!¸~y›°(¢éUYTäì «5 -@—‹»‰— ¾ÒÒˆå£R„Ó»ÜÛE‹ã0bùµ¤^*©^é׊Ï3NÊpýIlQ@ åE'6ÂÔC>ÌŒ‘E´@‰„J ñ±0nȈå:᎒Ó3QÛG‹jÑï—w u ‰›Á1±(À Z“Íô¡…“yô¦,dl $?by?EºvNïro-ž š—[ô°Ö·eXg£-TWlaŒ‘‚á=~Eî™Tvš~´@S r£mæ¬é}&j„Û »§w¹o-tž=²ý-¶×”_![¤äŽÖf€ÿ/ЂŸÆ A‹ 4…1ÍlðvÞ:ÙHr¦~‹m¢Å€~‹^OõUjh÷F§N¦ÜТ[Œ§)óàà¦hE%te 8ü£ƒF,™¦w¹o-6äM"õ5Ø<°pYyzv·iÞn?wÃÇ­éöÓhÿ÷ì®ÖTæí>wZoli»´ëoûý¡˜ÕØZ©Ž»áx^K¨Ëe‡êàZÞnà÷¶¾ ÅÚ¯n$Z¬ör爆ÛÓ3QÛG‹qÓÕ_©³bôã[2¿†)[ðƦnÛ‘o‰2ƒc €Ô -£Å¡i5ÃbÓºƒ=;†`Éôÿ&)°*“)•ad–ùå:²…E ‚vÇ¥‘±EA?d+Çô.÷öÑbøkëd}ð²NF…Éò²Ãè I ëà<˨VA”‰¿’¶< ±|Áyšú-^mlQàË@ËŸñ†c†;P7òê‰Ì9ey„=ú’ü3–”)¶qU9eQéß…{.âñé]îí£Å^î&²LÝF;-SƒX¶“[zÉ €—à8Ál*›B‚ýf-¨@#OÕ5bySÂÈ.7ª™ž‰¢#·‚Ç„ݽWN›V§ò®ùà£>TˆÕ®´wóòŽŽ>Sæõ££OÞ²ha^þäö§¿÷î'Ÿþžâ¿8:ºmÔgŸ}òì»m÷!E˜“ÖÅk‰–)vt¤KîËkË¢E'…ÓŽ‹8cz—{ëhÑáD%ñC±+"¶t=ãðТùÅ'æ£ÛoýàuóC±ò‹¼nïáåCóðu£¾cÔW­ø¿t_=x¨~ø©»Å?û#£óúæƒZ­y¨¾zù‡ê«O™>0™6J’þâýBì•I ’R©ŽË;HÞ—¦w¹·ŠW~ߢشN›±c<®ný·§Ž~ðîO,ND+íݼ|lÔc~ðÉÑÑKçDµíŸj5ÄÞë;ÝM¿cKÅû"½ˆñí‘Aó#TKeôBÔv…1hK1ÙÔo±}´8žÅT/p†g ¤»Ý‚Τþóýü£O~hmþGŸÁÊÏ?úü‡öVZIüŽ1þÀ<~éѸŸyàî°Õ{«ÚR¾vó%“`’sogà [POç€.hl¢*WÈè±8× qY¡é]î­¢Å1G‹rd±¥”ìÞŸµüòϯûì4æ'ÿðÔ/Û@¢]ùÀù•6çïÜ­x'ʼó™úÀB… /à×Þí_8'J}ôP=üHìK„» b‚ÔJ¡WÔª˜á.“ßÂUP8¸„e´?MÏDm-ÊNT¾ý©?½²ãD¡ê7Èt¯U‹¯¾ù–ù³VôÕà ä¨6šøæ»mÈmÔÃù. …ÿÖ³jw›ÇmÈý‰2oÝ>ºý™G‡$Þv0³ šÁ•"Øœ #Žu ¹óŒ'ª·EÊæMïro-`ºún£ý~ĵ˜‹¥í‘órg ˆ#é¢hû%wƒ8Á G¢‚„0ˆ @ÒŠË‘A;‹5@K'{7O˜!<(ÔVl‰ÊÒ¯@KYlz—{«hAó[t ð½Ôº9“6«ëÅ}7ª`¾Ýi쨂ó³8'ÌËÍhËV^fØŒ÷Ç” á¹JŒ¢ G@YÆCÿ¾{7äRðD±gt ý#–m§2S¿ÅöÑ¢<m×BËÉbOë=>)RÌÚ‘hq–^†Èß ñònøŠ‘wˆ…+*®@[°¼ˆ!€¢Ìé w ¯Ä‹C5†’[e:F,ïì-@…_ŸÞåÞ&Z Ÿß¢a6 ¸têgL]ÝqS¿œ×çÍGzyÚè…eüX´xRR‹H!Ø–2)S` µ(/÷sKb˜¼W’_Ф¼$e<éEx«òµoä8Z¤DöôLÔ  EÓ-¿%´xqú|Ùî S¿ì.õr·Ù;lž×{³]ÇÆ2Zd»ïZȦ°3 ^$²Nìôñp¬N€öK´P(ú…»Ãp±€%X¤c6¤bêq©¦w¹o-zç·ÿgÌû·-M{ËúV˜úÅÍþâÿêåò…›3R&ð.ñç·ðS+5[él~¼¡2„–£s:€®“¥€öUÁCP£¼2¡7ÕSÇc qÛr85A–6{z—{«hqÌgZ-¥3ÇÖ³¹?öžØe§²s\œú©Áž/ŸŸïîzÇù-†%Œ-.W+ §n N“T ¾©Àî´R¼Äfݯ0— *ŠxQ˜ÕBŠÁqÇ1©ÄòrŠ](Øžú-n-‚Y·×Ë–ô52ðr ±Å½?ñÎrgÖâÁµDÙßá²i¨æÎ鲩O}}ä›=mk~Ú¸y‰£9YY ±…¦i¹¡–0 Bg¥bAµ_Û î4—f‰8¦`ÅZc¤ _…™¢óÅ!(8qcc‹’jp3½Ë½U´3­¶6ßNWÏ’kešËy¹‘Ç»‹Ú¾ÂТ ¹Ï›fou®ïïú2Bûõ‰>©÷ý$I—àYÃO‡•€—þ<¶QSCÈÍCB L¯˜xzoÚT WLgnâ™ÛÎã@ͱh ¡ªK½ÜYo’aB'ÊNÏDÝZ€™n{Çn¾T+ò{ÁÉ·ÖîhÅjÅz¼Øk>9ªÆlB í^œøy‰}Ë•>Ù­ëö —< Å|lÁ* î<3hñ } e‘l·‰èL„£E(¦hº$i£6A à©xMùË™"ô÷k'iz—{«hq,Z¢¬·ñEVAê`ÙíÜysR‹y4‹wœÈc@´pM¹¡f˜´øù¾Þ«Ûœ%–§y¹q jÁŒ:¸Á¶Ã3HÒ[LÁºH)f.#]އ …+‚,ÐF¦§ÞÉë±¼3ez.@ƒ¦w¹o-BK”ŸõÔýÏêÅiÈ™Gj1Ëð.ç´X‡9ŠCÍØrÕ† ·‰ÏËrý”’èž÷„·^‘/¹ d 3èžT‘#DôÌ¢xaÉJÄ#ÃЂ¥|l‘54ë3õ[ÜXlᣄ€‹™v ‡ØBŸÅhQf%D 7(úìÀ×׺hÐrÕð>rÖË-X®ß‚kAˆQó*Ó-(Ä@¤1R„G¡…aFØ­RE<²ßâˆå]ôË4Ô²¬é]îí£…iµñíN>ä¶±Åéysg¦vlͨE–“ÌQ¦Ø¢ ¹›6än\Ƚò¸ôüN«ƒ:L\ì ýþ,~þÖðLóàn»¬If-‚!9AÂ8´ !XÊ#[waÄòØ-Jµ¡+MÏDm-¢ØÂ5Ð:Á].ê—NQ|lÁZ¢. €¼äFÏoÔÀ·GvAÝ!KÛ@Û:O/5´\<¯»þ¸ [¸¦(ïFaÈÍM:Ý*_ ¦„¡²D†Ñö*(›å!E%Ê`wôµ…ó#–Çi@?Û9½Ë½u´ ^îˆ[:4 yßx>÷Z`á…5ß`‡Úž Y£ 5_ù„ÏD¡VøØ‚ð”¨FKa;Jh8 ò7€´`Hà9‡†*Ï¥‘ý9Iܨé]î­¢Eî ZóZNœÁÃ6]\`A{¼¨û:l´¥Û¥†¦¾la!ÓyÞÙC-Q+¸7/7Z^0ÖˆZ ^@ ÒšŠSŠ9CĶ,ZdÂ8i/̘q¢:ƒn¾sê·¸ ´ 'hÀ¨[¶º‰ì.ÚÄÞ·³±‡ol]‡•´aDh¢&+2}’˳~Ð…¡HèÎCûLDõf›–BMŠhôöšÀ,~Xщ¨E„"8I¾FõŽX>4œiz—{«hÁc‹"ÀÚѬÀ¾´k©ò=×[´ËïïZøp›³þ.Ø¥e­°Ï ±L(É"éA m¨s8ZðD1À© \ŠÑb'*¦QÍF÷[LhqµØ¢lmu?7>œXATÑ.×@ôìþ¡Å/“xßb §6¤Šî*¡WŒhàÂÑÊ`&gQ†‡@òÔq’ÂGX1,¶È·Deˆ…YÓ»Ü[E‹òÛyŒ)g6†\>hµáÜ=V{ÊТPsÂöÙ~¼Cû÷-€Šw†&(Ù‘¸Ä$%惄¾'g-¦ŒPx0+ã³!­“•¦ð4þô.÷M …ÞŸÛw)ÄgNYÉ3=7Ö‰"´8]œÞ²YÇ®‘÷ÛmÈ­sÝáÉ®åd%ôrgˆ—¥3å)ZÁGŒ€•^´ˆà‚¡…"_Î䮨sÄò>÷²¸ê·Ø*Z„Øb§'åy ¸¾1ž9Z à½ïrg€CêKp¢TJéœmFƒÐ…Y>+&äÝhE¬€X^^QÕûvÞ𨂵YLïro-.šâéܧiD µ!u¼}?yH‚G)\³@Õ°gûÐ"&Ot÷‘a$A°éŽ-¿X|H£ÄUzF,Ï*CŒLÏDm-»Ü]V}pkRšÞïC¡©1(r=h‘1ùy´ˆŒ ˜,‘Ññ24CwŠ£Æ ]g7˜õ6óé]î­£E÷L« aE¾Á$â]Œ"eêÿ¸¤¸$ò»(PåFЂ£ƒÂ€=úzÕí±|“3½Ë½U´cÐÓFPÑð(cÃÃmòìÏPZfØÌKLÒk@ Cè@ŽJ.²P}oçålMw3íÔoq#hq(ú¸KV?áSg¡ëKÏL|£ìf‰¬µj´0&‘n´¨ ×P¦LdaºF,OSÞJ6¦w¹·Š44ó É%þW×'MáÊ¥O¨b˜±Þ-x}C[¢—x¨E•ÖoÑÕu×HSäj˜ž‰Ú:Z iµWÌóøÑ?%„r?+>üþseV &Ot÷e´PcÑ0C§Œ?’H3vÄòAiz—{«hác‹Þ Ô×WÔ¤Q¾WÖŽgÈÆLùX´@¼„p"ò™*%®ˆr»æ·ˆ¨°nÒ¼lÛíô.÷ÖÑ‚·D Š.²%·’Zdìx–,Th4Z\ @ ð—ׂRF‘…+Ô?b9äË´iê·Ø*Z°i_®?¸¸Ž¤G£îh´g£-0¨PÒ¥XáÖ #–&¤0?Ó»ÜÛG‹¡±ÅV üHú£Š-[]?“r5CÄcc odŠh!ØAÇŠ A-t¸®QOÐJš• ?=µU´°±Åñ¸éê ^Ó–‚ +PwÛûê»ÍÛýÁÇæ¾¾ÏìîPÌÿñEùa.Wüj¨Ð}©4»áíNkÏNä®×üFXÕMGKT¡ãbÍÿ²vdz—{ûh±/X0,´È ÷(Íøg” -Q›Ž™ÞåÞ~l±Ñw}LíÖ¦ÁI7EÊà}E”ß8©Ì ²µvÉJš†X>À¦ÐÆÔo±}´8LÞþ)0gÛ“/Ô==ÁEÐ¥7éõ$#ךÂYp!E…oŒùcX‹Ôô.÷Öc‹þg¢$gü¯þ¤ÿ–( ·ä¿(”‰< ~°Òü›˜·h%)ewqKòÜ~ËÏD!D0‘§ŽÜžž‰Ú:Z$/Ñõ†IS–wݹýû|RœV¨l ·½ýLe4úâ!™j’\q/WPy1n¥sÄòÞ´N7×Ó»ÜtäÖb Öu…ð¸tèU#nM¢š•p.¨Œ*[^оÊÔ•(@¤+Fî'W¢ZÔ§¦ý$½Œ0¥$´Î ¬`>xtjJhÁ# †UpsO¤–ÕÊ\ÅI,v&tŒX¤2íQS¿Å Ä߯þˆ Ö™³ngs7¤ì=Á+;•… ¹Ã<ÛíÖîòùùîáÞh'jÍçå^ó}ægC"_‰¹7&6ÞäM D ¬ žJQý¬†]€LÔâÅv†+ÐÝ#–wh@®/Õ×0½Ë½u´8Ü׳ù=[ïíøˆwΰLë#µÞ“C‹V5—MëD5wN—Míg‚rÃlH:ÌʱzøÌ~“=fžšiÇ …¯ d‚*ËÞ°ËpÇÐy\p(ñšÑ5byçhÜåÓôLÔÅë˃vyH KuhešËy¹qÿn]×{  Åùq}|Þ:V«óæþa`”´~ßÒ©Cµæ§ h±nܼÜþ,~ÚfÑÃýlH­p7 @N"9aÑ 1³8¨z¬°ìZÄq{& R[ÄúÐZøüé]îˆ-¼Y׫ãs}Ró ¶}Ÿ„µv÷@+V+_àÐâÚoɹ¶­= L§ 3­j–KT &ÐìÑ%Å“ç’H¶Gò|'¬³Šëbf—Óx#U‹{ 6?by¹ó´7kz—ûb 훌.—/šËV„wõÁ^˜IµñsçÍI-ÒvT‘˜ücKÔŠò._,öÕ‹?ÐÍa-NÃb T°[gƒøº«·ÊBpïF ”ŠiŠ3(IÞ vt …A W–-HÒ×Emè ñÔoqhÌúJ׺>¹lô‰íÁ†™T}lÁÕb–ð3oáp¦Um¨Gž¡—K=»|ª÷m¼®é4¶Üœ®¾ Sé0’"iÆçP0}O…¿ã²Däax¡ÈG‹Æ{2‚âÆ°R†ðDò‹ü/8jԈ咂ò‰BFðé]îˆ-üL«­|Þÿø–µÜ³ƒÚFÍ+çý8“­óhÑcâZh(oƒû;MNƒhX±ÑÀ(F7æÛö†”<$õFÔ$vJ°@*3¥IÐô…qÔL«k¶ž!2¬OÏDm-¡;oÕÌV{Öx/fZûÙ…ÝôÚŽ­ýNTâ`<6U×ÏÛUœŸUžb P T —ôœ*šØFÞtˆ@BžŠÉ}e‘È3#ŪUD‹pXyÄòMü'Ÿ¦w¹o ¶ðf=o+¥§çÍçÚè\KÔ´ºó‡¡Ö~㲜Ë4qX7…íV®§OãcÐË}ÙÆÛí—ÇAü%yàn+Ààè B ’}Ø& AçH^ ›‚4† ó±Ò-ú¦'ú¢Mßúâ[_|ïââ{ßsé ·üÖ¿¼Àßßjw¶Å¾÷Åßú"WšP™l û£•Ì9¿×ÜžŸ ñûl¾<)–§lseÁÌå¦[‘¨îËåUù‹má‹$¶°‚ÛÊãrQ¿¸Ô0}pæs¯øèìšo„}§ C‹fehÃA¾—Ãþè4^|lÑf`-›*•Ü'€…Âq'ž¢>g«xlÎeçL«¹NŒ$£TÁÀ4ŸRg hAcxÉ ¬^£Éö;,tG´u²–¶£Ûo4ôé‰öøî¼n«(œnŠ-V<äF“-9Zä\£,Zð3ì øÄHÅba[„ TR´À+²{Ž*˜u£’LÌÐÉJHÏ|Þ³ü^È:¥Ž´±Eʶ¬˜Øî¿t~—ׇk»üþî¾àW»Ž~Q:ã ²B/wì@q³·+áF-x³˜ûJ1I–RÅ Å(øQÄFõ{Õ+·D­U¢4.—ß—æ;™huÓoÏÎë;ѵ^3_‹.²¹½Ü¬m)à ï§$_a”À—zv7lyTï Ì?ƒ>—†'h™ð ´€Ø7(úôe´¨AŠxÅš'¤ˆs+V ÇúZÀ‘ny sçe˜ÂL”Ft¤ÚrðêËž×t–ë]²ËRÑE‚Z`lQJg;œüÄ¥ÐÝwéJ[´Ûçî±Z÷ŠRü¾E·×¢—,hxø#w{]¤aÆ û-zo—ÊÐ¥ÒWMNxžu¢…‚VTÃß¹ˆ[‰Èà“:°W+b,HÑ"_¸råTý#–wÆÛùÕ¦q¶lvì…ÞË~¶ëòþ}î« ¡ÝAA±…»dXƒíÕcÖ™™q³3ÌJaÉ›^VÒG&ÃÈ®Õ`±–a_äÐ"õ‰2éÚd¿7u£4ü˜„]´0¢Ã‹IZ¡*ÐBvH ĸÅU±<"bIú!#Þ¯Û»9±¸°˜é§—.†¸ÿÂ;QÍ}÷T¦výI^-,˜´NÔSB wÙJöÛ˜1ëp(¹¡ñ¿—»ŠS‹åÜØ²b* F€u=±»ðí7Ôo‘§Ž=]ûAɨd¥gZ(ƒ6Z¡´gb l3Û¡E…ìŽ\Þ …Ø"K›{Z×—wZ í/^Ù·!·Ãö͆mÈýq»Zûž(æ>xõ¹L†ânh€kügÐËí7Ïßþ™ !ºÀÌðV8 Ëc‹n\è ¸ËÜ¡gÈ’ån7ZcD6œÁe-2°O\„€˜H4¨Ä)2hfrðˆååH"·£õî¿ j\ã¼? ²ìÃܰãßÐu2%ˆ#~{Þ@|6ŸÞªÛÖ×pLàN4ýQž×= äîæÕv|)®#½h1gW-@|™‰ d`>š» $ha’"l?ÞtŽX^ _‰¬Q¾ï¶Ð.àñ~«ÀÆŠ ;ïñ²n3%Ü‚°MaÎÈßöÒØ6â"¢èG6Ï¢ÅqªÅÀ¢Øl2 ³¤‡µDùV 8Ú¥-(¢p2]1æ!m¬K(Úû1ê)XÎVFÜug¡Q‰š±àQÁJ¡ˆŒA aï…ßn@%”¨»"ÊknfÚ]ñxÜMî…ÂÈÂïÐIKT^zmZ^‘®GC˜”¢"kÿÉ£‡ ƒÌ周îC vâ,ZoLñ™¨bpïÈ5×6ØíŠb ²¬†KwÕ·Îdf…ï#¥àFÝö™ç/+¾pÔZãÒo‘cN¯¼_gpÍëE´¨ÛääÏ¢€Š™J]`%}hÁÏ¢…«¡JТ)¿7ÖŒ (¿NVÜZˆ-H>˜5©´Nˆ€¸ Ä%¬š’E–6k«Ë*fHEN”¸p£0††ØbÖp‰mãó\ *¤Ž¼í?wÝß]¿ê7ì÷n¹íº†ÿ·ñ°ð¹ÛøƒÜ®»ZßÕwŸ¹ìgíVø¸ÝMØËëpg½+Îp·¹ËNq· ÷-ŽXY¡$GÚ\éVQÛË£Kt÷Ò¼­Ýÿ3 Fqýn(k7üö3v¼¯MûBíß³pm©îvýØ–w{Ââº×ýEE ·€·êËÀAp—vÐbN"Í“G•Î20uìÂç›ØSP#gâjæömþðv:~ýÿœgAû…￉þyOr•<é:úßðSÑ™Ëx×?v Ú²x—K¯Ã6Ðî_PúÂ}aõBîI׿YòˆìÑ òÇ_çzr‘ùKü"Τ §×ñèÒ”º’–’Éû-Ö©àFñB7’p*9£eÒÉZÞ¿‹ÒÑ6æéÌûI½zØy®–ð"_UÇ©5/Åg—¶÷ùíL3­–Ro£Ç&ûËWÁ©¯­i@v¬2W[KܤˆlÓp–e2r|…uyÆLâîÞfG~½QÒ×þ‡%vN…ƒ§ô5LŒy¯úR®„l'hÕ‚ ¨Å³¿ùÒ­ðCÿÆæ¾A[òãyC”Ãpß—¾ÿÅLø¸sþsú¼1ð»I’g¹Öäës|#Ãðßœ„²MÌnƪ“NKKïëYí±‡zÛàrØo|þŽ”¼§\”7 ¦ÉªLkýmþø;î_n¢rì,›UХ͌£ æÿæ|@¶Ýù;yã ‚;±mAB¶kÿßúL—®R;¡–ÀÆøãuàht^5•nühñÆåx•û)è~m?ÉÑß`[²ý%ÞŠ¿Ýûm&“¥L*¦³tIMEÕ  –4uîIEND®B`‚jpilot-1.8.2/docs/jpilot-datebook.png0000664000175000017500000016552012320101153014470 00000000000000‰PNG  IHDR;þ™š¬bKGDÿÿÿ ½§“ pHYs  šœtIMEÕ ! í^å‰ IDATxÚì}XWÚÿï„a ±DkÔh©FEKß*Z¶e+nm¥[·µ[¯}\,¶ºÖvû¬n×®hñWºk]ZÑ¥+nÙŠ–ZjQ±EŠ5HÔ(£Œ0À$ùýqtšòBˆŠz®^vræÌ™ó2L¾¹Ï}î#ûÏþfÚ´i)AAäŽâ1ÑÒùR^zé%”ƒ ‚ rGñ”hy饗䨛‚ ‚ %‚ ‚ J(AA”P‚ ‚ (¡AA¨VSív»“kd2v‚<À7þ¥{°÷°Käþ}õµ•Na—!ÈCø]ÞòG‘G¾ã"ÝW:Û2¥­z:—#wA B‡êÍéøÇîĨ„yò0"»£>pQ"ØíöVß)ä½#“ÉZžu¼9n™ÒV~hÏ.Ž â©c3Ùäü—ÕnAN~"ò ýð— HІ)¨­Ÿqí¾Fœçw£!ŽnÕ Õ,Ñu;“cÎ–ÇøÂDû]E9þÌs®ˆÐ … HǃôN¹s[Òí::ƒæh¾r¼ª-ƒ–§ZѪ%¯£æ=AºˆŠròÑô…B‡Wµû‚pT0äÇ™{f•–×v¦4·[êúKA¤]PB!ÈC$˜$¡p÷ƒ/r'¾P’EÝÅ ;*3BAœüîròþA … >÷¯‰¥UgsWK„Ô=”Œ‚<?8ÿŠC_(A\z§8wKjÕ{ åT][ö¡¶ò{J>¶[¬·FË‚<Øú œËÁ‰ ß‚´êÖÝÖd´˜®-MÓ23O©–ú¬¥gU[7j·47ú¤¥Þr=Aûâ½×ì¹Õœ”+×#ò ¾ZMowAJ«…8ÉæF ÎßB.Ã\oB‡^z.6ߥòà½Û—P‚ܧ´4„`Ÿ`O"r'@ … ů({AÏ‚îä‚ ‚ (¡AAî<¼ôÒK)ËSå ‚ ‚ÜQP´ ‚ ‚Üdk×îÁ^@Aq7Þ˜HÀÉ“Fì AAW¨®> èNŽ ‚ â(¡AAPB!‚ ‚ „BAA … ‚ òpH¨ æ-_ž@þ4(lÙ²éRzçoÿÆq#Fô—>ªÕ=Þyg&Hw¹sv¥§Ïøßÿ®V÷p¯Ew¡ž‚ ‚tô+ÞñãGÍu=³ë¸´Íðʕۥã“'wx°‘”­9|ø ù8z´æÀ X½zÇ]èbÒ®¡Cû¼øbô;ïä¸QÂÝ©'‚ ‚ ]Oäµkþ¯½65==1--˜s\çÇÏðH@€/Èå2½¾?‘PÒ]Z>qâÐ_ýjŒ?äÏž#“EÉß¶\îæ¶ê'Ošzôl«’tíÑ#(--!-mú³ÏŽ”¥œ6Ì‹‹¾lÙôÕ«óØc}Ibtôà+f¤§'¦¥¡± AAî1Έ ó¦OM¾ëCCÛ-Í%+Ôòå äàlÅè2kÖÇNœ0õî2gN̪UÛ]oŒ 4?~~Ĉþûö4HuåÊ ‹¥ÖyáååÕÏ=7àð£öºråzXXwšö9Þb³ÙÝëÐ#ÂÍf®ÝlIIc÷î5ìß*2òÑVåÚµküêÕ;ÂÃ{&'Ç9rF¥¥e×Ö D#"‚ rw¤ HßÚí*³™Û±ãÀر“’Æþõ¯ùPŽy-4(¬GÀ„„Ñàïßa­P\\1uêãûö=z@qqE»…›LW•Ê oo¯=ؽ{ <âççS^~ѽþ•Ëå<_ÿé§ß¶›9<\¹iSüøã™9s¢[f8tè4œ9s)8˜!)'NT½ð¸ƒGŽTâÓŒ ‚ w Gé"͵«X~üñ ””œž9sL»· :_K™ þô§‚ÐèÞå'N˜æÌ׫W°N×;;ûûv ·Ûí••WÆŽh6×”—_œ>}´¿¿ÏŽ;Ù¿ŽØív¹\f³Ù)J.“ÉZœm½´¦&+9+]±iÓnF9fÌÀ'Ÿ´vm>Ђ ré¤bi†‚ ¦èèA丣¾P`³Ù:=wîøòò꺺W //¯ž:5âÔ©ê+Wn„†öê|á‚Ń]|õjm¿~=`ĈpI>}éñÇûÀðáý\,'$¤[E…yûöâ¾}øà"‚ Ƚ¥]Å2|xÐëÃ+*Ìí–æ+ÔÖ­E³g?™žžèååe±Üøðï:ZBqqÅĉCwíúÉÅÂËË«#ÉäÝÅ‹5wÓmG¨VÉÉ)ž;w"Ï ÇŽ“JþüóýóçOœ8QwòdUc£Õ•r’“ÇûûûÈå²íÛ‹ñÁEA{K»Š%440-m:€lãÆÝí–&[»vÏÉ“FìVWðò’[­¶áÃûMž<ì½÷¾ÄAA† æ-\ø±+9««ïܹ©}+ÔÆó?.X°ÉƒÕmVøº‹§Úõ»ßÅÐ2de⣆ ‚ ]“–êâNè ´B!‚ ‚tb…Â=òAA: J(AA”P‚ ‚ w ª«cG ‚ ‚ ‚ ‚ wÙüù±AA:úB!‚ ‚ „BAA … ‚ ‚ AA%‚ ‚ J(AA%‚ ‚ J(AA”P‚ ‚ (¡AAPB!‚ ‚ (¡AA<…]€ Òeùý’(Ç;w™±Oà7&®]»›Œx¼“çÏ߈ AäÁääIãCÞÕÕ‡¶®x›|;¹ëH¨Ã&“Él6›Ífš¦Y–U*•*• `Ž‚ ‚ ÷/wDBmÙò† N³d’ÿ¥¤¤ œBAäa—P™™ [&* –e9Žçù_æÏÈŒU©žÅÁ@Aä¡“PÍÄ“N§Óh44MSEÓ´(Š$ã8ŽãL&See¥”˜ŸŸŸ’²Á½[GêHA<^š÷ÚéŠØòÀJ(Q<••%}œ4i’J¥R(<Ï“é<ò/MÓ“&MŠˆˆÐh4——·fÍ‹Åb4ÉÙÌÌ…ñññ Å÷^48–‚ ‚Ü7ª¤dcii)9ŽˆˆÐëõD<‰¢H”“N§‹ŠŠÒëõ’Í DQŒ‹‹cfݺu*•Êh4Z,–esssu:cd䫪Cq ]\² ÇAfA î6Ì«ªº`·Zíûöüþû2ç™.ü¸­³qq#òòß׮ׇO™ò˜\.óòò:uª*;û{»ýA~À6l˜wäHeFÆnòñ£æ¾úêæNxñâ5¹\fµÚ¶n-:sæò«|çk{/%”£~Š×jµlj¢h6›Y–4iÑIÀó»Ý^YyeìØfsMyùÅéÓGûûûìØq°eiÄ9q¢nêÔá_»÷04ëꆆ&éL×é7¹×dgg“µZ””´bÅŠfú‰¢(“É”™™™››ËqMÓfÉ’%+V¬HMMµX,[¶l‘r’ (Š"Íf3EQ,˚͸¡&‚ È]‚aè3Æ|ûíqòÑ`0EGºý¶ïÑ,s«gEÑêãC¹ry×d÷î#3fDvëF€\.‹‰L¦ŠŒÆê#úÀÈ‘áåå?1 ÞôúðŠŠ[‰55¼ÅR›0ú~™Å“رãÀ¯~¥9¾òòê©S#Nª¾råFhh`¯^Á.XÚ*pÏCpp@¿~=Ú*­´ôì”)2@@À-ÓT[]-a4š¥n¿çæ¾/T\\MÓYYY‘‘·Lm‚ ç§ŒŒ žç•J%Ã0J¥222R¡Pïò¨¨¨¼¼¼ÜÜܘ˜•JEœ¢ÈL™Å#ÿZ,¥R)-âC\xq@XXHUÕUé§@[¸½tÙ²é«Wïpž§ÿ3g>áããåíM欬B·Ûå‘e«£Fi¦LyŒýõ‘ŒNŸívf;_×Ý.ãÇ™0A×ÔdµÛáßÿ>täÈ9ò™7oRPÇÕ}üqA[¿_.|ê‘Gº‹¢X_߸uk‘Ét­­k[M$ëIQþó®›7–ö·¿íÝ[Ñ­½pa¦óDçg·¥Õ&ôî­˜3gœ——üÊ•ÿïÿ}s™.Œ·‡Ýn·Zíß}wRZŽ·ukÑìÙO¦§'zyyY,7>üð+ÇKZ=[Xxâ­·šV®Üîüò®ÉO?Uz{S¯¿>M&“yyy••™ˆƒÎ?ÿ¹îÜñ“& ­¯oÚ¼y¯”?440-m:€lãÆÝRbqqyhèˆÓ§ï3@e啳g/ÞÏÉø–—W'&F’É»‹k8îf[ŽP„ÿþ÷H|ü¨µkóZ--;{ÿÌ™cÒÓŸ³Zmâûïi·ÛÛêj‰Ï?ß?þä t§N]t~÷»€lþüº@ò‚š={¶ä3.¹–—””äää9;ˆ'ÍHII€¬¬¬¬¬,b©â8Žˆ'².Ïb±DEEÇsô+¿CšãŽFÔX¹ræ'Ÿ|sæÌe¹\âä—Ê]¨çcõ‹A*wëF¿öÚ´¼¼ÃD¸¸wG7$”ãZ\ŸúúF»zôZº4þw¿ûfÎ{ãFÝW_•>õÔcAAþÛ¶ýÐj9Æõ5ÎÛlö!Cz'&F¾ýö¶¶®m5Ñy͇ Q?oY³æyÇæ·šèü¬ó¶´Ú„´´„ÿûÐÑ£ç‡ é=hPXNN1þ!šÅ…Ú¹Ë|ò¤ñ!ï“êêÃ;wnZ»vϽ튶þšž{nÌÕ«µ{ö¼&? ÏU‡D‘ܽ;EFFÅC E«V­E1#####"""”J¥ %%%dnNÚu˜¢(A"""AHJJÊÍÍa˜Ù³g—””$''(AÌf3Ã0ÍöÔC\G¡èöûß?›žžøûß?Â8þfJKK˜>}´”óõ×§­XñÜò剿ÿý3*UwˆˆPÏŸ?‰œíÕ+X²oI/r=xÅŠéé‰iiÓ›ÝaüjjêÀf³KúIºÈ)1.nø²eÓW¯þÍcõõ`=%¦LylÛ¶ÈBåÚZá‹/ö?õÔ-‹M{¿øbôŠ3–/O\º4^&“I ³Ii­v#<óŒ>-mzZÚôÐПWí¾öÚÔôôÄ´´ÉR½aüéÓG/[6˜¦ uudšŸ¢¼x¾ž$êt½4ÀÁƒÆ¡Cû´5¬Gž#?¼ŒÆêîÝ'׺X #Ç›H/µ›èü¬ó[·Ú¥’=yò"œ:U5lXüûEîSÒÓûõëQTT†]ñ0б‰<•ê9 îÞRl£Ñ˜ššJÓ4Ã0)))jµZ„ÜÜÜÒÒR²¯ Ü^————ŸŸo±XH½^Ÿ’’B¦ùDQ\¼xqff&ÏóEq§ÕjÉ7huihRÒØ–ËA?ýô[Ž» }û†¾ðBô»ï溸47!aTZZvm­ McKìÝ{lùò„“'«Nœ¸P\\aµ: †ví¿zõŽððžÉÉ1Ä8äÙzªT!ŽQãΞ½L´¶ª¶ÅÂìÖWØZ,µ«Ví3CÛK¸¥µ¸ÍHKK íö—¿ü‡|  ¢óúõ›,ÐîøNž<ìÈ‘J'×¶Q ýˆ÷õõ9sæÒ¿þuÀ‰6rŽóÉÜVoÝòÇ&TU]ÓëûÿðCùˆýƒƒüûEº>­š <IéâtÌ e2™$c:RäL­`ݺu†¬¿#Ê©   ²²’¦é¼¼¼ÔÔÔ-[¶X,µZ˜˜Èó¼F£‘b’µZ- eNbo’àæˆh4ʃOÀ¡CÆ”·{>|k®”3$„yó͸ôô/¾Ks)ÊkøðþV´z‹'ª^xaœ^ÞØ(6;µsçá5kr+*.Ž?dΜçU=tè4œ9sIúîôl=0l˜:?¿´ÙªÚv»3k4· KH½|yBrrŒ£¦tl‚#«VmÏÈ(p4³¹ÎÈ‘½^óÅ?tôÂ?üáŸï¾›»reŽÅR;wî·Ÿ®váÚ½¤Y²² ÇŽ˜žžØ«Wð=÷o@ñ¼ª²² MÓÄy\r‡¢(Êl6›Íæ’’’ÂÂBŽãT*ÉCf÷ˆå)22’„’€ìììÌÌÌÄÄDI?‰¢¸~ýzNGæEQT(·‡e'âP¹Í/—†¶òå4wî„O>ù¦¢ÂìëK­[—L]Yš»iÓnF9fÌÀ'Ÿ´vm^³³—/_¿|ùúÁƒ§×¬yþvMìr¹Ìf³S”\&û9$ZS“•ÔÓ!Í“õ4™®öë×£¼¼š|ìׯqaîD7¶B[«vÖâ6§¼üâÂ…O‘ãššºà`ÿ«Wù  blk ½>ü™gFüùÏyYãv=ýý}½¼šÿ0(-­¤iïÅ‹ãì²Ý»”–V’S­®ªu\˜ÝÞbfظ±€¤¸¾„{ÆŒ1Ý»3¢h½q£þ“O¾!‰;wž?â¨Qšë×ë6mÚÓV[æÎpãFý+¯<V«Ì޵¼¶­ÄE‹b}}½ýý},–ÚÍ›¿iVø{ï=åEþç>k+Qrljõl«·–.iµ ¯½6U&“54ˆÅÅåÄi‹êêÃØ mWàèw):Ô 7w¹ÅbÑh4Z­–˜ÈŒÃ0ÇÅÆÆ¦¤¤H±È%dþŽ8<åææ’ šëׯ'Ñ8FcRR’V«-++3™Ld6°¸¸˜Ø¢âââ4Ùlf˜q8TwŸ;±4÷N×sèÐ>={{úÿAj â6Í‚h‚}‚ wމ¢Žx”J¥Åb±‰xD‘ÉÉÉñññD99F*_²d‰ ‹/ŽŠŠŠgY6##cÑ¢Ed¾/++‹eÙÊÊJŽã–.]ºdÉP«ÕäZiÝêÝ'==Qš¾üòÐýUÏcÇÎ{P$ǃÔ䞼߹£tXB žçÉ¢9â-NQ”Z­–ôY©GÒ+++‰QJrŸŠ‰‰)...((ˆ—"j€Ñh$d›ar;ÉÄ…ãt÷¹_–æâbAäžÐ1wr²’Îb±™ ÏóK—.•bD1 #‰ž‚‚ (J«ÕJ…,]º”¦ižç‰Gydd$™Â“v–.'’Ó:‚ ‚ È})¡Èn-¢(S™Î#á‘ ‹¥´´Tr‡*,,N'y…¤Õj9Ž[·n™þã8ŽÌë‘ã@¢FI—HéEÅÄÄ”––RÅqÜÏjî¶!Êh4 ‚`±X¶l9‰#„ ÈÃL³èäïP„}‚ ]¹{—-^¼˜($¥Ri4¥0’N‚ÛÓvÂm¤tƒÁPTT->ý”››K´ê'AA4 ÅóÍf³(Š,Ë’ ;)øÑLpÛAÊ1¶‰hà˜Çqáìì옘Q ܪAANBËNŒˆˆ0™LJ¥’¦i¹@’J$´MÓ$” $glllYY8ì|'äææNš4‰ã¸²²²ÂÂZAA@ zýNg4µZ-ÑOD!Ų,QNÄÅó¼F£‘¶|q,G¡Pët:‹Åb0rs/àÀ ‚ òÀJ(ˆŒ|U¯×—””( ½^©Ñhòóó@2J †ääd–eIøp°<ÀªU«òòò†áyþƒ¾Aý„ ‚ Hׇê|:ÝnNnîr–e### 99Ùq©]«(Š””½^¯P(, Çq99gq<AyX$!>~¥Ñø¹ÉdbY6**ŠÄ; f'†a ñR(d›Bi©‚ ˆTWv%[¯^#°¯|>»¢„f¦F`0|JVê±,K¡@Z¯GÄ(ç¸pÔO‚ î³sg;!Ë×®Ýsò¤; Á糋J( n9°XþKö¹ûå/£€çIÜÿAÄØíö¶N½þú‡N.ìÓGñ¿ÿ;=#c÷O?Ýò¦Ø°aÞÂ…c—"÷üùܰaÞÅ‹×är¹(Z?û¬¨²ò²ãÙe˦¯^cå±Ì IDAT½Ãõ:ÄÅÈË;ìÁFQw´ËŠ)øÜ ‚te"#9rnôè’„r¹\n³Ù°‘;ÊÊ•Û`èÐ>/¾ýÎ;9Ž_‡ôLq?I¨»ÃUø!]ŸÀÀ0줫!—ˆïÿî»ÿZ¶lº¿¿o]]Ã/ÍÓ‚ƒ«ÕÖÐиuk‘Étvï>ªÕ†íÞ}äå—'äæ>¼Ãø}ñÅ*U÷aÃútëæ—ýýÑ£ç±{Oqò¤iÁ‚I-¿… ?~öY}c£øÕW¥ðøãê‘#5›6´|t—/OðòòZ¾<ȲÀ@ÿääqÁÁV«}Ë–ïšÙ·" ÙÙïà†teví:õå—…ØHWcð`UUÕµë×뎭ÔëûïÛ÷‹µ>ýô[Ž» }û†¾ðBô»ïæ’ôK—®ïØq^~yÏ7¼ûn®ZÝãÍ7ã¶n-"Ç/¿<%âAFŒ7›¹–8`\°`‘P£F (.®hõÑ]¹rûGÍ%6-˜5뉂‚c'N˜z÷™3'fÕªí¯„"_Qø!]§Ÿ˜ž¾ûéšDF8tÈžþõ¯G6“P!!ÌܹãÆÏf³õìÉJé%%§¥ãƒ+àܹËåEŠ:wîr÷î ö-â–/OËå<_ÿé§ß¶|üÀlæDѦRu·Xøððž›7ïqòèJ Ö£G`BÂhð÷÷u¯nwVBÑôq£Ñh6›Íf3MÓ,Ë*•J•J•™™™’²Áã·;x°Ÿ6¤KqêÔ!ì¤ËBÓÞÆõÕh”Ï<3XÖ_¡èf±ü¼¿Öܹ>ù䛊 ³¯/µn]²”ÞÐÐ$75YÀn›Í&Š6r,“aï"žA²µúøÝþö7Ž¥1›¯=zž<„m=º2üéO;¡±3uó¼„R(έ[·Žl!ì„ÌÌ…’’€¡JAîÇ÷3.lÚT@>NŸ>jôè»vý(eðóóá¸:ˆŠ„Ý…tY2þþ÷ÏZ,µ’·x«®(Z}|¨ÆF Stô ¯¿>ju{ï Åóßfgg·&ª$œÇqüí`·…T&@fll¬Jõ,>‚ w“Ñ£ýöÛãÒÇÇÏÌ;ÑQBåäxó͸ÚZÁ`8o³Ù±Ç® ÇÕ]¹RÛ³gPEEµ“G·°ðÄ[o%644­\¹}ëÖ¢Ù³ŸLOOôòò²Xn|øáWnÜW6þF4€X•$4N§£iš¢(š¦I°rQAàyÞb±˜L&“Éäx‰ÛS{7nTeg¿³k×)œÈCº§NÊÎ~'=}ç¨Q¢;9â¿_åøñýŠZæ©®>¼sç&çqwúõÓahMäžð?Ÿ°B‰â¬¬,rl0´ZmeeeFFÏóÒvÂÒ–yE) …B¡V«yž/++3$=3sabb"ËNÄA¤£8Ÿ‰ ø|v9 UR²±´´”ët:2O§V«×¬Y“‘‘QRRÂ0Œ(Š4MKrŠä!#""T*•Ñh´X, ÃäääDDõúžmäŠq+Väuôª¡CÞx"œïßúèQgѧbb-,tf{ë­§ßyg×E÷ø ᤒ’ô=ztE› 4íÚe¸téøùyϘ1‚a|kk…mÛ~„¦¶ßzëéË—oy×þýïÅuu8HdíÚ=Ø >Ÿ÷“„rÔOZ­6##C¡P¬Y³RSSW¬XAÖâ ElQä˜H(²÷‹N§3›Í&“I©T–––ŠâG‘‘¯zðËÕ«ì9vlÿü£øæÍÆ€ŸÙ³G74ˆ§N]j+T”ƹ„r¹\æºóÁÃüåí|ˆúéBEÅe›Í®Ñ„&$<þ·¿}K$ïÙ³–ï¾3>ñDø¸qþûßm%@FÆ>”³HW¦W¯8I‡àóy÷‘»}¥(ôSjjjJJJTTTff¦Édúàƒn¬4Ïó,ËREŒRÄAŠÄ; iZ­VƲ²Ïî¡~€'žÿïOܼÙ7o6æç—,R¾¾Ô3Ï {õÕq F§¤DÉd²ÔÔh//yjjtjj4ûÏûÄ+¯Œ{ùå±,ë'•9~üÀ ž\°àÉîÝýI ÃøÎž=ú•WÆ¥¦F‡…Ý \ñÖ[OOžu‚ ÈC!¡$ÿ§¤¤¤´´4 ¶lÙRZZZTtËçQ¯×SŲ¬J¥Š¢(Š"9)Š‚Û{]Å0 EQJ¥Rºüžè'P*M¦é£ÉÄõìHާMÓÕÕ5þíoßnذï³ÏØíöŒŒ}V«-#c1WL›¦;rÄô·¿}[Zjš6m¨TÇÕmÜøÝÁƒ•S§ê¤¢~øáÌßþömnné¯~5LÊyõêÍM›¾3.â—·Û;fL¸dG ¤oÜ ¶VèÖv’óæE½új̳Ï>àƒ ‚tJBIëïâââ ˲D‘é¹%K–lÙ²åö/{ IE‘aÉøDÎJ$U …B«Õæäü¡Ó߯wd>eàÀžEEF²¶ ¾¾©e†>}ºc†ÁPÕ·ow)ýĉj0.öés+±ÿÐÉ“¥¦FÇÇGøùyK9ÝOw´É]XB¹ÚÞ¡CÃtºGòówôëÖíùøã¢ŒŒokjê¦OAq_BqÜ-¿°¨¨(Fc±X¤˜„ˆˆŠ¢ÊÊÊš)'r,I% rVR`‚ 0 £P(îæWl3Ìæ*U°ôQ¥b‰r‡°·çÈ$“Á'Ÿì'æ+Go;ø õ“§Z­Ó=óè?þñ³3xm­H@·ntm­à$‘Ø¥¬V{Q‘QÒ¾8‚ ˆ;*''‡hµZâ!Îó¼£=IÅÄÄDâ)e4†q\—GrJùÁÁE‰ºB¡(,ü¿{¥¢öï?3eÊ`2qãïï3eÊýûÏS'OšŸxBC¶/LGV«ÍÛÛ‹Ÿ?¸1étœ;wU*Ó!ñI1/ëõ}ɱä u—Å⯢† ydâDí?þq€ˆ¡Û=eèÐ0:4¬¢â²“D_ß[r?"¢·´4AqE^ll,EQ$BAiiiTT1#o'…BQVV–™™I„±?ñOºæÈÓ‘#¦–éâ¿ÿ}´YbAAYAA9®©©Û¼ùûfHP¨½{O9&ÖÕ5~ñÅáVs"ž¢Õþ¬«küûß‹]Iüä“ý؇‚ ˆ$!22R ORtš¦‰]Ê1ø‘J ™nÝ›¢A”“cù‚ CTee%‚ ˆª«»’­W/ÜÓAº€„"¾M޳rƒA§ÓI’ˆü+í‹'™¦š™£HÉ4·]©hš¶X,Z­–¬õCAœ°sç&ç֮݃á7ijtÔüÖoš¦9Ž#zˆ|ÌÏÏ'§ˆR*•,Ër'-Ó“ò;ê' I?ÁíØQ&“‰,ÍÃABi{Û¼öÚ_Z½dùòò_FÆ|r6Ìk™sÙ²éíV`ÆyRsæÄt¾Eqq#Z½Ë}4(ŽMp¥;ߨNÞé³B‘i5…B!­§“ôÁ`0›ÍJ¥’&Š¢"##×­[§R©¤h$3ÑU$QÒR’ n‡Ù$ …‚ãöàÞ n “ÉÒÓÓZDZråvrðÑGs¥ãVY½z‡+·s^HG™:5"/ïðýÛùr¹Ü± .ö¡{7²Ùl-;íÎÝqGB™Íf`YVòs" îˆÏx^^^JJŠ$4MDD„Á` ³~DqG|Ì%¥EŽ›Ù¥¤ðåÍ"H9çÔ©C8¢‚ ’~€+V¼þú‡ºpÊ”ˆáÃûuëæ÷ùçß9rŽ˜C.ü¢£O˜0Än·[­¶U«Úù†~öY}c£øÕW¥ðøãê‘#5›6ú'' °Zí[¶|WYy™”¿k×áaÃÔ C“›._žàååE cÍ”YËê½þú´à`Æjµ544nÝZd2]s^Õ–·…¢ÛË/Oðóó®¯oܼyïÕ«|³Kvï>:x° À¾qcÁ•+7Úº/ɩՆõí«°ÛAj‚Ô‡4íýÜscú÷ïiµÚ›šÄ÷ÞûÒn·Kg‰¢}õÕÍŽww~£Ý»:tšušTæ† órsÞaü¾øâ•ªû°a}ºuóËÎþþèÑóÐê  wDBWqr@<ÄI`Ì‚‚‚ÄÄD–e%”’’²téR²ÈŽçy‹Åä_"³$%Y¡¤É¾Ÿ«èšŠzúé8œ‚ ŽúÉn·»qmmmÝ»ïþ+<¼grr ‘ £ÒÒ²kk…€ß–’/oøé§³yy?8`\°`‘P£F (.®€Y³ž((8vâ„©wï9sbV­º%®]ãW¯Þ!ÝtåÊímÙÆZVïÓO¿å¸›Ð·oè /D¿ûnn»Umv;˜5+ª¸¸|ß¾“QQÚY³¢Ö¯Ïoñ ÈíØq`ìØIIcÿú×ü¶î —.]ß±ã´aÞ›5ë Ž«{ûímv;øº2FíÞˆà¤Óx¾áÝwsÕêo¾·uk9~ùåñDBµ5(ˆ'%AŠ!Hä§uëÖ‘­…¥˜kÖ¬IJJ"sjµzÕªU‘‘‘——ç8y'7w¼8,ñk—ùó7âp"ò0C^¿+V¬ îé' &3g.7÷F=q¢ê…Æ·Ûír¹Ìf³S”\Ö¢N¿‘Ô^›ÍF±ím ✎­ÈÓh4@üÁ%Ó8„€5kÖÀm7&¢X–ÍÊÊŠ7›Í‰‰‰Äª¤ÓéÒÒÒ$G(Ç-öA yX–uÑ… ‚Øíöôôt"¤ˆ!Êã„„t«¨0oß^Ü·¯KÛ˜:dÔëÃ##+ ¦èèAäX­îáäZQ´úø¸ô;ßÏχãê *jÛU5«GŒè#G†——›[f>¼?èõáf'÷m· ¥¥g§L‰ òEšd¼zµ¶_¿0bDxKU×îÜè4G\Ä}+”Z­bˆ’ö¼k@Å>ø`É’%’®"9“’’’’’ÒÒÒbcc  &&ÆÑµÜÑêVå(Š¢(‹Å‚‘ A\ÌâÉÚµä¸Kròx¹\¶}{q˳’/ÔùóW?ý´8®îʕڞ=ƒ**ªÉ©­[‹fÏ~2==ÑËËËb¹ñá‡_µu¯ÂÂo½•ØÐÐÔîB¿œœo¾W[+ çm6»+UmÉ?ÿ¹îÜñ“& ­¯oÚ¼yoË ¡¡iiÓd7îvrßv›½æÌ1ééÏY­¶ÆFñý÷¿´Ûí99ÅsçNäyáØ±s-‹j÷Fntš#® ∬£.Ddƒ—ˆˆ2ËFä‘cô&2ï–””郞¤S‰‰‰Ç‚ŸŸ¿dÉ"Å$ ED,]ºTžoÇOüƪììwÒ«×#8´È½¥ºú¢ã9jÔ£_~YˆÝ‚t”ß/‰rüøþE­=l‡wîÜäÄóéõ×?ì×O‡¡5;ƒãŠ9!¸Üb±PÒö,ä@ µ~ýz•J¥×ë½Î‰ÛSNNŽF£ÉËË‹‹‹‹‹‹[´h‘äW.Š¢¤Ÿ&MšÄ0 Ã08•‡ Ò.\€ Ƚ‘P&“Éqë•f1ˆøÒ¥K×­[§Óéšù‰S»jÕª¸¸8Ñ@²BƒÉ*66V©Tây‚ í²víì„; š H¨”” d.OŠe@Ò‰’ÖÖÝΜ²fÍš˜˜GyDQÔ’%Kbcc`öìÙÄEDÇq’S«Õ<Ï·Ü Aq¤W¯8I‡ ÷„’0›Í …B)–&8„‰’>.Z´hÍš5qqqðK§(bÇ" îˆö"ÇD„­_¿^¡PðqæŒE:5þ“›6}çñމy´°°_%‚ (¡Ú'666??_ Åqœ¿€ã8)v9ÑL Ã,Z´¨¸¸xÕªU’´*))Q«ÕëÖ­›4iRYYYll¬Éd’.Ñét‘‘‘‹…ã8€®ãë×¿Žø×¿JM¦¹\Ö³g €’û×ÔÔùÑ´·ó¥® ¦´´in‹'¹s×FV“ãÞ½ƒ›š¬þþ>uu}ûv?wîÚ=¯^»·pD.—¹®Ÿ:4ÐQQ”P‚ !r7®Q©ž%ZÇ1’YIçˆp†a²²²4Mvv6QWqqqƒaÒ¤I ÕjSRRÀÁ¡*77—,ñ3º\ŒÔ€ŸÚZl6{uõuÉòáhz‘Ç{tþü'/ž8p`϶ üé§ ½àñÇ{ÿôÓ)=8ØîÜ'^yeÜË/eY¿•ÙÌ*Ó²n ã;{öèW^—šƶuí… ×Tª`¹\æíí%—ËÆË½{@Ÿ>ÝÏŸ¿Öj!Ý»û/XðdjjôäɃ:Ô±QQáóæE9¶«Õšw”·ÞzzòäAóç?9xp/ÇÝè^ýê«1 F¿üòX¢«RS£½¼ä©©Ñ’u AyHps"xDILd#ab‹’Vç5›Ñ!99yöìÙùùù“&M’æþ(Š"!àˆºÊÏÏ'–­‚‚€¾]­¿Š‹Ï¦¦FŸ9sÅh¼rô¨Éjuf4º~½~Ó¦ïz÷Ž8uêR«yŽ¿8o^Ô¾}åC†ôÊÌü~Ú4IŸ6Mw䈩¤äÜðá}¦MºuëA×Ël—iÓt?üpæôé+Je`||D[Ö úú&Ž«W*}}©ªªš jÔêS§.õîÝý«¯Ž·ZÈÔ©ºƒ+úéÂã÷–Ë;™†ç?þ¸¨“í"Hj†˜®^½¹{÷I˜>ýñNô—_¹qC€G zæ™a\”‘±ïΙÓä~dÐ ÍýUá7Þ˜ˆûƒ!wUB@|||nn®J¥bÆl6“p;d¹ä$B¡°X,³gÏNIIÉÏÏÏËËS*•f³955•ã¸ìì쬬¬¨¨¨ÊÊÊÒÒR‹¥oì¯ÂÂòcǪú÷5JݯŸbÇŽŸœd6ªÀdª òk+Oc£õüùšÉ“›L\Cƒ(¥÷éÓ='çGRÈ”)ƒ;Tf»ôïÚ½{1ùùy;ÉyþüÕ¾}C||¼ÎŸ¯¹p¡&:z€BÁˆ¢õúõúV q¨öÅ_ýj˜ëUòH»ÍÁpÑSä7}úãþþ>6›]¡Àx¯Ò:÷‘o{uõa/äH(…bŠNg4 F­VWVVòAfä¹82òUNg2™†Ñét4Ms˜ÍfÉGÊb±iþ.--˜©hš.++“öÚ+--ÍÉ9Ûeû+<<”|›÷èÑøÊÇÕg !Cz¹ñ]_UÅ­X‘wáBÍ/Í?×î:Ý#çÎ]u»Â­ÖÍh¼¬×ß2ò9ñ…"ÕèÛ·{·nôõëõ¤ª£G÷?þZ[…8V»“]ÝÉ^½íëëMއï#å´ZmÞÞ^ø*AyØ :y}dä«,ûYQQQDDDDDÏóƒAZ‘'Åy‡ˆ„””š¦õz}~~>‘_äÚÂÂÚ®Ü_#Gö6MgµÚDÑ&-tÿúë ÃëêËË/u~Iá?ÿ1LŸþø˜1ýÄíÛr»œVë¶k—!.nè+¯Œóò’×ÔÔmÙr ­ËoÜÄË—o.Ôèõ}‰ªÕB¾úêøsÏ=ºßÙ³–NvÅèÕNôîÝ'çÌSW×XQqYªÒ¡C• ŽklÑ# Aä¡Bæ7:³yWqq1˲*• xž/++ãîÌBÓtbbbTTÙº˜çùüü+îÝ÷ÈCº ¸Gâ\Ù#¯K1hæþò…Ú¹sº“#îAy¤¥òéøø§ÆÏ+++ ˲±±±‚Ä£œeY…B¡T*iš&`2™xžï‚ñ AA"h435°Xþk6›9ŽcY–eYi¥8D~"ºÊb±AÐÕâg"‚tYú÷ï1sæ>>^ÞÞ”ÑhÎÊ*€¸¸yy®..ëPæÎóÛ߯öî­èÖ^¸0SJ ð7oRPÇÕ}üqA]]#Iæ½ÙÌdHï¹s'¾ýö6W®j+Cÿþ=üýé»ïU‰ „ꬢÂ^Fñ ãWSS6›ý ,_žàååµ|y¬\¹ýõ×§3V«­¡ágû͆ óvï>ªÕ†õí«°ÛAÊ=x„!v»Ýjµ­Zµã—oïn/¿<ÁÏÏ»¾¾qóæ½W¯ò¤œ]»¦fúóÏ¿?rä\»>~ÜÔ2Q§ë½nÝ.8xÐø»ßÅ­äßÔd»y³Ž½U²ÑXݽ;ãâU­f (yBB䯻GŽ Ç繟$Ô}Š£/0‚ H×aïÞcË—'œš»råv’áÓO¿å¸›Ð·oè /D¿ûn.I¿téúŽÀ1sB¨´´ìÚZ!  ¹CŬYQÅÅåûöŒŠÒΚµ~}>I¿v_½zGxxÏääW$T«!xýúM– ¸­ú ç›åœ¼eZFyðài8tÈ8`€RJ?tè4œ9s)8ØÃ1ú‡ísìØ/$ÔÈ‘½^óÅ?tè*Gzõb èUTtŸ%‚ ÈÃÎåË× OüùÏ»""Ô-ÏÎ;áßÿ.yûímï¿ÿ¥—×ÏqišZfÞ´i÷îÝGV-Z4µ­Û5Û¡©ÉJ;󶦦.8Ø‚‚ˆÍŒ¢äJePUÕ5)^þÌ3#þò—]nîÜ 7nÔ¿òÊS`µÚW¯ÞáÊU-3 ÈCæÁ¨¬·'''§eºB¡ á 8Žk5dyll¬Jõ¬Û÷½ÑÉÑñ q›‡':ùòå‰ï½—ÛÑ}ÁÝ»ÊáUÑÉ÷ñ˜ÊÑò:N£ÑÐ4M6¦(JE¦œì:l2™L¦[+]óóóòãââ”ʧqHABV®Ì¹kW!HW‘P%%KKK¥±±±*•J¡P=†ÅÛû“(Š4M«T*µZÍó|ee¥Á`Š¢òòòââU‚ ‚ ¾„rÔOz½>""B¡Pð&—Ëjjêvìø©¡ÁM pϞݼ½)›Íf·Xn66Z@­ijºU`uu­ÍfëdH3Œ¯\.°›L×;Y`XÙTär¹\.;wîZ' ðaY™Ìn·ËjjêwTp¯@*4”Q´^¾ÌÛí(HÒä ©2^^²ÐÐn%Eûå˵ŒPüÛ߯jµaåe³Ù7¬@APB¹£Ÿâãã5 ÙËE²G^DD„^¯×ëõÄŠ@öÎÍÍå8ަi­VK¦öT*•Á`„¿DE½î‘æ=ZuèP¥Ý!!))Qï½÷_xöÙÇöî=U^~I£ 7îѯ¿>á^áµµ õõµv;øùù„†v«ªâHzUÕuàKÓÔÅ‹7ì%ï|Rõ‚ƒý<»]`HS]}½©ÉêííÕ«WÐùó×:Y`h(SSs³®®ÉÏÏ'8ØïÚµ:× äù†ÚZÁnÇʰ¬¿ 4q\}PËú_»v³3ÕÞ½†~(é¥ñøú@y˜q?.”£~JJJÒh4D•••Ñ4œœ¼f͚ŋGEE9:B9þ›••Eô– $Þ(•ÊÊÊʲ²Ï<Ò*Ðf“ŒV2ÉèççMZÊó þþÞ¦ãÇM%%gðÝ ‚V(è'¥Ri±Xxž×jµ³gÏŽŠºµ„¤°°LÕý|?Š"ŠJE¥R9{öìÌÌL’Â0Œ(ŠÀ0Lqq±R©dÙ‰idjjtp°ÿ?þq€|¼téÆ!½JKMC†ô òë|ùAA~Òì•Lfä‘ ™LÖÐ ÖÔÜ´Zí,Ð××+(È××—±ZmW¯Þì¨FiY ¦½ív» ˆo²ÅÂ?òH Ýn—Éd/Þè|b@€Ï7ø¸§MÃÂXoo¹Ù|ãöS'E;Øl6///ü³G;Juõaì%T›Hú)..N©TšÍf†a–,Y¢×ëIº(ŠF£1##cöìÙqqq‚ ¹<2Ç'‚R©E1)))77×b±ÀmOsžçY–Õh4‰‰ž‘PûÂÃC'OôÉ'û 7÷ÈÓOëÆŽ ?uêRç7îðõ÷÷5›oÍŽ?ÏY­6™ ‚‚üCC³¹¶“€ ˆËM†ñ e.^¼ÞùÜ1AµU`HHÀÕ«u<ßÀ0¾!!’pq»À+Wx…‚aYúæÍ&»[ãSUÅùùùûWWßÀ?r¹›¼ñÆDì%T›pÜ­xeQQQÆd2¥¤¤Lš4‰(¤ÛFº¸¸X­Vët:ò±¨¨È`0˜Íf£Ñ(ŠbDDÄÒ¥K ;;›LöI“zDE‰¢h4~®ÑÌôH;++-3gêoC×feý¡¡L¿~!ÔOÁÁ~fó ÉÚdµÚÀnŽ«W«ƒ;_ (ÚnÞl€›7 ¦ó€\>&ç‘&Ó4uéR-ܼÙâ65Y««¯€M»9ï&>>Ýn÷¡ø’Ëår«ÕŠörçxPc, ¤é" uíÚ=]¤&OË %ÅÏT«Õ‘‘‘ñññÒÜœã<Çqjµšx8edd”””ÏóÄ¥Õj‰ä¢i:666??ŸDbÆb±( …Ba2™4{h{ö ¼té<úhÏË—o$‚‚ü®_¯—ËeÑѨt»p†ñ ö«®®utQ’ËeIJխ›´¤®3ÖÕ5ùùQuuM4íÓÑY¼V _Ahê¨gU[65ÙhÚ»¾¾‘¦}DÑ5¤(¹(Kž_m­Ð¡}|¼H·ûùùHÑöêëÆ—ãêÆ·®® ¿äq÷B†zi†´ëÔ%TG¿Dom6Gä±d0ˆ…©¬¬ HtM£ÑXRR²¬^¯×h4†eY žO–––——GÊ!)‹E¥R ‚Àq{:ã5eÊà  ?«ÕÆó ÿú×­ÉÇÙ³GÉd²ÆFë‘#¦cǪÜ.<4”±Zí={2`·Ë.^ä gÏnr¹L.—‰¢íʾór\]hh·ààðHpkOðT“¯^åCBrÜù•Ê@°Ù€ç…ŽÎ6†„xyÉìV«Ýb¹U™ššúž=†ñEÛåË|'ÿfÞ{ïùÀ@¹\6Ì»q£ŽlX ‚ „rƺuëÈ˲Ç)ŠÄÄD¢¢òóóËÊÊ’’’L&qiEQ¥R¥¦¦’äZ"žˆÕŠü—““C|¡hš6™LjµšeY“ÉIJî7ïï/n™øÑGßz¤ïΞ½Öš6¿áÙm6;1¤yª@pÃ]ÉI‚ J(DBI‘ŸÀ!09[XXò,˲F£‘X•ÔjõÒ¥KKKKcbbbbb $:LÒI±±±|ð˲ŽÊ U‚ ˆDÿþ=fÎ|ÂÇÇËÛ›2ÍYY…7"/ÏÕEp-3/_ž@ÂÂBªª®Àʕۗ-›¾zõìðv ð7oRPÇÕ}üqÙ«ªÕDWT‹t솨ëÔä!Á ÈÄÛHH2ååå‘<Ò< A5‹‹‹%—£ùŠLäXRt(âV…ƒ„ "ñÒKã?ÿüû·ßÎyë­Ï÷ì1Ä©S#\}éËå-3¯\¹ügµZÉ ~r]’ž:UõöÛ9'OV=ýô'‰.ª–¶R<$tÌÀ£P(,‹è€•€h)“ÉTVV¦Õjãââ¶lÙ²hÑ"­V[RRB\À!"”t ÑXQQQ‚ èõz†a$ç§f8A†ñ«©©›Í~á‚–/Oðòò"–¤•+·¿þú´à`Æjµ544nÝZd2]€ æíÞ}T« ëÛWa·ƒ”ÙÉ6l˜·páÇä 7÷àðáýÆï‹/~P©ºÖ§[7¿ììï=þÉÉゃ¬Vû–-ßUV^~¨FD§ë½nÝ.8xÐø»ßÅmÛöC[‰Nðˆ¥§ëÔ%T+¸<Ï“@šä_ îHž¼¼<²yKdddqqqqqq||<ÑO’åÉl6§¤¤”––.Y²dñâÅ R©ˆÕŠd€Î¢¦NÕ­^±â–…ÌÏÏ{ÆŒ ã[[+lÛöÿÙ;ÿ¸&«÷ÿ_û 0`üP¦ ¢‚NC€ŠŠ€Š_©H1–þ|G©eFæoý¨ï¤Þ”Š”øN KÓw¡"‚òKE™Š 2`€¶Ýß?Þ,Û0„ëùðáãì쾯ûÜçÜl¯]ç:×¹ªPlÇåË'{x8±X,µZ]R"‹‹K&^:3qâiÓF˜šSTUÕ9r!+ë¾þíœ={ÌĉBƒü©ìÞ½˜Éd46* ¬¬*22±¦F¡§M?¿!S¦¼daaÊ`@iiåæÍ úX[¿~†ƒƒ0L‹QW׸jUœ>‡wyýõ1––¦PUU1+«?JçÆùó9ë×ϸy³èƇ©©ù*•zëÖc_Fë¡þ'“Õ€³³ÝoŒß±ã8©/)©üé§Ë yp;‘Ëëwì8îâbÿÁÁ‡§òÛoO$jΜ±II97nöéc»`ß¶mÇzÔˆX[›Q[YYÃã™·QÙsZ‚J» $ ÉœIò_‘Pl6;33“¸¦V®\I>^,/[¶Œ¸²är¹‹‹Kff&©<000..îï^¨ :ߋŜ<ÙãèÑ ¡°7]éæfÿý÷©“S´`ÁhJ¨ìì&‘X\Ì嚘›ëûQBÇý±Ù¬ÚÚúŽnâ«e¼ÙÌÐP&“i(ýdpüý…ÆÆìÄÄ«jµº£;ÞÞØlÖ¥K·õ4URRÉá™›3 ™¬Æ€^Li'¥¥•¥¥•iiwvîœ÷ô»aaþû÷ÿ‘Ÿ/11aGE-¤ëëëuVÉçjµšl NQÀ`4ÿ}}þùI…¢¡gGEE­µµÙãÇr++sâÿk­²ç´%”äòA¤ •JáÉ”ÙØŽH+…B‘’’B$TDD „âr¹G*•Êd2>Ÿ¯T*y<žŸŸ_hh(qS?VAAÁ¦M›žøŠüˆq}noÜ8·¬¬Â[ÕZZrªªP]­°°àtF·Nš4¬¬¬ª¨¨Ü ÖÖ­›áäd£T*wí:¥§©  á55õÙÙœí t¯“ÉŒŽ~»±Q›ûàèÑ‹ÕÕzMä99Y³Ù¬?|™Åb–8\RR©+ êÍ`@]]ýÝ»úz¡HŽˆxmÍšW@¡hؾý8~Ž Ï“Áƒ7oR89ÙÐ߈J¥ÊؘÝРSSc™¬|}=´ZÐ<Ø äæŽïñûïYàâbßÓb¡®_èååvút¦——[nîÃ6*Û@kÈvGc-ºNKPBµ…D"!Jˆ¨(…BA¯ª±XL\J$/ydd¤P(”J¥~~~ÇŸ?~JJŠÆs“‘={ö„‡‡Óõ!!!|>Ÿ$óÔ ;;®³³Ö†;•Q£ÜÆó¨¯W=zÉ ·m;æá!˜9ÓgútïÈÈ“:ÛéÕ‹'ö©¯W¦¤Üœ;×× mûøã ººnêÔá>>ÂÂü£¢~ÕÇ “ɠ޹DQêàà‘ ú}úé ýÛ9zô@¹\‘‘qWSs玫¬¬=r$S­VOê9w®/ ÕD烟ßàٳǪTªÆFõɤ29ùƆ ¡õõ[·KH¸üÁÁÕÕŠÜÜš1 4š¤I‡§ÌŸ?nãÆP‹%•V}õÕé5"'Of,YàååVYYs®Ê6Xº4¦…vÑAµt– „Ò΢E‹bcc•J¥T*%«ç Ç# ôˆŠ"³{ð$˜‰ø™È.‰„ŽC×T`AAAÉÉÉšrss“J¥t‚¬íì,V¬ _Ì+WìÝûg]]cuµÂÒ’#“ÕYXpôt™þøž-äpŒ@¡h3f`UU\^§§Áœœ|¾…‡Go•Š’Éj ]1|¸ky¹¼²²Æ ƒRVVÅá Ô›¢¨ªª:Œ…BÄPíÒTK×iI7“Pœ˜˜HbÉÙl6­¥èÕytÎ@ —Ë7mÚ¤P(<èîîNﬗ™™9þ|z›aÚ¾P(ôññ‘J¥………V¿çääÛ¡¡#†uª®V$$\5 å°0&“©R©7ožIQP\,Ó37ÝÌ™£]]˜L†J¥.**ß¿?¹«=@ááA}ûòY,&EQ>Ö¿…‰‰‹„…°XÌòrùêßÈÑ£€þ䄃ÿ|ûmÿeË&@EEÍ¡Câç‚ Ô.Ø’î,¡§$Òº‡^‹'—ˉ–"Áã …"$$$66V „††j¦†JNNŽŠŠ"©Ìi;táøñã “ÉÄbƒé§-[šÝ˜µµ  µ|y¬a ê?ÞzS÷ÄŽ>±YZ©«k0x Å®]‰´v÷néºuñøÙ ‚JV®\EœI-b›èˆ(‡C"Ê5O>>2™Œ$/Ðr% Ù¤©Ÿ¶mÛÌår¥RinnnJJŽ ‚ ÒÕ(.ÎÀ– †”P„E‹v?¾žÃá‚ÀÀ@™LFy5 ~äï?«‹$}è:-A Õå7Î-+«P.¯>—+**çr9"‘«Z­¶µåjº¾tÃÚÚ**j)JmaaÖ•»zÒ¤aeeUEEå±¶nÝ ''¥R©ÿ.AAÃkjê³³8;Ûè^)&“ývc£:7÷ÁÑ£««q"A´pëÕ îs¬#­ÁìÆ÷fgÇuv¶¹zõÁs»b\\²\®˜3Ç÷õ×G0ô—P/ £F¹çadÄ>zô’A nÛv쫯N—•UOŸî­^½xBacc£”ƒm¹øñÇ?|ôÑ¡+âÎËé×Ï>,Ì?GAz è…âp®€X,–H$‰„Íf“Œày̼ Övv+V“ÉX¹2`ïÞ?ëê:që˜ââŠ;~&ßÜ‹44¨ô4XQQËb1­­ÍT*ªººV¥êŠšL$ê?s¦Oc£j×®D¹Ü`þ˜Û·ÙÙYRúÝq¿~ŽŽ<£o¾YÌd2`ÇŽy[·&ÔÖêÉjHá×_¯M™ò’••~Ž b(öî]Ò¡U/=¡%=KB<¸ŠÞBX’Bš7…‡‡?Yšgx®]{xíÚCRÞ°aZTT§çÒ°±á’¯ØiÓFÔ×+““¯ëiðúõ‡ÎÎ|//7•Š’Éjïß—v=ýä:{ö¥Rõʼn5†¾6PXX>l˜sEEMM^“°/Þºxñ)ïÞ½>þøÞ¿ Œ@¡h3f`UU\Žùô1˜jé"ڥ봤§H(™ì\BBÂÓõ|>ŸÇã) ™LÖ"eytt4 ¯>·{~ÿý@`³™¤ðÅI†²üÞ{S‰ã¤ºZqölVZZbô>ýtž¥¥ñ”ìÞ½¸ªªö£<™±|ù¤©S‡Àýûe‰‰zÔZ©Á°0&“©R©7ožIQP\,Û¾ý'} Μ9ÚÕÕÉd¨Tꢢòýû“õ¼e}T«Áðð ¾}ù,“¢¨‡w¨…b(vï^üèQSèáƒh×søõ×aï¼ó-ýrýú¤àäd[Tô¶n=¶víôöÿ#`nn²xq ••©LV»o_Y£µ²=ªEP×iI±dÉ^ƒŠ]®ùR(º¹¹q8 ÿ+•J6›­P(HFòÂÂB §@DD„Tê¬Ã¥«ªŠâã·hÞH¯^½õ¼ââGøp †¢W¯Þ^^Oœ@±…t˜5«}5_~™BK¨åË÷uÔZ õÌz=>B3NžŒé6áä$£Ak+×fÍSUU{útæäÉ/YY™‘uÓZ+éÎyzœ¦j¡i¡]H¯îÚu®‹´ÄPú¡G{¡”ÊËqqqôK___777âv’ËåQQQ<öìÙ“œœÌáp8Ž›››‹‹‹\./(( Û³Ùì;w†††òx˜3ADvï^|êTưa.\.‡NKkgg¹ti ãÆÂv!âl÷îÅǧÑË5=zô’@`3lX_ Óøø ÙÙÀÒÒlá ÖÖæ*uðà_¥=³Û…Â>QQ§ -MüþûÁD£h­lƒxzºNKPBµ‹ôô½™™™¤,‰ÜÝÝ]\\x<žR©‹ÅDZ%''ûúú.[¶Ì××wçÎl6›NYîîîÎçóÅb±L&€„„OO±H´A¤mèi¸k×î%&^%åòrùöí?õïï°p¡‘P³gùãë.Ü3f™•n?ryýŽÇ]\ì?ø øðáR~ûí‰DBÍ™36))çÆÂ>}lƒû> IDAT,ðÛ¶íXÏkkóŠŠZ¨¬¬áñÌÛ¨ì9-A Õ1ýäéééèè¸lÙ26› D$effîÙ³gÏž=ÑÑÑD'‘=‡C¢£8ŽP(”H$………'77W©üÚÇçA6غU‹d¹råܽ[bmÝ´9©›[¯}ûÎ@zú7ÞסK¤¥åÀýû¥l6ëÊ1)“u3àáádoo9c†7˜™™àˆ (¡Ú‹Ry™ÖOóçÏwqqQ*•D?I¥R…B!h!%‰öìÙ“——GöÈ#‹ÄH‘-‡¹\.ŸÏ—Ëå...yyy<Þ!z£=A¤46ª€¢€Ñìo¢ô·¦V«•Ju Ë |þùÉöïÚ]©¨¨µ¶6{üXneeN'=ÑZÙsZ‚êú‰Ž:~üxpp°Æ[ÊmÛ¶I¥ÒE‹ ‚ÔÔÔ¨¨(GGÇèèh‡’@§< ¾(2¯G$”R©tqqIIIqttĸ(A=‹%#F¸^¼xK$êoX˹¹…ãÇ{üþ{¸¸Ø÷ØX¨ë×zy¹>éåå–›û°Ê6hO÷ Ô’‚ŽÙÉiý´mÛ6¢Ÿ •J%¤¦¦J$>ŸÉáp?NTQPP¯¯/9’E‘I½”””äää””Rãîîž””„à Òë×Ï ÿ,ðkã°#G.úû ɦI†Ý2áðá”~ýì7n ݲeÖ+¯ôÜ­jOžÌpwwÚ¸1tð`':õŒÖÊ6xZ£è ZºNKzºx¡d²¦•îîîááá™’’" ƒƒƒ“’’¢££ù|>ðù|2g§T*y<Þ¦M›`áÂ…šòˆÍfÓ/A^^ž›››@ àóùbñ7·Y8H‚ -КÑ@³’NRPZZEz·¶K3£mD«5ÍrMbïÞ³855ЧwóÔZùLíB{€tS-]§%=]¼PtþL‘HÄår@"‘¸»»‡„„DGG“¨&¢«¸\®FGG·,Z´ˆ É®YXXèççWPPÀápÂÃÃår9Çk‘8 AAº1D¯tÕÒuZÒ•é°ŠËmÚ.ƒž¿ëÖ­#ÉŸx<U@–Ú …Bâ‚R(l6›¨(??¿={ö(•Ê   u*“ÉfÏžšš±sçN"³ôgêT¡··Ë¦M‰äåìÙ"{{ ¥R­P4ž:•[RR¥ƒÍwß rwwb³YjµzùòXºÞÏoÈ”)/YX˜2PZZ¹ys‚>ׯŸáà` “ÅbÔÕ5®Z§ÁáÃ]^}Œ¥¥)TUÕÅÇ_ÌÊ*ÐÇ`Ÿ>üÅ‹ll¸*•Z,–ìÛw®ý±¥Ë—Oöðpb±Xjµº¤D—\XXnnn²lÙdgg>”íÙó{{ré¶a°µ‘ÒÙ ÖJü(AÄ€Ú[òBÐa/TTT)äO¤ .T(ÄíDVçùùùÙR©4%%%//¼ôóóS*•d0$$„Ãá°Ùl???bœ¬Úãñx™™ú&̬MM4#®]{üÍ7ÿûóÏü3†ëföüùÜýûÿP*Uš–Gróöv»w¯ô½÷öoØp$:úŒž·n=þ]xøwgÏf=|ø8=]¬§ÁùóÇs8F[¶Ûºõ˜‰‰ÑoŒ×Óà‚X,fLÌÙ˜˜¤†epðˆö¼páÖ·ßþñî»ßîÙsÖÌŒÁÁ#Y,æéÓׯ2™ÌiÓFêiPk³õ1¨µAA/T»ðññ!»µDGG …B"¡ø|¾H$òôô¤Üµ””””™™)•J¥R©\._·n‰šrqq€3gÎÈd2…BÁçówîÜ +W®$þ-www’JJgX,æäÉGf…Í[¾ÜºUB ”[Y™êfùúõBxë­‰š•þþBccvbâUµZýø±\ƒ¼½°Ù¬K—nëi°¤¤’Ã1277f02YBѨ§AGGܼùˆ¢Ô³fqr²NHHm§Áììû¤ s¹&ææ& öa±˜iib•Šš0ÁÃÒ²ï3sé¶m°ŽÕÍ ÖJA%T»àñxÄQÄáp–-[¯T*###áIæL"ž233“’’Èñ3ñx<¢œ™ÂÛ³g‡Ã‘Éd‰‰MmqqqDŸ‘ãõ¹½qãܲ² åòz­ïŽÝŸ–SÁÉÉšÍf}øáË,³°°üÀä’’JýÍÔ›Á€ººú»wõ]3|à@rDÄkkÖ¼ EÃöíÇõ4XTTÎårD"WµZmkËÕm½Ï¤IÃÊÊªŠŠÊÀÚÚ**j)Jmaa¦[«4 ­ ~éfü{ÎiÁß¶¤gJ¨¦õôÎÁr¹œÃáDGG“)9ââp8yyy‰‰‰ä%C€dŠ"'›ÍŽŒŒT*•2™,<<œÏç+•J‘HD”“X, …$2]7ìì¸ÎÎ6ÿý¯v§ÈСNBaïýû/°7™LuäÈ%ŠR\¸ÐïÓOOèovôèr¹"#ã®þ¦æÎWYY{äH¦Z­ž:Õsî\_²w’ÎÄÅ%/\è7gŽocc#C­VwÔ¨QnãÆyÔ×+½dQx> ~éfìÚu;A+­mÜ“[Ò#$Y"G§*.—«P(RRR|}}===I}|||rr2 – …"‘H(-•””! “““ …»»û¢E‹ $$D*•r¹\¢±”J%—Ë•ÉÎé–cS °¶³³X±"€ˆ›•+öîý³®®„ÂÞ~~¸ÔþPåöP^^Ã`022îR”ú7Æ‡Šž˜˜°==û1šš¯¿5WW{ [hkk©§ÁââŠ;~€^½x‹44¨:tºHÔæLŸÆFÕ®]‰r¹**jY,¦µµ™JEUWתT”žõD«Aƒ_Aº½zìf_Ïn8¬ˆ$ÑFð÷9»;wÆÇdzÙì¼¼¼„„www???Nr¹>^"‘(•J¥RÉáp¢¢¢Ølvnn.‰.'Áã2™lݺuŽŽŽr¹œLüË<O¥•3†Ëåõ³g‹@­¦bbþÒÁȧŸÎ³´4#ÛžïÞ½¸ªªö£%&f,^Àb1ËËåü©§A=z t(¼ ƒþùöÛþË–M€ŠŠšC‡ômá{ïMµ³³¤(¨®Vœ=›•–ÖßaaþL&S¥RoÞ<“¢ ¸X¶}ûO'Of,_>iêÔápÿ~Y{ré¶m°µŽÕÙ ÖJü(AîͪUؤŒ%Kö¶ÿèãÇ×K¥Rwww²©0‡Ã¡E$œl‡G‹'`Npww_¸p!‰…€âÄ:~ü8ˆD"²Y½ež\.vss“H$\î„6ZUUU¿EóFzõê­·Æ„b(zõêíå5ðĉdì ¤£¬Yí«ùò³Èìé"tÌÁÃçó¥R)=‹GQQ¤2::zÛ¶m@bžH¥H$š?>‘VD6‘·är9Y…D6náp"^.C%ØDA1K­Iò( ¹\N ÄiDTYˆ'•J 77W¡P8::®^½zõêÕŽŽŽééé›6m"")!!A&“q¹Ü””±XÌår‰‹@ì“utºsAA.BǼPd®°°¸”ÈDÉkÀápˆG*::zÓ¦MË–- "aãJ¥rÛ¶m¹¹¹äôÈÈHrdDD…B6›MB Èä N“H(6ÛÇ AAXBŒˆ¢ÈdúM”P^^QBD?ÅÅÅ%%%…D6‡!éÈ“’’ˆºâñxš²‰d*'e²:O.ÇaBA¤kÁÔí42ѦýMþ‡'{á‘ÃæÏŸOæìd2Ùž={ 66V"‘„††yDf}||H²Ú ç‚ ‚ ] óXoÀOâÄI911ÑÏÏ/99977—Ïçs¹Ü„„’g<**ŠÇãEDD¯ñ`…††ÆÆÆ’2<äèèH¶1FAlZ‚€ m@ï,Ô¡Zþþ³:š¶ÃjÑ¢E±±±@Oá‘y´$R*•™™™àççîîîîëÛ´(7""B*•æææíEoóH²œÓSxàææ¦9©‡ ‚ Ò!Ú¹àªU:쨃ª)J"‘8::ÒkñHü(•J‰D’››+ ɶ-´T ž?>Èd2²¼¥P(D"Qrr2}={ö8::J¥R‰Ä ŸAM÷ƒ@¥#6lÜž#Û:òÆÃvÙŒþ7„Ð6l[ß·ZÉ wh?ütjäÀ6‚ÄóÒí¼/y¦oIçlïºLä“-„‰#ŠìL\Pt˜yJJ '§%”R©ôõõ%Od<:¡Ô²eË4õ“P(ôññ‘H$R©ÀJÿî›:Uèíí²iS"yéååâíÝO©TPçÏߺu«D›Ë—Oöðpb±Xjµº¤D—\XX>qâiÓF˜šSTUÕ9r!+ë¾>É[³g™8QK—ÆèÙÂÝ»3™ŒÆF%”•UEF&ÖÔ(ôl¡Ÿß)S^²°0e0 ´´róæ} ®_?ÃÁÁ  &‹Å¨«k\µ*NƒÃ‡»¼þúKKS¨ªª‹¿˜•U Á>}ø‹ØØpU*µX,Ù·ïœAvòAq" å°îCÃh”½ÿ逄ÊÌ™ X,íï&‡ôËpô$°Øð¨Ç é¶è"¡§$©O6x¿Ç˜gffÒ¡QD'ÑK3glllxxxSSž8¥H¾r6›-@? Ö¦¦FjuónµÙÙEW®PØÚš/Zäûé§¿é`öÂ…[/ÞÎɹïá!˜7o\XXÀæÍ?^¾œŸ––_[Û`ggµvík ø½ÿþ} €««½ƒƒEEQú·Ôj*<ü;CÝò¨QnÞÞn÷î•ÆÆž·¶6ÓßàÖ­ÇÈ»!!£† éSPPª§ÁùóÇ3™Œ-[Ž1°fÍ«o¼1¾ýJ«Á &°X̘˜³*åëë<"!!?Jï1Pøägš´"V¤Ø,Øò ÞTÿåç|àËèë6Š› æ\Ø´yÀ«Ðد6‰³ÖLá³­ðÕ>øõ„öV}ÿ-lûXl€Þ‚¿½u`TUÁ»ÀÁýðÕçpù:(•0Ñ þ—,–öë¶Ñ˜º:X±|ÆÂÛËà‡ÿÂÁï€Á#6üü;>HW•P°råʨ¨(2GòBF$¸B¡ aàt„8­¢ˆóI©T^ ÇÏ>ùÙ~þŽmë!æ{€í»ÀÁ 7 Ö­†OÁ‰$êÒäÙjÃT“¿ê+x5øv­¶êvŠƒôË`gw€‹kó[£FÃŽ@Ú%pî·ó@^ C†69´´^·µÆTWÁ¿Þ‚×aÆ,€Èÿƒ³ÁÆ*eø\ m³´C[Û^BÉ僂‚‚Μ9#¸\naa!—Ë¥ÓˆG”¦c žäÉ”Ëå±±±«W¯Öj6>>ÞÇÇG*•¦§§:è{ãÆ¹eeÊåZtÒ²e㭭;ÿþ²ž—˜4iXYYUQQ9]³nÝ ''¥R¹k×)=  ¯©©ÏÎ~àìlg RL&3:úíÆFunG/VW+ô1èädÍf³>üðe‹YXX~à@rII¥þ}8hPoêêêïÞ-Õó–HŽˆxmÍšW@¡hؾý¸ž‹ŠÊ¹\ŽHäªV«mm¹šNyn¼ÕÕP*#'›j.þ÷ïÁç[ª4þ ƒ¦ü¿W`û†¦šG…°:*‹÷îh1Þš)¸“W.CÜ‘¶Ú¦VçHØ´Nþ+ þdó[îƒá‡‚;ðæ"H»ÕUà5º­ë¶Ö˜7fÀò•0eZÓ˱ãá“àåé0Ÿ¤-ýd@ÅÔùLàUww÷ÂÂB6›-är¹D"!Yd2=©GÇ<‰Å∈>Ÿßš~:s挟ŸŸT*ÍËËKMmÔÿÞìì¸ÎÎ6W¯>Ðúîž==š1i’‡>—5ÊmÜ8##öÑ£—èÊmÛŽ}õÕé²²êéÓ½õ1Ø«O(ìcll”’rÓP-üøã>úèЊqçÎåôëg毧A&“@9réС¿,,8 ú¤G(—+:ä‚jÍàܹã*+kãâþ÷ÝwTTÔÌë«§Á¸¸d¹\1gŽïë¯` „BþN$Áù˰f=ìþ²©†¢àÐÏp" N$ÁWÚ:÷ƒw`ŇøÄÿZ}åm˜Ê¼ âÛàï ½@¥‚‰^M²æÕ@x5ÞyÀ±7½ ô2ܼþ÷¯& { ~ЇþÀk4\¹iÁ{L[×m­1£| 9 Ôꦗ_Æ@ØrHI†%oàÓ´¥Ÿž.ÿ |}WÅãñ„B!I2NöÈ#Y HŒyjjjpp°»»{dd¤Ö=ƒ¹\nzzº›››D"ÉËË;~Ü0 -k;;‹+V® `2+W˜šiPP íÕK÷p+‘¨ÿÌ™>J¥z×®D¹üo¾œÛ·ÙÙYöík§Á~ýyöúæ›ÅL&ƒÉdìØ1ÏÌÌDŸÊd52YJ¥þõ×kVVfýû;êyËåå5×ddÜÍȸkmmÞ§­þ}hbÂöôìgoo•šš¯ÿ ¸ºÚÛÚr32î^½z—Ï·tuuÐÓ`qqÅŽ?¿÷Þw‘‘'%’ŠG*ðƒ ù§xsHŠ!ë*À¸‰ÿ}S}ö5_§§~ýDO~ÓUW½ÀÑC͇›@]]S¹5S0c\È„?Òà4`±à4°´j’t'’àëïüáÒ_©)àêöÔo’Ѱ÷?à5úºÀƒ烇°­ë¶Ö˜O¶ÇÖ­æPôDÞðѸžÏò ýd(ÅÖó|_ß|þ¡””OOOOOO¹\N§}€ÔÔÔÀÀÀ¶s;mÚ´)((ˆÇãÉåòÌÌÌ””:Cõ×µk¯]kRc6L‹Š:GÊ–%%U0p Cii•®úÉuöì1J¥ê‹/+*jžˆ6(,,6̹¢¢¦CVO¼xñÖÅ‹·È»»w/€?>¤g 9#P(ÇŒXUU'—×éi0'çŸoááÑ[¥¢d²Ú­MÓj†w-/—WVÖhVêl°¬¬ŠÃ14¨7EQUUuŠ…ÒjÐÆ†KÄè´i#êë•ÉÉ×ñ³ ùYü/øb'8 ›vÀ†5ì ÐÇbŸ|Z<,€×&7ùim€7CÁÆ&ëÉïè¹ à•03ƒI­šj'áïÇï¿·› Ûwµ|×k4|º¥Éóä6z5¯ìÓzÝ6³áÿ`ãG°þCØú9|´ªª@­‚5ëñ¡@´`¨ø'M†2š˜¸™Ëå’\ä2™,==½íãù|þ¢E‹|||ø|>Éžž®[¨ªª¢øø-š7Ò«WïÇlØ0mË–¦È¤7ßô±²2U©Ôryý©S9kùž..~ÔöEwï^Äd2U*µZ­¦((.–mßþÓªUÓ\]˜L†J¥.**ß¿?¹´´½AZ j¼»–/ß×þnÑjpõê—ûöå³XLŠ¢>|¬ MM/èßß‘Åb–—Ë÷í;÷ð¡TÏ[^µ*ØÒÒôÌ™k—/w,Q¬Vƒ®®öo¿íÏã™@EEÍþýçÛ_¥Õà¦M3íì,) ª«gÏf?ŸûL;½zõöòxâD2~Š!eÍê¿M=™‚Ùɤm4³“·'çxqqÆÉ“1»vëhvr†u™X|„Ä• H®x Šâñx|>ßÑÑ‘Çã‘ÃÈ2=©Tš—g®óuÛ#¡:Ê3%‚´”PJ(é~ŠmÀF»¹Írs‰ä”T*%‚‰H%Nl6›ä…"99%‰L&“JÌqÈAy`Ü¢£ã4Ç'1Ê2Ù9™LO2p8²RÇ HÈ!V8‚ ‚t:ïßòH(Mx¼€§jp4Ay¬ZÐyÆÙØ¿‚ ‚tKví:×yJ %Ô³Ñ?8½«Ž ‚ χö„“ëf™‰‹ ‚ ‚ AA%‚ ‚ H×£GÄBM*ôövÙ´)ñ™•íÇËËe„›¢@.Wœ>}ýÖ­SS£Y³D½{ó¨¢"Ù‘#íßNdâÄ!Ó¦055¦(¨ªª;räBVÖýwß rwwb³YjµzùòXƒô†££…±1›ÅbÜ»WnƒFFlµZMI¥5 *= ZZr,-9dß«ŠŠÚÚÚƒ´ÓÖÖÌÒÒôÞ½Çú›rq±mllÚí±¸¸ZMïtŠ ‚ „ê6Ö¦¦Fj5õÌÊ‘]”]T_ßhcc¾x±oHˆç§Ÿþæç7ÅbþõW¾ZM è0a€ß~»ÑNƒ—/ç§¥å×Ö6ØÙY­]ûÚ‚~ï¿àüùÜK—n¿õÖDvHU•¢¾^Ù§µ¡ VW××ÕUS˜šÛÙYÉô4(—×WW+( ŒŒX½zY=x`©Çá°™LE¬‹Š*ñãA¤'ÓÍ'òX,æäÉ¿ÿ~㙕E¡hT() X,¦BÑHvvs³çrMrrŠrrŠ,-9:´ß`mmCMME›Íª­­'_¿^˜ž~×°}R[Û¨RQ5Ø@¤I}}›m€'J­¦žh†A< X[›——×à<‚ b(º¹jÜ8·¬¬B¹¼þ™•º±lÙx ¥R}à@*XZr ªJAQ—k¢ƒÏcݺNN6J¥r×®S/\o[Y™jÒ œœxFFL‰¤Ê 3“ËëU*ƒM·1TïÞV £¾^YQQcXIŠ ‚¼tg/”×ÙÙæêÕϬԙ={þÝûÅêmss33zzŠŠd%%rkk3=í³8¶\®0àÍ>x {ô¨òÑ#™R©¶³ãâç‚ H¤;{¡k;;‹+€Éd¬\°wïŸZ+ëêu¾JAÔÆÆŒ8œª«L&ÃÒ’£VSry½n±V·o?²³³¤^(¿†¹¹‰µµ©DReXŒBÑ`ll¡·„b³k`0 Oë¢"™>ap@Z2Y‹‹5~Ž ‚ „êV\»öðÚµ‡¤¼aô¨¨s­Uꀃƒ%””T èPU¥¨«k±¸¬wo«¡CÔjªºZñèQ"Ž(,,6̹¢¢†W½p¹ÆÖÖ¦ÅÅÕJ¥afÊŒYdYŸ©©qCƒROkry==iëâbûða…þ-d2D„YXë¿AA Õƒ˜2epŸ>ÖL&C¥¢JJªŽÏ€ääÛ³f‰Æ@’üï·ÛopæÌÑ®®L&C¥R•ïߟ Ÿ~:ÏÒÒŒÉdÀîÝ‹«ªj?úèž-ïÛ—øc¤ðྒÂÎŽ«RQ\ (Æ£Gú®È³µ5g±˜”JEI¥ò.8úL&ƒÉd(•ê²29þ9 ‚ „ê¶lÙrª•íä¿ÿM}º²¶¶aÿþ‹ºÔ?®¿`zý5S •_Ц¸¸ª“ƒ‚‚Ç]¼…‚ È‹f'GAA … ‚ ‚ AA%‚ ‚ Hw {†“?ê²ÖAé  AA%‚ ‚ HçÓÞ‰<·¶¡«V,Y² AAIBÀ͛⪕ÅÅÏ<¦W¯Þ8œ‚ ‚t9 Õ•9uêŽ%‚ ‚ (¡:€¥¥Ó‰É8–‚ ‚<70œAA¤Ã°± WWûY³Æ³ŒŒØb±$..ـƽ¼Ü¦Ly‰”ÿ=ëòå¶Âø‚ƒG&&¶l·{÷âåË÷éܘ‰‡øû U¿ür%+ë>˜››,^hee*“ÕîÛ—T[Û õÜåË'÷îm£T*ëêN),,oí\­•»w/~ô¨wµ IDATiè/¾8US£ÀAä“P11KIWÕ!„·Þš¸ÿwï–2™ ''[Z~é%çI“†EEª®VXXpÞ{ïÿ)D¸heêT϶%”0™LµZMÊ—/ç''_§(°··ŠˆyÿýD·ÝºUtútæäÉ/M›6òÇ/iµsá­ÜÜj55dHŸ°°€Í›líÜÖ nÝz 6AΠÓ'òbb–îÝ»„zÂÞ½Kh9…ôd¸\ÓŠŠZP«©‡¥¤r÷îÅô_FWX»vúöís_zÉù™–§LyéÇ/UW+ ºZqôèÅÉ“›ßbÍšW7n ]³æ[[.mó•WDëÖM_·nº%©±´4{ゥ7†®[7ÃÅÅžnêôéÞk×N9²}nmmE°Ù,¹¼ŽT …}ÒÒÄ–&:´ok÷’}_­¦@,.¶±á¶qn; "‚ †¢s½P11K)Šb0t EQ¤ÝQ=œóçsÖ¯ŸqófÑSSóU*u——Ë·oÿ©‡… ýÚð'Û{÷Jé—÷î• 6¤¶ ømÛÖd¡¤¤ò§Ÿ.?ݪuëfØÙY|ùå¯ä¥µµ9Q••5<žù3»kÒ¤aYYmœÛŠAêãCLLŒïÞ-ùùçËDV"‚ ]]BÑúIS--]C„T‹z¤§qòdÆåËâÁƒ&N2hÓwßoãà+WîÀÝ»%ÖÖ\}.:l˜ËÚµ‡‰O¨¦¦þéÜÜ÷í;W®ˆgÎô¡ë¯^½ ééwfÍMj<<œìí-gÌð33úÈôô;Z/½mÛ1ÁôéÞ‘‘';ÚìQ£ÜD"·ÈÈ_:zâÇÿ “Õ°XÌ)S<ÃÂü£¢~ÅAäPÒ6¥¥•¥¥•iiwvîœGj(Šb2j5Åf35—* (Шk•ÂÂÇýúÙß¾]L^öëgO¢°;‘YmÀ`À矟T(Z†××7¶vÊíÛ–/ŸLʵÖÖfË­¬Ìe²š6.$õå•‘_|‘(—+Ú8Wk%)¨Tê3g2§N]ˆ‚ ˆÁ¤È?ÃàÁ¢‡œœlè¯üÇ«ûõ³€‘#û·G-ÀÆ3[Ôüþ{öÌ™£-,8ÀårfÎsöl6y+3óÞ”)žÄ²¹y“ëH©T7ý–‹‹IÓ¨Qýoß–Ð6GŒp%j&?¿©27·püxR¦c¡´BO#æ\TÔ$æ®_èåå^^n¹¹[»‘Èõµ×FEEýZQÑ,³´ž«µ’Ã1"…1cÒKóAƒ€^(äŸÁÏoðìÙcU*Uc£úÀdR™ —+rršÂ¨[cíÚéÛ·ÿdffÂbµü™YÀá­\ @0ΞÍÊÌ, oÅÇ_œ5kôƯ«Tê†ågŸ (*9ùƆ ¡õõ[·ûᇋaa‡ÖÕ5~ûmóÜ¢åºuÓ`ïÞ$RsøpÊüùã6n e±XRiÕW_n­©3g޶±á*•ªªªºýûÿ •'Of,YàååVYYs´ÞKX˜UUÝ¿þ5T*jûöŸ´žÛZexx‰‰‘™™±TZýí·àS‡ b@ÚäááÖ¡=òÚ¹ì®W/.Î8y2c§ Ú×ÁÁ*))ï鮬Yí«ùò³È”6-ÁnA6ø÷¦Z<øûÏz¦z!c×®sÝ ¸½PÔ³ÂI휪AVÈÉy“ƒ÷‚ ‚üt¢„ŠˆˆÀþEA%TÇØ¹sgDDÄÎ;µª«;w~úé§¹Pqq$‚ Ý_ìéqªm/”a}T'OÆàX"ÒÍØµëv‚ôD E¼Pm¼k(/T÷þ¬Yµ*@Ÿ[ÓóôN²fØV!H·üÃÇ4Òs%ÑO­©¨Îˆ”êh,}ׇž£ÔíÖô<½“¬¶UÒýÀàééJk”&†õB!‚ ‚t …9 AA Õ1pAAn  ‚ Òap¼’§÷ÏÑÁí³TëY­Õw´aè‰DAº1è…zQI)·sSÂZçé³Z«×AØ‘—{c–îÕÉ‚ ‚te:à…zQÖÙ®_?ƒœœl‹ŠÀÖ­ÇÖ®Nv¹ïÆŠJ$éæ‹2Hˆ"é"‘ˆˆ§¥íhUß¾üO>™¾gÏÙk×î¤=mxpðÈÄDÃ?ÏdAy%ÔªU/Ê-mÝzŒ¾þ:Œ.woý¤ƒŠZ²doLÌRMÅ£‰H$ÒM?9’®$»L3Ú³­¼Ï€¬¬ûÞÞ %¡Úñ©S=;Cët’YAä–P/z\ËîÝ‹—/ßG ǧÑË5=zô’@`3lX_ Óøø ÙÙÀÒÒlá ÖÖæ*uðà_¥]ÿî:ªxˆèiá1Ò|Ù!5¦U?ƒéé =3¸ŠÉdŒáºcÇÏk×N733©­­'#uölöàÁjïÞ¤²²ªÖ*ù|‹·ßö755ª«køöÛóË[Œø©Sƹp¹œ#G.deÝ_¿~‹Å"ÞÊ­[éöH<Ó,~¸ ‚tozb,”\^¿cÇñ}ûÎ-Zä_^.ß±ãxL̹ÐÐÑäÝ9sÆ&%ålÞœpà@òüùãºþí¤k ›~jÍlÌóŠa­5:ΈýrsFD^»öðÚµ‡“’²½½qâʉWZÿt¥TZõé§'ZÖöˆÿüsÚÏ?§éóH<Ó,‚ñíëØ ‚ éB´¶Á‹>*ŠH³6ì#‚ J(äC-’žÎؤ¹ÁKGQQmë³ö£éæi»Aº7NŽ úÐy{« „z!ÑS´qzçYFDgH8Nç!HGéÔ½UPB!‚¼ú ûAt`×®s§´PB!‚tuÐÿ„ :só¦¸ítžéä‚ ‚ (¡Aºý &å‚t)ºÕD^çEÝ¿è·fØž1”µn<^bX0œAPBu"uÿBßša{ÆPÖºñx!Hgè'ìÑ­)õ\EÞ}$Ô­G>"‚tþ½)†.£ÿ Aô¤EæB0Džî#¡ò¯ÇGAnDìé$e,†Ý*jwŽ >"‚t–­§Ë˜A «¢ •ºÛæ…ú%ú“Ôì[ÛcÈËŸ¿úøµ÷v´}ÊÖ.&'‡‚¢xwû¾¨ˆ°•;¿ÅÇî9Œ×ýG¥L&S©RíŽ?w¯¨#_ ÿ¿öØœ;müáS¶¿ K_Ÿò²ß¨àmÓúnðQ€ÏK¦c•Jýζ½Ñí¼/¤‚áäb@e(Sí•Pnÿì=¯ZÐÑÛîßÇq‹Ó­‚¢vÿîö}´Þ¢Ë¨Ÿž¤Ï‡{¸¾;/Ø eæ”±í—Pîýœ,ÌLÕjíuDC†¸õ]ýù~•Zmoc…ƒ…<ý„ý€ ]x¡ž™ß³óÐmõûÁ“ÿ{ë5ÿˆ]ßkV:ØòV¿bÆ1©©SDî?^Z^ÙNßÀ/ÑŸ8q~ìp+ ³}?þî"pð°²0Û{ô·´œ|°¶ä®|óe>ÏR¥VG>u»à>^:“ß‘Ï#åÖºt~ð„QCÀÎØcÅe°õݹ|kK•J]«¨ÿ&þtAQéÖ.f³Xijøîö}m›Íz{zàö} ãEÚ¿¨^žèõŸC‰*µZ<3¯ú{™›rŸú3ØoÔ¼iãç®ù7‹Åúnë» ?ùR­¦´^·Æ˜}¼hFÖ킟“R§Žù²ß(Š¢”*ÕŠ±ølôdÐÿ„ /¶„záH¾’3=Ðg”ÐíJn³ø[>{êùËÙ§ÿº:eìðå³§nþ&¾ý«kêÞÿì».½w¬|ã›øÓ¤üÁÂ"¡–Í :~îòµ›w]+ß|å½'~,¤CŒõt/xTJÊ­u©ä±lÅŽØÀÑ/-9eÓ7ñõýÉDzjàÜë½yÁïöÝ»Û÷izÛ×§Œ=9GVUÓZ«\zÛO që[^)ߺ¨´œ~+7ÿÁâÐI‡OÁÐ}‹Ë*œ{Û›qLî<”‡–Öë¶ÖsS“õË^OJÍNº”o½æ¿xÃוòZ sS|0Až§¦§K(Š‚¸ãçßš~ý]9¤ŸÏ¾ý þw%7lF`5Y.äßdÄfÿ/ý:)ÛY[’w=Ýûõ¶³†×€kÆÁ§¶£ügíb3S[+‹Õ‘qmwé…k7ௌKfN&5ö6V«†XY˜©Tj'Û§·1:}ùCÜú®ûê`mc2™7ï}ýÃi?/áª7_¡[w KœlØNö¶¿ü‘6t€³¹©IÎí‚6®ÛZcv¬zóÈé¿.\Ë#/¯Ý¼÷Þüàä+¹—³oããÑ“ÁprÑ™NÍAØÍ·θqgÆäÑþÞCµ¬Ž[khTe¦R«•J)3 ò.ƒ}ñßZE=>²ºAy­‚L–<–mÛûcYEUÊÕrõæ{ó‚ÿ®Ô©üûÅ£_z(‘æäß_À53‰;~¾ë¶Ö˜Üü£†¸˜y‹¢(Ø›0¸ß@ŸaA¾#>ùò >!= 'Gð÷Ÿåï? %”îìÿùüÇ‹g0ž¼¼.~0v„ÇÙ‹™ãECróR®]¿3u܈cg/À@—Þ ¥¿ü‘6ÑKHÖ´Ö¥c‡{$]Ê7rðuñCRcnÊ)¯¬€)¾ÃiSJ¥‰±Q}CcÛ£“t)‹LœÀ/ÑŸ¼½î?š’Žp%7ßÓ½_ZNþK]J¤-Úœ“ÿõ)cœ¹P\VÑËΚga~硤§¢µÆÄüøÛòÙAïÍ›öÕ¡DŠ{ÞuñƒÅe±[ÂñÁ@ýD¿ÔL¹‰ Htv ÷óPFù@—ì}Î=˜ÿÑ­{Ec‡{—{Žþ¶zá«!þÞµŠúÈýÇ x¡oâO‡Ïöõº¥l6K"­Øý>¾º‘ðû¥7_øÉ—[ëÒ^vÖ_~¼vÆ#5ßý”´cå•òÚ+¹bzUÝ©ÿeD²DQßðîö}zŽÎ§þü`aÈÂ¥Jýå÷'[¼››?lz`N~dÆà7kפ…–í¼—HÏ’PZõ‰|zZ? ¨¢Aº÷wv‡5y‘$Tk4é'¢Ÿ˜Ùk‰xÂ@¿þr„.‹¼ÆÑåššjºL²%¸ÍÕ©UÊæc4lÊ*Óe¾]®W(šÿŒŒèòÝü›ty¨ç(º|ÿ^óB •JE—û¹ Òj³¡¾¹\U)£Ë½œúÐe¥²Që1&&­m355£Ë図*Ümκ9xè­}âØ»ùº×³›³ôÒ)Í€oßKë¹fæZÇëÞ[ZûV¡¨Ó:FÒ2‰Ö{ôíG—Þ¿K—ûð Ë’G…t¹DÒ\¶°äÑek>]®”UÐe[;ûægI^­µÆù5·SZÒlÿoí/Ѹßf›E…4ž:­}ÒÚ8–Hš3k Ô'Ó›–à'‚´ø£CyÉýýgutÙœ!%Bþ4Mú €¹0ˆÏ)6f-QQáˆ܇0åÕÿÔ…“S hû”W=IáÖÍìAÃàDRæô ÑOgÒñ‰DäŸj!ˆÎ´3µæªU:$á4¼Jk”&´TZ´äuZEu7r¯e]½üÒïv")“Ö[tõ‚ ÿ8NŽ :óLߒΛè1ŸÏ 0’ðÜr¬øpKäÿ}Ô¢²ðÁ½Ù¯Œ ö:çUßG…÷Ÿidp6]ˆýæ³™Ó¼|\Ïývâ›][gNóö÷î÷ÇÙDr€´T²hÞÔ`ÿ¡!“†g_KçAê'ìéj _¸d•ï„É7¯g~¼ò­ãg¯áãÕ~ª«*éò­¼ºL©ÕÍBœÅ¢ËV)me5ã«4ãä¸\˧`ô?!H„ÙïÁ`¬þdç¿w|¬ù•‘–2‚Cæ¤_þ«£š †zŽjh¨~m)5Å“^ü+éó­k^ ôŒX±°RVŽÏ‚ ‚t5b4¶NÑÃ{¡F]YJ‡C=ÕÖç¹MÞ¸‰Aû¾ùìDÂ÷ZVG­‘ÕR ƒÅbOƒÁ —‰Quèç?¹–ø€"‚ H—ÕO11K—BŠtºŠ¦Hkòïù÷ׇŸ|úUäFZ舼Çýv*~=?Êg¼aåZü÷MC‚±P‚ ÒõÓÓeé”X(MG”Q›­$ûåuj— õõÒïßO5e7X¿í?†Ïß³‹Ëµü÷ׇ x¡M;¾Ù°fi°ÿÐÆ††>ή±‡NãóÚ~Ü¿D—{iä1☙i=^©ƒbù·ü@vϼ–fLŒfÞ)E]süŠ-¿ÙŽf®)SSsº¬Óǹ¿Æš‹C<é²J#ßÒ0O/­ÇkâÒ h;ˆÃiî“ÁöMÍ̵ö‰&&SºW3ƒmGÓ æt™gmûÕ¾|LA¤«±¤‚ˆ:q"o„‘ÑO‡ËåD?=Ï((AAÎÃÀªqÉÞ«3,D?͵áÒú©ÅÞyêaÛ;Ã… ‚ Ò©>Js:¯…~Òõ¢I¿þÍûÍiÆ‘´Ó£‰­Î×ÕÜwϱ— Cç6Rçëjî©gÂiÎ¥¤·dllB—íšch4÷}3çZ<³O&ÿ¿éêOç~´ci¥}\Ú3^­¡™ëK“¿Å]i Kô·ç§,,­žyŒfÕßêÁ¾•68>Ó¦>}‚ HÏ’P´Š€FF¨Ÿ ΠÞ-Ão=¢°[Aäit޿埑PðdÂN3A-žHõ“>¤§7íÜ'‰ÒÓÓõf ŠBA¬ZÐyÆ;wƒZ?iî‹÷ÿÙ»÷¸˜òÿàŸi¦T¦¨èžR‘¬’ŠX]°ÈeUKKnQû]Vëv]Bje]¶][Xß]Ëj‰M²»ÄRXRºH¡"Ýѽt5ÍïÓ÷ÌÙš™¦Tº¼ž}ìãÝgÎ9ŸÏœ3s¼çœÏù|º&s©Ãq˜6çÀѦ± Lôd™Ñ 5DZéùðÇiÉFƦ„ð¨ÄyXvÿ™†‘E´tµó2-N×¼‡wrÁ)5%!éþÝÑæV.•Hç[tÜýó§Þ‘E=JM¢cæ¸MÌ9δ´té89ñ›˜¥ãòRÁÔ: Œþ:ÌñŠ˜ó¥?L=ÆWé_sí1vêÆü}Ìå•”1Ú+´mŒù㲞¥ÓñüEžtœý<“Ž-ÆZÓqôß‚aÆòrû„9·s.¶†zÁœtêš‚>^£F[â” }JZZ†øÚ}§¯7Ï‘ç½~ÇÞ¯¾hV˜›ýlÁì‰Nö&ns¬ósŸ·º‘‘::8zh·ëL+‡ñúWÿ ?äï:ÓÊÞjèßWš&*.zY¸bát'{“¹SÆtåèä–ÿƒï @—éÍ)Ô¬y +ÊË®GE2 ý6­šëºøâµóæ/õÛ´ªM¨¤r&ònÐáÓ>Ÿ~¬¡5äLäÝoÝåçC½ºcó꥞k/^{øíñ­¼ºæ=Æ1àÓ €ª°X¬u›wí ÜÈœ\">ö¦Ó\7BˆÓ\·¸»1mÍÉ!&fcëëëœ>t£â‚¼lêÕÛ1Q{ü7Ìq4ûÒ{iyY >[½XúBuÞcÇÆîƒ#‡v‡Ÿ=!4ÃjëÖúõ“¥236›#--CÅôÀB|>ÿäùh®‚">UíP[SMÇjŒ¾JÌýÉìëc:F0Çs<$Qcÿ¼(Ì£cf_(Ƙ=Ì9ì¨ãKa޽4lÄ(fŽ.Ø~A^«mc.?„oÐê>)*zAÇÌ~T¢Þ£ªº¦Ðºà]¦PúX`§Z¿ùë5ž®t¢cieóWäYçË/…Ÿ;Þ¶cÓµÓ'‚W|ºž’œËüwúh %ác§Ý9œ‰ÙØÑæV—#›F7ð 8°~õ¢ã!A\®â¾ƒ';°…ÛmÝàådoÒP_¯£«ôäøxôõŠHðX`çiÇ=ÄÔÁM™o¥c]ýӷůËAŠÞsƒÌèx ’Êþ#gñ‘@ ÐElí§·ºŒñ{fíÞ¾ªš Ÿs8ãQc„.ŸÃŸIŸ1¶“¨>F#FŽîý0ÁZøÕVM­!ø …‚·…Q BAÛ`"¤P]yóN:ºØiÐ¥)Ô³gu©:Ô{B5åOŸ}ö™$KΞ=ÛÓ3¸óÞXyYÉç^ó_½*TSÓ UTHYµüÃôG)2²² ¶ï:ddlÚê*B ßIE½ÛHÎð&,‹Íá,p÷rqóhëêÔ#“ó>°334½Ó÷ûüVûlë¨7"¾mÅl[Çn¹­Lôd™¢¶ãÐtÒ*íØ¾„«{ºÏLMI()~•šÝÐáõ@/Ð)¼ÌnM¼±ï÷ù·¶¿xíÁǃßì  Ý–ÿóèⵟ~¾ÅçÓ%YEhá;©¨×ûýJÂùË÷üré÷3?‡þ±}iG’| °ßEÇf9̶½Ãü©oZì±æBT[ŠÝŽuyo] …j¯) üëš7vãÚ³>ü˜2kÞÇôLÃöSf±ÙlBˆ¥•Mþÿæ¶¿ŠÐÂwRQ¡¤¢^Íx’:ÇѬٵ*xþ,}î”1N5ÿöë-&z²ôG~í2cœÝ8½k—/Bæ8š54ÔÏq4k¶_þaæä÷œìM>œj.ª%ßíö¥Sœ+œ§ZE7`¤çà7;ÏG!” IDATæ}`I×%ªU-ë¢4ksËGíviå0^ÿê_ᇂü]gZÙ[ ýûÊEj¢—…+Nw²7™;eLrBl³=,ôU¡­ÍÎÊüpªùÜ)cö|!fÏÐ^WUnöY1sò{³Fä4ž97%!$7ûÙ‚ÙìMÜæXçç>ou•ššjO÷™?þ°O|¥„ïölýpªù‡Sͳ³2E,Éë¢YOž&¾ ]³Ïµ÷|1ïË?#1D@ï×ÝɧNÚõoìEA®šº!DUM“9?åÇö9L›CÅôý¡«ˆßNWVÔwŒ9úYæc*Þô#µ[R’ⶬ[y&ò®£ÓÎmkKKŠ””ývòÈG W ݈ÿ–5î+Ö8Ï_öû™Ÿy‚ æT©½›wû ï¥öSg‡G%šèɆG%6[}ïW_\¹¡¬2˜ž1ºeKfÍ[¸ÆÓÕ별ˆs'縸7Ûˆ†ÖsÆÑu‰jU˺(¢ÚF¨¤r&ònrBìb»m‡¨xýgîvSœ!;6¯^ê¹ÖzÒÔ´‡‰?_öû•溢^mÙÚß5‹–¯v^°<,ôx«­¥¶¬ª¦yñï‹U^V"%õ¯_h~›VÍu]¼ÀÝëÌ©£~›Vÿ|QÌ*•åŸ.›3÷£%Î󗉯”¢=dèùË÷ÃBø® 9)ô`I^—äš}–¨Â¡Ã×oùÿ´ …j¿Ë—/‹zéO€zñ÷_#ÃOŸ<MýÙy÷Gº¬¢^,?÷ùºÕ‹J‹_±Ù*¯bs8s\ÜÏÿöÓ¢å«ÿºx6âïBW¼ïÖwÁ¿B¦9¹lòô¬š9w!ÄÌbBa~Ž˜z'ÚNÙì³bÖ¼é ¸eKô GÈHËß2m¦³$»èƒ™.T#wný\ÔÁ’¼.É ý,͘=_[¤Po‹Åbñùüf S³y÷j¼!cå:¾_¹šºÖ‹Â¨´¤(pûÿ-\ú)õgeE957Ëo'ÐËhhêhºÇƒ¨»x„1–ï_¾tŽBÏ0-ŠL¿~55ÕÍ ór²,­l¾Øºçar¼˜–8}èvéBhøÙÔe¡V mU˺ķM’ÿéM?KZö…ÿ*“Å8kªOÏ¥ ¡’´vÊôüšúš·¼ãfieóµµðÓcÇÛŠ_e³ÿw²rò[Ö­¤^S)!„n¤¥•˜ƒ%a]ï>…¢~²þ­ËÞØgë¶ÿsÕÉÞävô•Ïþ÷X¸Ïê…õuuŸ.›;ÇÑlÞMs¤ÐÐU„¾“Šz½9ŽfN5_¹hÆwçË©Â/¶îYìb7ošEYi1óÙ¨¹.‹˜(jk[ü¿ûoHЇSͧ%ËÊʉ©÷ã%ŸÎv0mÖü ï%³L?žk³Áw˜–¨ªiêèê?šNçâ mU˺ķ­UÛ%'Üu²7™fm´ï¶6½Ê´Ùÿ»G÷Ï2æIÚú-‹ií–€ýÅE/©þÚžî3›u'÷ 8pæäQ'{“3§Žùhu•­_}Ïáp|×{òù|1•Br²2?œjþ˱›w|'æ`IX]hk®mk®]__Gm:ô—z1–„ƒ3¦¥e´º5.ÔìÙ³Åüžc±X.\ Æ…ºWãUëª^Jj5Δ‰¹WP"ª©Ô«˜ö¤OÙ¹m­¶ŽÞâÞb–yÓÐÀ‘–þ+2ìøûNGÜî&-ïž­‚nhßöccÃY3Õ™…»÷ÞôÙî‰ þ»C§ööó[Í^¨,"(èª$ySWOðb¾˜5Æl;3{Œ;éŒûwÐ8Ù›pû+¬ý"@üb‹]íËJ‹ù|þ®oÿÛ}ß=[mÕY)”¨{vcÜÉP·1„2R[ú¦¶–Ô4倮ïñêŒ~åÐû\¼ö@’ÅNýÓ ß=[Ý%…ºpáÏž=›þsÛ™ÙØéÐÓIuŸ¦¤}(‹[{Ð#tÖU¨fáÑŽqoeÅ!Ú¯²sãÀ@ŸK¡˜wñšs#Ïø|­ó°èþ:åFÞ8 4h.A@÷Çéú*Ÿý*˜ôT–ZWuBˆÆ™2\‚€>B}öÙg¢‚fyRXú柸}1…:Ô¥YGrQ˜CãôéªYnÔ&¸=Å»JöL!.A@ÏÂy·Õ• ¢ýŠà …j$OÐãHa …ètm¸‘WPýІjíZì,€¶¥Píí  ÷A_(¤PH¡Bô’v'oYûnºlå/¯0èI)•Ä`´!…º'{'Ú’Buû¶#äPmtÇBµ††EZZŽ%ô>³fªc'tOÔ Í$½ ellønºv­æé€–BBÞáͲ‚‚x*è‘)T7'aš¥¡a£ÐGtÞUNoÚM­ŒktÏúˆµk:oãœ^¶³ø|¾¨—¼½÷‹zI__uþü‰22liiNFFáÿ{røðÊÿüçH‡´Ê××™ ´´TòòŠ !þþaÍ–9|xe^^ !|vëÖ#|ôÞ†„cµ/Óâô…=Èb±¶mÛFˆ²¨–-³;~üï§O_JI±´´T:¼tÂtð GËä‰Fáre?ùd !ü[·ãÓð6Z½ûÔî;}½?…b±X„íÛ·‹¹ ÅåÊ•–VBù99Etù´ifææCäBCo%%='„ ¤°|¹½œœtMMý±c׊‹«Läåe""âíìÞ›5ËÒÇç'6[jçοüòdc£ðKb-7Â|µªªöÌ™.´¥R(¡ ÛÚŽ´·Ïçóxçð èbo;.Ô¼yVNNæTìê:aûö¨XOOuûvWÉ·søðÊÎËŸÄÜÝ£\»öÀ××yåJljØlÁ>©¬¬ <ìØU—ñT‰››õ;OüüÎÞ¾ýÄÍÍšòäIÁðáš„áÃ5^½*×ÒRÖÓSÍÎ.•? ÝH399%êêÄ,ììÉÒÒ ¾þ >Ä]ïmoäed¼ðð°—’bq8l6[êáÃCCµ¤¤ç††ê÷ï?UT”_ºt’’RÿË/1YY/ !B )22//ÇGò¯\Inw“üüüè`Û¶m®õòeùË—å±±™»v-¤ x„>Ÿ°XÍ—§3>ŸŸ•õêý÷ KŸ<ÉŸ7ÏJ^^æÜ¹XI*•Ýéè(–‹Y8$䊡¡ú„ F66ÆAAñ9#$Ä«eá[Ùý¶W¡ª«ëŠ‹«tt ªúìÙËÌÌBꢔzzz¡›ÛĨ¨~~gúéú¢E6Ô*B !rr2Ÿ}6=>þÙÛäOTN³mÛ6*‘¢.DµjäHm*IÒÒR.+{-6e,°°J;ÖàÉ“¦ËlOžLŸnöøqÁ«Wƒ+jh(1;TI¸—+ëê:áÆ‡bVQQHO/ »£«;_ ñZfKo?åIt'OO/6L½_?錌§O_̘a®®>°¡áMII•±±–ªª¢³³!D^¾µ¼ÐBBˆÏ¬K—îß¿ÿìí›DÝËcµ¼v$ÂäÉ#,˜Èãñú麘%ýõ¶‡‡££IMMñc×èÊÅe…êæg(Kè†Z>S-áSÖk×:têóØ€ªmg%1g+ oVJ¾dg¬Þ•zPSºí—Hè©©Õ‹úx|)T—j÷­Fúl%ùy­}u½åê]©5 ›‰û z úž{ŸK¡ ˆˆÀð¡ð]mÓU¤PïXHˆ—§g0öÓã|>vt¥vŒûßþÑÉ^¹víLúÏÏ>›~øðжnÄÉÉ‚¹ABèƒùýèAÞj‚‡=h!DI‰+''ÓØØæ Ó§›á@ÏŸZÆÐý½Õ¼[·¿ÿ¾Ñ… q'ݾýXWwU>hÂòåörrÒ55õÇŽ]+.®"„>¼222ÞÔTË• ½•”ôÜ××™Ífûú:BüýÃ!Ó¦™™›UP£èÀsS3~ͼe]¸,m=oàŽ@_I¡âã37nü02ò¾¥¥þ®]¿»¹M¤ÊÝܬïÜyfm=ÂÍÍúûïÿ¤ÊKJªvîz”åJ²Ð´¬‘¢ª:ÀÓÓ‘þƒ9S§š®ZuŒbk;ÒÞþ=>ŸÏã5œÃ±ƒ>šBee½ôòjþ`FF…ÅÐ[·kð䉸 ìÞ¼áÉÈpêëßtÍ»¥îß±ñìäŠ,--ßòôǼ~sð uÞÊëJBÏ•¢N‹­žy Cä䔨« âŸ~ºQVöš¢«;ØÝÝ60ð÷f}'ÜÜ&FE=HMÍÕÑQY²d2õ[ŽâëëÌá°UT¾ù&‚Þ²œœÌ§ŸNûçŸ'·o‹üײFBÈ‚ï_»–rûöãñã‡KI5ý8vv·eËéÊÊÚþýûá¨AßM¡„úõ×ÛvŽŽ&55 ÇŽ]³äõë©[·ºÔÕ5ô¦ ÌXmÊ¥˜§?¡DòºžÐs¥ÐÓ¢$g^€¾¦ àVQázxØq¹rjj[.`l¬¥ªªèìlE‘—|g©³ñèÑzÎÎã÷ì¹@úøÌºtéþýûÏÚZ£zHH!äþý§K–ØR…©©yîî“bc3’’²ða€¾˜BµìãB])!„U´¼µÇ\ž^òüùØóçcÅ,ШKPñqq¤í—ˆº Q§¼®'ô\)ô´(É™ OY»Ö¡“¶¬££\XXNÅöÇÿž^دçÛo—¶\˜Å"{öDÔÖÖ ÝTJJ¶‡‡=ýgzz‰‰nBBŸ/rðñ52× ¹bh¨>a‚‘qPÐE|$ Ï¥PÁÁB¼©÷ñ !––Ä3˜ÎŸ¼<ƒ=»ñÁ`žþø|¾”«±‘ÏáH±þ×5Lü)¯+ =W =-JræèS$ŸÑ¼M›åre]]'ܸñúSNN¦¬¬šbmmL/Ãì;‘’’kkk|ùr!DOOµYÇ}}µ’’*úÏÐÐÛnnÖîî¶'NÜõUZcfæ‹1c†þóÏsó¡Œß` éé…ùù¥_}å†ÏôŪ[eKB±áâåÕhvú+.®:T53ó………ݹ^ü)¯+ =W =-Jræèk$ŸÑ\¾¾Î|>ŸÇãÇĤÑÏ£œ={×ÇÇ©²²6%%›÷˜ÙwâÔ©›‹ÙlÛæÂf³‹Š*öïÿƒÞõ³íäÉhf-§Oß\¸ÐfÑ"Û_~‰ú]ZchèmOO‡Qiiyõõ<ªpéR;yy))VXØ| /¦P=B|\\HH|gŒÕDœþîxx8TUÕ>xðœ>‰:åu=¡çJQ§EúÌ{âD4¾rKÔ¸!·n=¢I oê Éì;ñúumpðI¶Fòùä—_b„ÖEu½Zã‹e;wžçñÍ͇ªS…{÷^À¤P=ƒ—gppw9AÔé/)é9=¸hDD¼˜S^s®lyZlõÌ ½ÞÿýŸSÿþ²,ùï¯coR¨žÄÓÓ‚ï牣 ÐåèÇúún ÕOáv8Ë.|øÎ²Ç>è•BuÞS¸§+§¨ÃtxH¡„ð)ÜÎÓs8hŸ}ÛC° —¤PD‚§p;OO¼‡íóδtp ÐÙ44,Þá/vÉIa´U¯º õö÷û$ßÂ[ÖÕƒnMâ.*@oN¡Þ¾¿¹ä[x˺zP×xôâèå)Ôã|LÀÝÎ¥Ðk½ïMvÞÆÑ úb eii0mÚh))›Í~ü8ïôé[¢¦•ur²¸x±ƒoýŸóÏÈþ¢–œùø¶2¢AÇl)AºÇYyZ/W^–Ž«ªk;|y€Îæ8üýÞ—?uj–â…‘ö o¥P£GëM™b²ÿ¥ÊÊZ))–­­1‹Åâ‹È¡¦O7ë𪥸¸8ayÆ€Þ£¦fPoz;TçË®SrrEï|OvMääŠð­év)Ô´i¦gÎÜ©¬¬%„46ò¯_O¥Ê½½g()qy¼ÆººúS§nææ–øú:³Ùl__gBˆ¿˜­íH{û÷ø|>×p®cßÞ¶c0ÿôó˜.ùºÛ?] ¯£>@A~Îêz äëj_U¬®*ï¯ðó”ù5ýd !ÚEóÿ>Ïnä+*Ÿtp©•é×”}Æ^}©48~˜éÊÈZEÜÚ×ë¼üèMµº–к¬SîÚ&ÿÓÀáº4Îá¡Þ|1zJþTZšÜåÕÚvv]ÿ¦NœðsrÚönf×´áÄ ?\äëv)”¶¶Êóç¯Z–ÿôÓ²²×„]ÝÁîî¶¿ûû‡<èáïF-àì'j*tüª´œŽúËÑ1óÜëê::¶|OÐý¢°¸Lp¶-¯¢ã!ƒ…¶­òu K±Xtü ý9Î}\iéÃ>Ò†îðN{“NJE…ëãã´m›ëâŶZZ*-HMÍswŸdiiP_ÿ¦[íšû©™åUÕ]PÑÈì'÷‡™B⇙Ž|þ„*T-}õDKŸ’®­?òùcªP±ºò ›]ÝOŽòXǰJ®³Mµº–кjúÉò ‹Âá½i¹Mh©Ã®Båæ–èêÎÈ(lVîáaüøßéé…ýúq¾ýviËCB®ªO˜`dcct±ƒ¯+Êû+B*ú+ x]Aª¨™e¦Ü33:3e`UÓÕãçOÒt‡‹ÙT«k ­‹âsæJEIˆÓ|+:†[@ %påJ’«ëøï¿ÿ“îNÖØÈ—““)+«&„X[Ó ¿yÓ‘áP—TTÒÓ óóK¿úÊ Çƒö«ý<çè»Ä[)z#ø¬¦‹…#Ÿ?ùs¬}‡¯EÙçú©QnæÌ;—ÎñÀþè<n )Ô¿$$dIKs¼½g°X,6›ýèQ.õ8ÞÙ³w}|œ*+kSR²›л~=uëV—ººÿ°¥Kíäåe¤¤Xaawúæ1(ï¯0àuE©Â@ÅוÔ%"BH¡’*•ʨ•¾2Ì{Ja7ò—¨¨‰ÙT«k ­‹–¡©·ìÏüVü²DЇé GÇuõ‚þOÅe•tÌ'‚3iV×ÔÓñëš:¡u±Kèº%Œí3û`ý³®:¡íèz½²3ïáÃ+óòJáóxüèè´[·á@R¨6ˆÍˆm>XÈ­[èïRxxÓ(çÏÇž?KÅ{÷^èãÇà‘Î0óô䫿¶éɆ £ •ªÊK¹¤øŽñ×o™Œ'„äg=ÕÔ¿©V×Z—FqaŠ:!佬ÇùÊjøVôh‘‘;ÔÔFXZ~DýyéRÀŒ[º Þ€€0B—+ûÉ'Sáߺõ¸C6›–ÅfK>‰’šú×Ë—“'¯"„”•å%%…Ošô©ä»eæÌ­mÚ**zãÇ/þß?p'_½z:s¦o›ÿäÉ ªåíh@~þÃçÏã&Lhê\q÷î/ZZ¦ÚÚ¦ø„÷Ϊ—ùi§7!DšÃ¦‚%›¾ë¤Šþk¿äJ¨Ezr¹<÷ç©ó©Â•–âó륥ãŒÌ⇙BF>’¦kD¯µíç=„ï ø-^/ÉZBëš{û¥Êò7lN¥|ÿSÎ8ô=]EEAYYÞÀZ]_uUUí™3ÿ,\hK¥P-ǵ13Ó7Î0$$Š¢¡¡´b…=ý€¶PÊÊC²²îRqii.›-]__###WR’­¬<¤SßKc#¯ººL^~`MMECC‹ñ0¯„22b読45ßËËKÎÉIÔÑ1ËË{@i_þÄç7²XRøR …êR—35S-+xÖ²f…»|Ö¬dXÞÓKVŽôŸTÎÔÖµ„ÖÕ²z4##»´´+&,ýש¦º,!áÜ›7uÒÒýÆŒq–“@]6lÒ‹ëë«Gš®¦fD©««JL ¯­­`±¤LMÚšŠå䔨«hú-Úb\›ääì>šÀåÊVUÕÚØŒˆ‰iå–Ÿ²ò„„s|>¿±ñMc#OUÕ°´4[Mͨ¤$[Cc¤Ð¦Ši?×fР¡úúZ}#::crrŒŒìrrttÌÊËóÛ´'££hläEGÿ@±µý„’™y«  µ®î5½«Å5jæ?ÿWRÒyüøÚøñKD½µ»w©©)—’bs82£FÍTTT£Ú£¯ÿ~QÑSƒ÷55GáKªÍÚ4–f7·ç£U]¶Ó4[qÃè ¢$â¬×ú–‡¨´»UcFµmÝÔ…ÿKcÐ;Çý+:g·¾LKË43óö˗骪Ãè””HmíѺºÙÙ÷<ˆ7îcª\Nn€giiNbâïÔ¿ë))—ôõÇlPQQ˜˜nkëÕî–¨¨p=<ì¸\¹ÆÆF5µ„ÆÆÆ;wÒ'Lþ÷ßÍÍõwì8#~ ÒÇn* IDATÒ²rr** Þ¼©WRÒVRR\üŒJ¡Þ{ï¡MÕþ7oêîÝûU[ÛLGÇLÂë@7o>|RAÁÉW¤¤\jÓž´µýäÒ¥*y¢ÈÈô·¶^ÉÜÕâÉÉ)êëO¸yóˆ‘Ñdyù¢ÞÚèÑsde!ååùÉÉÖÖ+¨Õû÷W16vÄ×)T{`.賌SS¯ ,¶¤$ÛÜÜ…¢¥e’šz™‘o"„()éÔÔ4 tòêÕÓׯKÒÒ®BÚ<×¤ŽŽraaÓC'Bǵ‰‰y´fÍôòòêGòª«ë%ÈÃt‹‹³y¼z%¥!JJÚééÑUUEl¶´œÜ¡MÕþÛ·ÿ;l˜­††±„o„Í–VRÒIM½|ø§žž•˜·VSS–p®¾þ5‹%UUUÌLñE@ %‘o|·ˆùÚ=ã®gôø¯¼C—B¯½“z6”‘¹•—×úL)RRô?‚‡U߇Ӟ#¸\YW× 7n<üßu!ãÚ”–VU:;[…„\•d›ÊÊCòóòx ÚÚfÒÒ²oŠŠžÒ¡„6Uh¡ŠŠîË—OÔÕGHÞ«iÈó›7Nœ(ÑP/B÷d›h‰j*³Á-ßZBÂ93³••‡ðx þ¹Kð<#íƒwœBõ¬±àŒ4E~Cçã™vèýŒ§ÄÇÿÆHDt RutÆä秨¨ˆ{¼WUÕðùóxƒ÷ !’wK÷õuæóù<?&&~Oè¸6„;wž l‘™Y(Y ¥›’òG¿~\99EBÈÀšOŸÞ10˜(ª©¢ÚOÝøKNŽ=z¶„ûpà@­–óÖI¾'¥¤8<^›-ÝQÇTè[kh¨¥näegcÈÖn™BõıàâââZâî^[M›dKyš!x>¹¼¬„޵t§FÆQ¥¥Å­ŸßßtGxš!èRª¤,˜«¼´D0©¸¾¡ ßÒ«—èxª Ÿ“œœ<kj Ú–Ÿ+˜ ¯?WAèò Šé8ía"ë ѧãׯãQÕÕ æÝcs§ÈÜì§‚_½ƒƒDÔ× n(MÇO= ãвR:Ö3>}m`Þ!>c¬,U5M|\áßÿük*)i4Mú>jÔô„„sOŸÞápú3OÌŠ£FÍ|ð âÆÃë}sð!ªËE^^©å )æÂôðQ22ru^ ·ms©­m¿'ù*öö‚ßµµÃ# mªÐBúšš:µu76Û?’ïÉ#FŒp³@[["ô­ 2fÈ1M?ÏŒìDµ:ÆŠi±Çš QIl)vÔ•š’tÿn'm<ø@ Ž&t~~g¿þ:¼®î vôhJ$ëÉÓº¬.ïõ;ö~õʼn°ëÌÂÜìgëV/ªªªPP°ïàIæm)BHvV¦·§+ŸÏŸ8i*]èá6­ ?‡Ã‘îÏUؾ둱éG³††ú9Žf„ð¨Ä¢—…_®]VXËasvì63)TO5kÞÂc‡÷^Šœì8SðCmÓª¹®‹¸{9uÔoÓªàŸ/2W ð]³hùjçËÃBó›:!í úQM]‹’’·eÝÊ3‘wãMôdãšzöìØ¼z©çZëISÓ&nü|ÙïW$láËyt<ÆB0$Ý“G)Bc]ý6ín žZêß_0çÝ Á‚¾Dªê‚¾>ået,Å\)döÊLô´`ö¯z˜|ŸŽ‡<ôËË~FÇÚtü Ip»ÙÏ€Çèû%--xò…yåòE¡`¿•1úuÝ¿w‹ŽgÎY@ǯ+:3û‡‰ªWVVN3úu1û{@gÀ¼nÅb­Û¼k_àÆÆÆFº0>ö¦Ó\7BˆÓ\·¸»1ÍV‰»ó“+!dÆìùta~îsw;'»Q›}VÛ.®4--£ó6®¡aáélllصïÉÖÅå?ïú`vM:²–µkzèÓúH¡:ÿƒf®M©¯¯£‚èû¹]£‰ÙØÑæV—#›F7ð 8°~õ¢ã!A\®â¾ƒ'›-¼Ùÿ;ï•®'Žî·šhGw¾ùbëžÅ.vÊ*ƒ'9Ì  ?^òélSyynxTâöÀC[7x9Ù›4Ô×ëèê=ù‡„m³kMÇéOÒ±–Ž+\÷RR,t;UŒ¾>Ï2cM½o#xLN¾?Ë3úE½®ŒÉ4Éaóù‚»ŸE¯^Ò±šº—• îZÑ3`´Hp1o0c|)æ¸P&£Ç ÚÀJ^ž+l3ÿêó4PIÐëå‹|:VU´-7'‹Ž™c_5¼>š³Þâ¢t¬2H_Û>¨S¼)¤PíÑ9%5Gðdï·?.)éè꟎¸-j-]=Cº3øÆíßP‹›‡‹[Óh%Þü©ÀgS Ï¦Àÿý‹®²ÿÈY\x=k¤PíѦ±4Ba.hEç]MÑаÀîE Õ#a.áŽUSóšŽÕs±±Ù‚îÐatÌ·‰IS{H»Û ¨8Pø0?‡Ž †º s~SfŸ­ºZÁÄ8̇GŽ#t; ŠÚÝNf½L#(µŸˆØ&H.""¤Ã·t=ºBõTFš,dWÐõ¿º÷mÁ.E Õ³ÅÅŵ,ÄÝ=x{½|trM æmZ×Ó}¦õÍ‘C¤;»‘#u8Ÿ­p¦ÿ4Ñ“mëįòý>?|Ð:5i±Çš‘&æ“,tº ®Ô”„¤ûwG›[uÆÆƒ®öÙöö-¤cæÜsƒ æ°+,Ìg<ÊŒŽóã1ÇCbŽ{¤¡)è#•’$¸|¨®)˜«Ž9ï›™ùx:¾ré[2Æ }Y(‡©²²\ÐUA^½*¤ãFÆÜs³á+H¡ÚÃzò´.«Ë{ý޽_}q"ì:³07ûÙºÕ‹ªª*ì;xRS[—ùjvV¦·§+ŸÏŸ8i*]èá6­ ?‡Ã‘îÏUؾ둱éG³††ú9Žf„ð¨Ä¢—…_®]VXËasvìÆèä½ÉáÃ+óó›F‘={öNZZ^÷oó¦Móvî<'ùûÊÎ.þé§ë×Ow’šBJŠIjvG—¼¼Bø<?::íÖ­GmÝš53Nœˆ.-­jV®¤Äuw·Ý¿ÿ>üH¡ú®Yó;¼÷zTädÇ™t¡ß¦Us]/p÷:sê¨ß¦UÁ?_d®à»fÑòÕÎ –‡…ç56]>Ùô£šº!$%)n˺•g"ï†G%šèɆG5µ½có꥞k­'MM{˜¸ñóeôàœÐ;øû‡µ,”’’bNaÞ­´š?‰y_m"áNXìAFšI=A@@!„Ë•ýä“)„ðoÝz,ùºC‡ªÖÖÖ·ÌŸ!¥¥UÕÕuj™™/ðáG ÕG±X¬u›wíØ`k?.Œ½tø4!Äi®Û.?Ÿf«ÄÝ¡^1{¾ïzOª0?÷ùºÕ‹J‹_±Ùæô)´Û1QÏŸeìñß@©(/ÅžèÅ^yåJòˆZW®$=~\°té$%¥þ<ÿ—_b²²^BVôòr$„I¥c!útÌìó¤¤,˜c.ýQ 3ûB)0Çaâ žL.gäˆÃGŒºëóë½Äçz:_ߦgS¾úê!äÅ‹òsçîB¼¼¦DE=HMÍÕÑQY²d2uQdÁ‚÷ÿþûá­[ßßHJŠ%f³nn[®N))©Ú¹óœÚÒ¥“©ÊÍmbYYµŸß>ŸôïßÏç''gôÑ.W¶ªªÖÆfDLŒðÛXÎÎã¶l9]YYÛ¿?1ï+!áÙÅ‹÷ïÞÍðòr¤R¨qã†Ý¹“.¦‘ÔN’’ ˜ßj3:[NN‰ºzÓéñ§Ÿn”•½&„èêvw· ü]è¾>\ýÊ•$Q{)+ëåœ9xÒ)TŸ·~ó×k<]ùÿK,­lþŠ<ë¼`ù¥ðÓcÇ7ŸŒÝbœõŸ‘gç/»tA0­^eE¹ªš&!ä·“GèB™~ýjjªåää©Díô‰àŸ®'„$'Ä¢/@/ÓìÊJ\\&k©ª*:;[Bäå›þõ54Ô8rä*µ˜»»˜Í ]rï^&!äéÓJJM³_›šêmÚtŠ:½~]Gill¼s'}„áÿýÐÜ\ÇŽ3B«HMÍswŸ›‘””Õêû*,,{ó¦Q[[¹¨¨ÊÀ@íØ±«bIí ›Ñ•TT¸v\®\cc£šÚ@QTVV(/¯µ—Êʪ••¹øä#…ê^l͵ !õõuTг›˜mnu9²éLáp`ýêEÇC‚¸\Å}O6[x³ÿwÞ+]OÝo5ÑŽ-Ŧ ¿Øºg±‹²ÊàI3è—|:ÛÁT^ž•¸=ðÐÖ ^Nö& õõ:ºúGOþ ЋÕÕ5=÷Êb‘={"jkëÿýºñ$ù|¾”«±‘ÏáHÑ—lE¬Nx„>_èµr˜˜GkÖL//¯~ô(¯ºº^è2!!W Õ'L0²±1 ºØê[‹Í7ΰ°°<99ûÍ›F1¤w‚$Íèl::Ê……M{xØ?þwzza¿~œo¿]*I#Ûº—)Ô»Ñ9SÓ¯Šœ7tüí‚KJ:ºú§#n‹ZKWÏî ¾qû7TàâæáâæAÅÞü©ÀgS Ï¦@*¨¤²ÿÈY\€¾&%%×ÖÖøòå$Bˆžž*ÕO(#£ÐÜ\ÿöíÇ––ô’ÅÅ•C‡ªff¾°°0 #¡« •˜ølÚ4³ððXêFu!ª´´ª¨¨ÒÙÙ*$äªèK2 éé…ùù¥_}å&É;ºw/cÆ9EE•/ÆKØHIšÑ©¸\YW× 7n<¤þ”““)+«&„X[‹idIIå€ý‹Š*„î¥å‹‹+ñ G Õñ*óãqŒ;Ĉ‘£Û½®ñ{fBËG™ èÅ`˜àlRUUAÇCô „.ÿáGKèøõkÁ©„Ù«Ù}Í©S7-²Ù¶Í…ÍfUìßÿ!$4ô¶§ç{û÷RRréy$Ïž½ãááPUUûàÁsºPèêB>}{þü Û¶}Äã5Ö׿ٽ;œêœpçΓÁƒ-23 E­¸t©¼¼Œ”+,ìNËWé¾Pô eeÕ¯^Uª© HO/¼‘­6ÃÖœBê뛂èû³ÿ}}ù|>ljI£Ç;{ö®SeemJJ6sÏfLO/ÔÓL¥P-÷’žÞà'O ð 'XžžÁ=ý=^»º7ø_osäõÌêß?æ„÷ˆg¦På¥%H¡à»zíÚµP ¦ ñt,ÉÉmÖLufÉî½7›-ÐQsÙÒßu’>šP\\yõjÊ»=-›QPÒásä½Í¡iÖH}}5“#G¢„.¼b…ýµk)OŸvõÓ0Ô~ë)ÄÛèµW¡'tÛ¶¹ÔÖ6„‡ßC3ÚÑȧO_89Y()q… ­Ù_^^¶ëó'èå)®BH®S/Aùùu‹.˜Ý¤íh¤¨ñÇKK_chr¤P"..®e¡¥%ÆÏh‡É‚²rrtÌbŠ7rõ¯ tÌì«t;ú ›˜¥ãW/]˜cDý-èõÉæ°éXßp7Ô ZaŽGÕÐ ˜ƒïi†` e•Át\RüŠŽuõ uáI Gªw¿=M æmZ×Ó}¦õÍ‘C¤;»‘#u8Ÿ­p$z²mÝ‚øU¾ßç‡:@ÇÂOm‘{¬ib>ÉB§ êJMIHºw´¹Ugl<ø@àjŸm8 ¢ìÛ‚H¡:Œõäi]V—÷ú{¿úâDØufanö³u«UUU(( Øwðd³gʲ³2½=]ù|þÄISéB·iù9Žt®Âö]‡ŒŒMç8š54ÔÏq4#„„G%½,ürí²Â‚\›³cw0F' ºŠH¡zªYó;¼÷zTädÇ™t¡ß¦Us]/p÷:sê¨ß¦UÁ?ÿk Úß5‹–¯v^°<,ô8¯‘Gî úQM]‹’’·eÝÊ3‘wãMôdã©vl^½Ôs­õ¤©i7~¾Œœ³UJ*‚¹ê& FÛª­©¡ãa#Þ£ãüÜçB·S[[KÇ)Œí<ÍLŠœ>Xð¼q=£Ÿ“º²¶ ¿ÌÉ¢ã•è89Zð‹š†3gh/bô»JgÌÓ'++èã…Aú ‹Žú)ì‚î€Åb­Û¼k_àFæ¿ôñ±7æºBœæºÅÝi¶JÜݘœ\ !3fÏg&.î.vNv£6û¬xœšÜ²¢Û1Q{ü7Ìq4ûÒ{iyY ö<@ûà*Twac÷Á‘C»ÃÏžša ͺZú¬Z¸{ÿÏ–V65Õ¯-F l¹ŸÏ?y>šù´®Bu#ë7½ï6j2Bˆ¥•Í_‘g !—ÂOoÛla‹qÖR¯^L«WYQ®ª¦IùíäºP¦_¿ššj:Q;}¢i0Ùä„Xìs€öÁU(‘l͵ !õõuTг›˜mnu92ŒúÓ7àÀúՋއq¹Šûžl¶ðfÿï¼Wºž8ºßj¢[ªiÀ¤/¶îYìb§¬2x’à ºðã%ŸÎv0•—ç†G%n<´uƒ—“½IC}½Ž®þÑ“HØ6iŽ`p‡÷sÛqþ5~’àÂØ\×ÅB·ÃÏIe`|&u A?§ÁªtüüY:ë0çÈc úæ`ü'EEÁµ7%åÁšö/ƒÕu1çÔ€ÎfllØ›·v­CŸ½Bµ_äL”Ôœ7tüí‚KJ:ºú§#n‹ZKWÏî ¾qû7TàâæáâæAÅÞü©ÀgS Ï¦@:KØä,.tݶwA¦¨‡>ŸBUæãkH¡Ús¹R¨¶Á\Âk ² ŸPúã‡t¬­3”Ž lu;zúÄ–+( _—ÙïJ”×U•‚4£ÿ“$íQTˆƒ H¡Œ4YÈ® ï°ûކ†öR¨VÄÅŵ,ÄÝ=è­""Z™è-(è*Fâ@ %ÍýÞjSïrO÷™©) %ůR³:µ‘#u8Óæ8Ú4–‰žìƒ¬Ú6mAü*ßïóÃ4Ã}=°\KÞÞûE½tøðÊüü¦é ²³‹úéº$u<è±jÕ±lüáÃ+“’²~øáJ›¶øðʼ¼Bø<?::íÖ­Gbvr²¸xR¨N¶ØcÍHóI:]PWjJBÒý»£Í­:cãÁß>…нEÇc,ÆÓñ­è+tÜŸ«@ÇoÞFj`Î=—›óŒŽ54‡Ðqcλ¡Ãé¸ /‡Ž§ÏþˆŽ¯üq^ð!–ŒYÕ¿¿  ã&LÂÇ@BþþaÝ¡::ƒ†U}öìe›Ö #„p¹²Ÿ|2…þ­[E-9}ºR(@ Õé¬'O벺¼×ïØûÕ'ÂþõË/7ûÙºÕ‹ªª*ì;x²ÙÄ·ÙY™Þž®|>⤩t¡‡Û´‚üGº?Waû®CFƦsÍêç8šB£‹^~¹vYaA.‡ÍÙ±;ØtÌ8hêðá•‘‘ñ¦¦z\®lhè­¤¤ç„Áƒ½¼ a¥¦ 9oÐ …åËíåä¤kjê»V\\%j;¢\¸7ožÕ¾}­n¶¥ªªÚ3gþY¸Ð–J¡¼½g()qy¼ÆººúS§nææ–øú:³Ùl__g*eTT”_ºt’’RÿË/1YY/qÐ)TÏ3kÞÂc‡÷^Šœì8“.ôÛ´j®ëâî^gNõÛ´*øç‹ÿúÕå»fÑòÕÎ –‡…ç5ò¨ÂA?ª©kBR’ⶬ[y&ònxT¢‰žlxT"µÀŽÍ«—z®µž45íaâÆÏ—уs@G%„„„g/Þ§â’’ª;Ϩ-]:™J},xÿï¿Þºõøý÷¤¤š?µãæf}çΓèè4kënnÖßÿ§¨íˆ›>uª©‰É²[ÝlK99%êê¨ø§Ÿn”•½&„èêvw· üÝß?ìàAúz››ÛĨ¨©©¹::*K–L¦.e …êaX,ֺͻvl°µŸNÆÇÞ :|šâ4×m—ŸO³UâîÆP¯Î˜=ßw½'U˜Ÿû|ÝêE¥Å¯ØlγL!—²oÇD=–±Ç!¤¢¼{(BoäÝ»—Iyúô…’—*14Ô8rä*!$..ÓÝݦÙò††êÔ«÷îe¸ºŽ³Qø|rî\¬³³UJJN«›OE…ëáaÇåÊ566ª© ¾ÄØXKUUÑÙÙŠ"/ߟ@ ÕSÙØ}päÐîð³'„fXB³®–…>«îÞÿ³¥•MMõk‹…žø'ÏGsÛÚí`*/Ï JÜxhë/'{“†úz]ý£'ÿÀÂè %~PƒÐÐÛžžSìíG=~œßØØü¢Ð¯¿Þöð°st4©©i8vìZ»“•õêÙ³—ææC%ܬ¯¯3ŸÏçñø11iôãxgÏÞõñqª¬¬MIɦ›zýzêÖ­.uu þþa§NÝ\´ÈfÛ66›]TT±?·Ð6,OÏàžþŒ ¯] Ýü¯7b¤ÉŠ‹‹k9.”¥¥%F'o‡§‚¡VÊË7Ýd刺‘Çt€y£y#ïy–`¸¿ íé˜Ídù†ÃGÒ±¨A Ô5´Œ÷Ìpàà»zíÚµPzLð‚‚xÉÇ766œ5SY²{ïÍf ÐCeÄGD„ˆjèÐQÝghMfã»jgö‚±‹:U/¿ Õ¦±4A }Ãe¤8Ìy÷†½×êºS¦ˆƒ 4OÂN@ õ¶0— ô)AAW±B½-Ü­€>ECÃóß …êFš,dW€ªÍâââZâî^ûä †¹«­©¡ãAƒO3º½ cf?ªÚZÁºE/'3ç׫¯«,ÃØŽ‚‚ +zÑ«BÛ—+Ѹ®–ÙN5Á‡žÑý\NNžŽ_æÓ±$ý±)T¯Õò‰<É×õtŸ™š’PRü*5»¡S9R‡ã0mΣMc˜èÉ>ȪmÓįòý>¿·Ÿf ã›à‰@ Õ-öX3ÒÄ|’…NÔ•š’tÿîhs«ÎØxð@¤PÐݬ]ë€H¡z'ëÉÓº¬.ïõ;ö~õʼn°ëÌÂÜìgëV/ªªªPP°ïàIMm]æ«ÙY™Þž®|>⤩t¡‡Û´‚üGº?Waû®CFƦsÍêç8šB£‹^~¹vYaA.‡ÍÙ±;ØtÌ8hx'0ê …‚0kÞÂc‡÷^Šœì8“.ôÛ´j®ëâî^gNõÛ´*øç‹ÌU|×,Z¾ÚyÁò°Ðã¼Æ¦Ièvý¨¦®EIIŠÛ²nå™È»áQ‰Bä ‰IDAT&z²áQM³ÚíØ¼z©çZëISÓ&nü|ÙïW$laÎó§tÜØ(˜óîIZ2s}•Ø6'Æß¡cfŸ§!º‚ "rsžÑ±îPC:ûõG:ÖÑ,¯®¡%´ ‚»®•Uè˜Ùë%³ÏÓAŸ'fÿ*ô…ñ0G^·Àb±ÖmÞµ/pccc#]{Ói®!Äi®[Üݘf«ÄÝùÀÉ•2cö|º0?÷¹»‹“ݨÍ>+§&·¬èvLÔÿ s;ô^Z^V‚=Ð>¸ Õ]ØØ}päÐîð³'„fXB³®–…>«îÞÿ³¥•MMõk‹[.ÀçóOžæ*(b‡¼ \…êFÖoþzÿÞmôW–V6Ež%„\ ?=v¼m³…-ÆYÿI½z!”.¬¬(WUÓ$„üvò](Ó¯_MM5¨>ÑÔÿ 9!û }pJ$[smBH}}DßÏíìMÌÆŽ6·ºÙ4ºoÀõ« âr÷<ÙláÍþßy¯t=qt¿ÕD;¶TSÇ£/¶îYìb§¬2x’à ºðã%ŸÎv0•—ç†G%n<´uƒ—“½IC}½Ž®þÑ“’ÎL.++˜NXIe Lýûºª’ŽûÉÊ ]—Í|ä˜ý¥Ôßh ]æã¥Ÿ mOuu•Ð6” ƦÒÐdö€êmuAÎDIÍyCÇßþ ¸¤¤£«:ⶨµtõ éÎà·C.n.nTì½ÁŸ |6úl ¤âJ*ûœÅÁ@ %N›ÆÒ@ …¹\)Ta.Ꭵ§/è?¤8` Ðe«ªÓq^N+)º|Eyk*tii¡å:Cô[mƒ(ŠŠq@)”pFš,dW€ªÍâââZâî¼½^>.”‚¦ó¿6­ëé>ÓzŒæÈ!ÒÝÈ‘:œÏV8Óšèɶu âWù~Ÿ>è ƒˆ´ØcÍHóI:]PWjJBÒý»£Í­:cãÁWûl{ËÜ»MÇ*Ñ1sÎ;æ€éWÿ äˆ&ætl7ʼnŽo\»DÇC}­§= c6[0vs¢eæTÕ¯ñpcS:ÎxüP°}#Á›aÜã1r4>ꀪ#YOžÖeuy¯ß±÷«/N„]gæf?[·zQUU…‚€}O2BHvV¦·§+ŸÏŸ8i*]èá6­ ?‡Ã‘îÏUؾ둱éG³††ú9Žf„ð¨Ä¢—…_®]VXËasvì63 0ÁK·0kÞŠò²ëQ‘ÌB¿M«æº.¾xíÁ¼ùKý6­j¶J€ïšEËWÿ~%AØ^#*Üô㥩®&mÞñí–u+©´IZZ&<*1<*‘²có꥞k/^{øíñ­¼°çBõ`,kÝæ]û7666Ò…ñ±7æºBœæºÅÝi¶JÜݘœ\ !3fϧ ósŸ»»Ø9ÙÚì³âqjrËŠnÇDíñß0ÇÑìKï¥åe%ØóíƒyÝ…ÝGí?{Bh†%4ëjYè³jáîý?[ZÙÔT¿¶!dô#>Ÿò|4WA±­ÍST ´¼¼¬Tðaâ>Nÿ¾í(| Ãá#…¾fÿªšš×t¬ÀhCeE9ËÉsé˜Ù/JVNžŽs²ŸÒñk|Þ)Tï±~ó×k<]ùü¦„ÃÒÊæ¯È³Î –_ ?=v¼m³…-ÆYÿyÖyþ²KB™‰…ªš&!ä·“GèB™~ýjjªåää©Díô‰àŸ®'„$'Ä¢/@×366”d±µk‚‚®bw …êyl͵ !õõuTг›˜mnu92ŒúÓ7àÀúՋއq¹Šûžl¶ðfÿï¼Wºž8ºßj¢[ªé±µ/¶îYìb§¬2x’à ºðã%ŸÎv0•—ç†G%n<´uƒ—“½IC}½Ž®þÑ“à@t½´´ ñ `~O¤P=VäL”Ôœ7tüí‚KJ:ºú§#n‹ZKWÏð÷+ T¼qû7TàâæáâæAÅÞü©ÀgS Ï¦@*¨¤²ÿÈY\¤PâTæã—\Ç;aR›–·´²iuã÷Ì„–K2V“¨uEyQ˜GÇíè ЇR(ÌåH¡Ús @7"dl6OÏ`ì¤Pï’‘& ÙtgžžÁͲ(äOH¡º…¸¸¸–…¸»×>ùyÙtœ—“EÇÌÑž?K§cYY9:®¬¬ ã•鸾®–Ž™sá±9ÒB·S__GÇ22ýè8;KøÃMRŒmÊ1ƈª¬(£ãtÆ?|кs…ü )T¯²ØcÍ…¨$zt¥N•š’tÿn'm<ø@ Ž&@÷Ï¢ gÁ¸P"YOžÖeuy¯ß±÷«/N„]gæf?[·zQUU…‚€}Oþ{Ê’•éíéÊçó'NšJz¸M+ÈÏáp¤ûs¶ï:ddl:ÇѬ¡¡~Ž£!$<*±èeá—k—ärØœ»ƒ1:9R¨lÖ¼…Çï½9Ùq&]è·iÕ\׊ܽΜ:ê·iUðÏ™«ø®Y´|µó‚åa¡Çy<ªpgÐjêZ„”¤¸-ëVž‰¼•h¢'•H-°có꥞k­'MM{˜¸ñóeôàœbä¼$„°ˆà^aYñëf¯R¥<|°ý™Ò¥Ð1s^=ýát\[“OÇÏûåÐñ›†:޽y‡ŽG™ nûÆÿ+Ø>cN@æÁên4tTñµê#0Ž9R¨>Åb­Û¼kwÀ[û邹co>Mqšë¶ËϧÙ*qwc¨WgÌžï»Þ“N2Ö­^TZüŠÍæ<Ë|ܲ¢Û1QÏŸeìñß@©`dÐóžµk1g6À»û·»܃—pÎNhŸ1ïjV’’,8û3¯Ö$' ®Öt¿«PÕ‚zû êe^…b>Ç|_Œ'øzÊU¨„Û)øèv×®…jhXÐÉSDDˆ„+]5SY²{ïMìO¤PÝî÷@'¡S¨¶þäC €  ÷À H¡B …@ € B …@ € ) …è(¬Œ'±þ¿};¶a(*$6!PÀ¦(“øVHÉ 4Qf`g†“‚…È{Ý5.®ú²lHq 45Œó0Î F ÜÊç½?¦¥Á ¡ý¤Ÿ€ ñ ­_Ÿ›-äê8^¶ÒÕZm ¥ˆŸ¥”3N¸B“ø‘ ¡$€„Pé Ü•Š|üAÈIEND®B`‚jpilot-1.8.2/docs/jpilot-prefs-1.png0000664000175000017500000003040212320101153014143 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝyTgº?ð§»Ù7Œ€²EE *"Q\ˆ†›IDbHô†@Äq&“DsÏɦq Þ'¹ ãLƒc˜8jÜ¢A4?qAeE ‹¨6 ²ïMwýþ(Séô4ÐXßÏñxš·«Þ~jé/oW]‚“'OÒ€-_¾\/ýèHo±3ð^Þxã ½ô #}ÅÎo¼!ÔG=#Bx !¼†^C¯©leFÃ<`pŠCÄî C¼Ñ¹=;ô•º=V]»ê„'Ê=@ù·;ÁÀƒO]Ϻϋøƒ`F~Ò0°ÃÇa Á/H.€tÌ †a4ì^Ê= 6n×åv9Í,ÔŽÕ½°+󆱘ÊýI÷±›üþ#~$¥Ly]:QîGC»ÊÙÕ½4ŒÜfÕe#b$} v »WŸbB~zåA¨º‰•óK]' “qíò ®yvù1p$RØj6"Ž ‚®CùbÓjýX ¹ç>ÍÞ¿iT.ŽŽ‡Š€'‚¼£üyvðF:}ý€Ü¿ tœ¦O³Ë§ÉzZáÄðBx͈~¹eÉÀé«!vD›8Ü5 ^C¯!€×‚ÀkAà5„ ðBx !¼†^ÓþUZÞÞ^CP‡ŽnÝ*îà‰¢%½½½ *wvíZ‡¿ó=I_ª*çQgç˜á.D sózÃ/RÃ/~(+4„µa5È3´z´27¯×<ÁH AVccÁp— Åwßm Û2ÜUô“á?”ÂÚ0„äZ=Z}÷ÝVÍûpbäÏþ¯aü¤hl,îúÏð‹Ê amB ò ­­t)XËWiÔ1A±8/%e—ÿjl,Ê̾xq×À‹Ô,5õÓŒŒÄ‹/]Ú]Yy]óÄòµ©ëm€Åôu–æfñ‰[kjn©|öäÉm:6†ŒŒ°ÿNœØÊ>Pž¦Oë_³ÔÔO³²þÍý˜“óŸÔÔ¸tØ?Ê[d€{Å=xPtñ⮌Œ¤§SXxr ]iÞs¸w«Ö·‰îúp‰ÌŸÿü_êòhÌëèèssãÎΞ¤¤sµ‘™™ñË/Ïõðp’J‰¤wÇŽã üóÎr[[+©TÖÝݳoߥªªù~ll,¢¢žµµµ”J™½{/Þ½[§ùu‰(?ÿ‡3^²µua¦¥¥VCýåå'N|Vùñüù±º¯„~ ^GD==W¯ÈÕõ]ê4UUNN“ªª ÆŽõîw' #ôÿgšÁÁ¿gœ<¹{¬j2]׿V2™´££ÉÂbtgg‹DÒ=,w¸ï÷Œ­PSSRQqeöìÕ&& ÃÜ»w•a˜AZ-Ü»Uo“>… Ú$ŠŒ ÊÊ*Íȸ4922èïÿ‰ˆ"#ç55ulÝzˆaÈÒÒ”a"JN¾ÐÔÔND&8¬Y¼}û±ßö3ïÌ™›ÅÅU®®ö¯¿¾`Û¶#š_—ˆzz:ÌÌlˆH Œ5–mìînËÏ?ÞÕÕ"}}ÃFvÎÈø‡L&å† Üãààß§¦~úüóŸQjê§O?ýlmmIOOÇÔ©Ëœœ&Q{{C^Þ!€Ÿ¾}ûòò囈èÞ½«wïæ „Báüùët_‡&&>>¡)ì›0;{ogg³P(222™:õy'ù:ƒƒ¯¼ l?%%çëêJ‰ÈÏïe ["êèhº~ýhoo·±±é3Ï„››R×È’J%yy‡ÆŒq÷𘫹f†aÄââùó×^¼¸K"é266#¢ŽŽÆ¼¼ƒ CžÜ”*SS?õ𬯯ðô ´·wS^å•ÙïÕ«y‘•׿æ‰Õqu}æþýë“&-¼ÿº«ëŒææl»Ê•šúéäÉ‹Äâ[==íS¦<×ÚZ[[[ÚÓÓîã³ÌÉibÿjP¹E8Ê;ýv+\¿~TsI}]ÿ™S¦,51± "@àæ6‹mW¹h*ßeêööID'Oncßzl£ÂÛd ; ék$èå5v÷î³D”›[1‡môõuûè£} CDÔÞÞÍ6ÚÛ[ÅÄ,´²2—ÉdNN£úñövvt´ ŸMD¦Z_—ˆÜÝggdüÃÁÁÃÁÁÓÅe:û[®°ð¤‡ÇÏ––šüüãÁÁ낃/?RP7j075~lcãýüücìæ),<åî>ÛÕuFUÕ 6ljèÖ­3!!o›˜XH$ÚWÜoÙØ8µ·?bOŸþ;33k"jn~PPô¦BÊ Â¶[XØÎŸ¿îþýüÂÂS¯Qaaª‹Ëô ü*+¯Ý¼™ª¡‘ˆz{»ss÷»¸Ìpu¡µà‡oÛØ8ššZ99Mzð hÂ?vµ¸¹¸º>sÿ~>·ZT6‘¥¥½·÷b"ÊË;¨¼8Ê+s «WÝ"«\ÿZ'ViÜ8ŸK—vOœø¬X\4oޛܧ?uËØØ"(èͦ¦ê+W’§M{ž}|ýúlâô£•[„£¼S±íÜV¸~ý¨æ’úºþ[ZjG§Ü®nÑT¾ËTî9ê(¼M²Ã¾F‚­õÇÄ„ìÙs¾¬¬ÆÔÔ(>>JáY€¾ø"¥««G÷×8q³³ïÇ·ïÞÍ©¯¿óÌ3+ˆèáÊöö†[·ÒˆH"éÒZ6ÇÙy*ÙÚºvv¶°-•~~DôÔSSnÜø‘mtpð¸qãGgçicÇNÒ½seMׯíéi„mm”'P· O=5…ˆÆó)*ú‰mih¨œ9s%9;O+.>­¡‘ˆ._þö駃ŸzJ§ORÕÕ7Æ›FDÎÎSþù,û–kh¸Çö&ðäI#A–AÝ ܆ ‹4§ÜȻђ¡…2Œhø8 O,ö>½š!€×‚ÀkAà5„ ðÚÈ;;<Òá€A¢õj•‚ÃWùè.'‚UÂÇaà5„ ±8¯ßcºþA€a Y5”/‡^C¯!`ÄHLŒÕ{ŸAØÔ{Ðu‚þþž¡¡Ó…BH$*)©>p “a(!a­ò>õ(,Ìïĉ>ŸŠòðp\µjž‰‰ÈØØ¨¼¼æÛoÓõÒ¿ÂÂ~óMÌÿ˜´ys8û£³³}uõ#"Š‹;’°öÁƒ¶ýðá¬[·ïr«ãz“/ï£V|öÙQ­³¬_¿tÜ8»ÞÞÞÎΞ}û.UU5¨[®ÂÊÊGÉÉéZ{VYÕ ¤ ½xûíåß}—ÑØØÆmu;O@€WhètöñéÓ7²³_LúÌ3n/¼0‹ˆ!;–{ãÆ]uò ûÕW©íí]Däê:æõן‰„¶üë_绺z*TÞ ¶¶VkÖïÜyrpWMÉg_bbìºu»ôÕ³¡„àôénK–LÛ¹ódkk—P(öšo;¯ŽP(”Éd:N¼lÙ ßoòݾñÆÂ={ÎWTÔ …gg{½ô¯N\ÜöÁ7ßÄpåÛB¾<]ˆ23K +e2ÆÇÇ5&fÑÖ­‡ÔMÙï û·QôUFŸöÍÜÝ»ºzÛäUî<Ó§OX²Ä7>>µµµËÚÚìí·—wuInܸGD«Wÿå/?ÖÖ6;úþç6ïT6’ª…}ýõgü1·  ÒÇÇ5,læáÃY (oÐÆÆ¶ŽŽnOO§Û·kõ²Nyô§Ç4” õ=t(«µµ‹ˆd2&=½Xî©3gº[[›ÿ}&»[¼óÎr[[+©TÖÝýë`$!amZZÁäÉÎii7')O`ffüòËs=<œ¤RF"éÝ±ãø¦M+D";ÔŠ‹;bccõ¬­­¥TÊìÝ{ñîÝ:…nsso³%YY™76v°¥Þ¿_Ï6*Ͼys¸|ÿC¸:UP^i åqC•„„µ©©y¾¾nVVfÜ:ç<þ±¼\lgg5Àˆ(8xJHˆÃ0R©lÛ¶£ UiÝ(ÑÑ!ªUI~˜Ì·ú¼s§.::ÄÜܸ³³')éÜ£GmÜS¦¸1‰‰g>l!U]þ…æÌ™xýú…WW¹ó„†N?tè »ÿ·¶vüðESS“ŠŠÚ~Èf#µººÁßßãÊ•R??[[M¿´ä7èÝ»u¿û¿†‰Ÿ$†‚°ã¯ŠŠZnÚÛ[ÅÄ,´²2—ÉdNN£¹)¯^½­a__·>ÚÇ~ÂnoïV~!oogGG›ððÙDdaaªÜ-'%%/;»|Êç… }&Mrþ׿Îi˜½/úðñ_>¼tù$«n¥©¤¼ÎÌšååïïõå—?êX¡†Š‹«×¬y6'§\e¤ê²Q4W«û/!®O/¯±»wŸ%¢ÜÜòˆˆ9Ü×®U°“­Z5Wsy,;;ëææ…F•;¯¾:ÿàÁ¬¬¬Ò€¯W_ ŠOU×øá‡û›šÚE"ah茘˜øø“Dôí·é¯¾´t©ï÷d2µ;˜Âmjêèë0ä2”¬ªj˜0Á¡¼¼Fù)‰DJD CÁã–˜˜={Η•Õ˜šÅÇGqSvwK4O ™@@_|‘¢|ä˜ëV^]]s]]sNÎíÏ?Móìºëêê533a{055êééíwWÊú´N”×¹<Ï^ðûê«mm]¯a×®4/¯±sçNš?ßûë¯O(Ì¢ËFÑ\­2†a„BLÆ ró(oh­¥û·Ñ•wžªªGî¥böGwwG‡‡#;½v­bõê` ì([*•ýôSþ²eQl£XÜøÿ—BDO=5zÒ$g¶‘××·&$œ¦lÐ'ƒ¡\"“–v#"b޵µ …‚ ¦…j÷hss“¦¦" òÖ}‚üü;¡¡3Ø}žýäED½½R“Ç¿ «‚ƒOïææ¨¡Ú)S\Ø~œíØ=OÝìòýkõóÏÕÙÇ“‹‹Ïù„ÊuÒ§òXþþ/½4+>þdcc;׸eKD¿k°··.+«9r$k„1ÊUé¾Qt÷èQ«»»#ùùyªÌÍòr±ŸŸ;ÍšåYZúë/æ™3=ˆÈßß³¬¬F—òZG²ThT¹óœ>]1—Ýÿ­¬Ì""ÓÒ Ø§>l™4iMšä̈T×hffÌ> œÈ&ftB¡`ùò™çϲqqGââŽü’€*6èèѵjX‡C,11VùŸ¾:7”‘àõëwÞyg¹@ ‰D?ÿ\¥áÔðáÃÙï½ÖÚÚÅžÕÒq‚.¯Z5wË–—¥RYOOï_þrœa˜ôôâO>YÙÝ-‰‹;²oߥիçoÙ²R$Õ×·ìÜyJ] Lyå•yR©T"‘qW]¨œ]¾­+aÿþK«WÏŸ?™ˆ>lùî» ­³°T^ݲcÇãQFQÑýÿ;Cå:éSy¬˜˜––Î?üa)I¥ÌgŸµ°0‰Tü6åÆqצ¨¬!*j¡……‰P(8r$K¹*Ý7Š:ªÊÈŠ‰YÔÖÖuó¦êOˆû÷_މY¸xñ´ÎNIRÒ¯Wl6mZA$HLLc[4—WVVãææP_ß"ߨrçÉÏ¿kffüî»aìU/ii7òóï²OíÝ›ñÚkÁ+WΑJeÿùO††Æ·ÞzÎÔÔØÂ¤¾¾5)é<ÛøöÛËAwwoVViNŽŠïpSÞ DäææÀ K Áºu»RO§JFÞ}‡Gº'o•N›6ÞÉiÔ™37‡»ÁÕKV=<œ-š¶{÷™A*ið¼ùfȹs…uÚ'Õ7±8/$d•Ê÷—ƒ*P,ÎKIÙ¥h*ÊÇa¹nÞ¬|â°**jÍÍM4Ÿ“5@¶¶–fÃ’€š±Ù§÷Ëe åã0€ëß_.Úß]袱±Ý`ËŒ 1^C¯!À€ ñ×JŽ €Aúk'0^ÃHp ñÍ´@„àPÛ°aÑp—¿Bµ¯¿>;Ü%<™ú7Â@ƒ'ìÏæ A¿2áÄðB ˆXœ7Äg‚`X†øzi„ ðBx !#†¿UŸƒ€‘M@½ç Þ®ôðp\µjž‰‰ÈØØ¨¼¼æÛoÓ©_ßHNDaa~'Nh:=ÄÝ0»³sBCgøû{…ÛÅê‘îÅÑŸþôœ«ëkk³õëÿÉ5ZZš®]»xÔ(󦦎ݻÏtt<¾±Ù /ø×Ô4åä”/\è2U"‘2 ýøc.{ã]­s©œ !a-wƒž¯¾Jmoçã½ÇÀ0Ég_bb¬¿]Uo!øÆ ÷ì9_QQ' œíûÝP(\¶l†îÁ¡L÷Ù—-›±qc²†›±ÊW%“ɵ":w®°²²ž» #+,̯¤¤úÔ©ü¥K§?ÿ¼ß¡CWØv—³goQvvYzzãã¨>xqãÆd]æR7Á Ý*` ”GzÌA½… ••yccÉdÌýûõ\{h茙3Ý­­Í¿ÿ>“¤ŒcbnnÜÙÙ“”tîÑ£6"JHX›–V0y²ó„ cæñÂäß6ëÖ-&Wqï¼³ÜÖÖJ*•uw÷ìÛw©ªªaóæp‘HÄÍnccõ¬­­¥TÊìÝ{ñîÝ_o›°ys¸™™Éǯ`_EsUii7¢£CŽË™9ÓÝÊÊüàÁ+..v¾¾ã­­ÍÈ,(¨Ô¥­ë°¨¨J¹qêTWöÖÚ99å7†±i5j”…D"co!ÏòŒŒDmm:Î¥rÃ4ߪÏÑ[ž;wsóæð[·ª‹‹ïge•I¥ÇM­­Û·ÿàééµ€ ÁÈÈ ¬¬ÒŒŒ[AA“##ƒØ{HQmmóÑ£ÙDôÍ71Ê‘ñÊ+çÏef–NânIœœ|½së„ kÖoß~,.îˆüì‘‘óΜ¹Y\\åêjÿúë ä?ö*M©¥ªèè¶¶îíÛ¹¹9¾÷^ؾ}—ØÇÑÑ ÙÔZLÿØÚZ²¿]š›ÛG~|Û©SÇVÊO¶iS¸ƒƒõ_ÿzRǹTN@Ä|øá‹¦¦&µ?üÝÚŠÃðäÓ[¦¤äeg—O™â¼p¡Ï¤IÎÿú×㻵ææÞ&¢ŠŠZîž[^^cwï>KD¹¹ås¸®^½­¡/¯§Ø¹®^½½fÍ|¶ÑÞÞ*&f¡••¹L&sr­<—··³££Mxøl"²°0ÕØ¿öªrrʈèÞ½:##Qnn9û˜½¹µ.ÅèÑ´iãSR®Ê·lÛvÄÛÛeÅŠÙ_~™¢û\ >üpSS»H$ o wÛÐ#}~B]]s]]sNÎmù£Z‰”ˆ†Åéî®ÞÝ-ÑØ½Š#w11!{öœ/+«155ŠRž@  /¾HéêêÑi´UÅ-‹L&ëí•Ño—Kk1ýÓØØakkñèQÛ¨Q–ìHÓÈH8vì¨êê…)KK¬_¿Tǹ”' "öT*ûé§üeËô¶†Lo—ÈL™âÂÆ³³÷¦R©¼\ìççND³fy––Ö(OÐÛ+51QLçòòš™3=ˆÈßß“k477ijê ¢  o•³V?~ÊÍÍq Ui¥µ˜þ)*ºàED^……÷‰èé§Ÿ*+s¸¸Ø±|}'p§u.å ˆÈÌ̘}8‘;M 0ìc•ÿé«s½,˜òÊ+ó¤R©D"KNN×0åþý—cb.^<­³S’”tNy‚ôôâO>YÙÝ-‘?šöý÷—cc—„„L-)yÀÏ=|8û½÷ÂZ[» +¹FùÙ÷í»´zõü-[VŠD¢úú–;Oõ»*­´£µ‡;^#"##ûàý÷ÿCD))y±±‹¼š›;ví:KDÓ¦¿yóׂsíì¬z{¥--{öœgµÎ¥<½õÖs¦¦Æ&õõ­IIçû±úu»RO§J±±‰žööö—ßé×ÀWéæÍ+wì8ÖÓÓ;s 1±8/$d•Ê÷—ƒ*P,ÎKIÙ¥h*à/FFž¸¸ÃýȲþÍ`8ØìÓûå2A1ã‚A„ ðBx !dˆ¿Všp·90(C9 F‚Àk ƒ!¾™h€j6,îàWÁ¡öõ×g‡»€'SÿFÁa€¿Dл~e‰à5„ ±8oˆÏ"À° ñõÒAà5„ ðBF =~«>!#›€zÏA=_'˜°výúÝúíSÙ7ßÄüñIêž ó;qB§³K¡¡3üý=üýˆõK÷bX^¡¡ÓÙǧOßÈÎÖtE¡Öθ9.ô ™*‘H†~ü1—½m´¥¥éÚµ‹G2ojêØ½û wëwë×/7ή···³óñ­èÕÍ«²1!a-w§§¯¾JmoÇùN>ûcõøíªOàÅÒË–ÍÐ1w–-›±qc2wS$ „B¡L&ËVzW\IDATÔbˆhúô K–øÆÇ§¶¶vY[›½ýöò®. =ï\GòKš]–ž^Ä0äè8êƒ^ܸ1™ˆÂÂüJJªOÊ_ºtúóÏû:tEe?™™%ì §||\cbmÝzHݼê:àMëáI¢<úÓczŽcbnnÜÙÙ“”tîÑ£6"JHX›ššçëëfeeöý÷™ìûÜÑqTlìb"ææÍûK—ú*ŒõlÖ­[L$(.®âßyg¹­­•T*ëî~<ÜØ¼9\$mÞNDqqGll,¢¢žµµµ”J™½{/Þ½[ÇÍ»ys¸™™Éǯ`ßlêêLK+˜<Ù9-íFttȱc93gº[Y™ž:Õ5>>•ˆrrÊ7n S‚³»¼\ÌÝŸ^å¼:v|6ߪÏôŒŒ ÊÊ*Íȸ4922èïÿ‰mohhûì³£žžNQQ Ø÷ù+¯ž;WxùrÉœ9…BÅ[µ¿òJàùóE™™%“¸g““/°÷8ž0ÁaÍšàíÛÅÅùæ›.q"#ç9s³¸¸ÊÕÕþõ×ÈìUšRuµµÍGfQttH[[÷öíÇÜÜß{/lß¾Kìãèè…lj-F+û;w~é;wê¸{ GFÎkjêØºõÃ¥¥)Ã0:Ö__ߺmÛÑÀÀI¯¼ø·¿ý¤apKª`Ó¦pë¿þõ$û£­­ecc57·m©u¡–,ñ½q㮆yÕtÈ|øá‹¦¦&µ?üÍþb ƒ‚^^cwï>KD¹¹ås¸vv¸QQQkkûx˜àé9v×®3DtíZÅë¯+õóÛÏÕ«·×¬™Ï6ÚÛ[ÅÄ,´²2—ÉdNN£•_ÝÛÛÙÑÑ&<|6YX˜ö£Î«WossrʈèÞ½:##Qnn9û˜æh-f |}Ý>úhõ·wë^ÿµkìR¬Z5—mQ·Nä—TÞ¶mG¼½]V¬˜ýå—)}-{Ö,/¯/¿ü±¯3~øáþ¦¦v‘H:#&&$>þd_{ÐÑÐd~{äM"‘²Å1Ÿâ”\³rSLLÈž=çËÊjLMâ㣔'è‹/RººT¼×¥Îîn‰rÍ2™¬·W¦P¿Öb´ªªzäîîXZ*ftwwdÏ'ô‰šµ÷+uëD~I”–>X¿~)û¸±±ÃÖÖâÑ£¶Q£,Ù‘¯:þþž/¼à÷ÕW'ÚÚº4Ì«²‘} •Ê~ú)Ù²(-‹0ƒ~‰Ly¹ØÏψfÍò,-­Ñ0åíÛµÏ<ãND3gº«ê§fæL"ò÷÷äÍÍMšš:ˆ((È›kì핚˜<÷ªààÇO¹¹9ê¥Nu´£ÕéÓs­­ÍˆÈÊÊ,""0-­€}*?ÿNhè 6p--M•;WW?·ÒÊÊ7ê¾N¸ã¾¾ª«ÇqQÑý€/" ð*,¼Ï6nÙ¡0¯¿¿ÇK/ÍŠ?ÙØøkPªœWe£™™1û 0p"wšx+11VùŸ¾:×ÿHpÇŽ×ØEE÷ÿýïŒýû/ÇÄ,\¼xZg§$)霆¿ÿþrlì¢E‹¦ÞºUÝÓ#Uõì’©%%¸ó¹‡g¿÷^Xkk{"’mLO/þä“•ÝÝ’¸¸#ûö]Z½zþ–-+E"Q}}ËΧԽºîuª£µ­=äçß533~÷Ý0"†H–v#?ÿ.ûÔ—W­š»eËËR©¬§§÷/9Î0Œ|çêêwp°Ù´i%&ža[t_'síì¬z{¥--{öœgSRòbcx57wìÚu–ˆ,,LE"Åߦ11!--øÃR"’J™Ï>;ªr^uo½õœ©©±……I}}kRÒy­«žlëÖíRH==ž*ÄÆ&jxÚÛÛk(¿üN$J¥²™3Ý—,ñÝ±ãø½îPâU:¦Mïä4êÌ™›Ã]< Äâ¼U*ß#\ªL@±8/%e—B ©lT`X× nÜfii&зߦw- «›7+o"að±ãA½_.cX!øÅ}>ü1 âo‡€×‚ÀkA0 CüµÒdhÇ€ç†þÚ Œ€×0C|3-Ð!8Ô6lX4Ü%À¯‚Cíë¯Ïw O¦þ0‚Ãà û³9CÐï£L81¼†"ç ñ™C„ –!¾^!¼†^CÀˆ¡ÇoÕç `d`Pï9hè× ²7'"ggûêêGDwä£V°÷¬ ÐÐþþ@þ~Äúæwâ„®§ºþô§ç\]ÇX[›­_ÿOÍZŸ]°À'0p¢™™±T*Ûºõ°üS––¦k×.5ʼ©©c÷î3ìÖ.ô ™*‘H†~ü1—½4€áÏ>ý~¿´¡‡ w"ùë%‰hÙ²7&s7EÒ@(Êd²þ½„î!xî\aeeý矿¦µQó³³fy=ýôØÏ??.“Éìí­f ó+)©>u*éÒéÏ?ïwèÐ"ÊÎ.KO/brtõÁ/nܘ¬ë >åÑŸsÐÐCP¥„„µë×ïf;–3s¦»••ùÁƒW\\ì|}Ç[[›8YPPID66QQÏÚÚZJ¥ÌÞ½ïÞ­ã:Ù¼9ÜÌÌäãW°Ù:fŒuttˆ¹¹qggORÒ¹GÚØþÓÒ &OvNK»¢ùµÞyg¹­­•T*ëîîÙ·ïRUUÃæÍá"‘ˆÌêr·¹¢¢*5?2õ»ï2ØÔfDÞÔ©®ññ©D”“S¾qc‚ìxˆŒŒDmmZKJƒñ­úœL°­­{ûöc»wŸ}ó͆†¶íÛíÚuvåʹ쳑‘óΜ¹¹uëáääôÕ«çËÏwD*•rÙ”•UºuëáË—K##ƒ¸Éjk›?ûìhnîm­¯•œ|áÏ>wøûﯬY,ÿº$`Ÿ|ôÑ Ï:;Û.\8eË–ˆwß}ÞÉi”Â,¶¶–DÔÜÜ>z´¥üŒ›6…¿ÿþ ¸Ëðʈ ÊËÉ)#¢{÷ꌌD¹¹åìc;»ÇŸ½½mÂÃg‘……©†~¼¼ÆîÞ}–ˆrsË#"æpíW¯ÞÖñµìí­bbZY™Ëd2'§Ñz]JEš…‚Û·ëþóŸK³g{EE-`o^ªË1„mÛŽx{»¬X1ûË/SôV+€añ!(‘H‰ˆaH&“õöÊØÇÁãgúâ‹”®®Ý;d~{„°»[¢ãkÅÄ„ìÙs¾¬¬ÆÔÔ(>>ªßK4p íyyD”—WÁŽIå56vØÚZ}ƒˆÜÜå *(/ûù¹gf–ÌšåYZZÓ×277ijê ¢  o®±·WjbbÔÓÓÛûíæÍJoïq•“&9×Ô4)<[Tt? ÀëÔ©ü€¯ÂÂûl£‹‹]UUùúN¨®nÊj´RyY ¯OŒènß¾K«WÏß²e¥H$ª¯oÙ¹ó”º)÷￳pñâi’¤¤sýx­Ã‡³ß{/¬µµ«°°’;㜞^üÉ'+»»%ºܱã5"22±Þÿ?깋„T>{âD^ttÈK/Í–JeÉÉØÎ¹YRRòbcx57wìÚõøË #"æÚÙYõöJ[Z:÷ì9ßÅ<ìm×ZôÕ¹ 66QÃÓÞÞ^øò;ýÂ*Ð@,Î Y¥ò=Âå Ê‹óRRv)šÊF#þì0ð›}z¿\!#Æ`\0ˆ^C¯!À€ ñ×JÓ‰ Œ,CíF‚Àk ƒ!¾™h€j6,îàWÁ¡¦ùâub8&¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkAà5„ ðBx !¼†^C¯!€×‚ÀkFZ§‹ó† €a¡%7lX44u Allâp×0lpLx !¼†^C¯i9;ìíí54u † i>ý«ý:Á[·ÊõWÀÐÑå2g|^C¯!€×‚ÀkAà5íg‡ú'!amuu#•2·23îŠT@ ڶíYY™ýþ÷Kˆ˜ÌÌ’á®@B][[סCW^{-˜ Á1c¬££CÌÍ;;{’’Î=zÔFD kSSó|}ݬ¬Ì¾ÿ>óÆ{Ddccõ¬­­¥TÊìÝ{ñîݺa^xᘠ…û÷ÆŽÅ>ŽŒ ÊÊ*ݺõðåË¥‘‘AÜ4 mŸ}v4)éìÊ•s~™rÞ™37·n=œœœ¾zõüa¨x#Aj^^cwï>KD¹¹ås¸öÜÜÛDTQQkkkŶx{;;:Ú„‡Ï&" Óá(ž|A ®®v55Í ó›%)Û(1:tèÞ;=tèÐÁƒ£gà§ÁK^C¯!€×‚ÀkAàµÿ ©€û6E3–tIMEÕ #€ÒßbIEND®B`‚jpilot-1.8.2/docs/jpilot-prefs-8.png0000664000175000017500000002657412320101153014171 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝ{Xw¾?ðO"7/A@P¥Ð**X»*ÛÝŠ¶²Õ#JÕÚ>«íúœçœöˆháØv{vÛuËCÕ㪿íz©Bmë¼P/ˆPDA®õÊE¹'ùý18›&“É™÷ëññ¾Ì|óï ŸL˜·äÔ©Sd°Å‹¥ŒVv ïeÍš5Fé@ c•5kÖH1€Á ED ED ED EDÍ’³U©Tòl#‘Húf001'C?tö Äɽ¥íŒÕÖÎ]ÁüpžšÏvÌ †>m= ßå ¡T*UO!ž ;¼’E0=ý#=¶ê£›šª.]ÚûãÉçÎíº~ýÏš¥¥?r._¼¸GïG(=ý£ v_¼¸ûÒ¥½÷îåó¯¬:6m½8˜ÞnòäIÍÉ“;jk‹9¿{êT¢ÀƾpáÂWÌ¿“'w0 šëôjþù¥§”ýÿØ/srþ‘žž`H‡úÑ<"Fÿ©Ô‰½Úzá—_ž¶kש„„”>:VSÓÔw×;w¦2 ‹M26!ý/K_¿þíôé¯ÉdnJ¥òéÓ:ž5ËË/Nš4Ws94t}Ÿ’(,luv¶þôÓ7 ¹»¿(dœDUUÁèÑ>UU..¾zw¢T*$ã¿ò {›Y8u*‘]æZMèüë¤PÈ[[ÛÚŽlk{ÚÕÕa’„{½ˆÂöí¿fjÍ+¯ø;–ÝÜÜND …23³ˆYÁÑqØÚµá66CÚÚ:÷í;×ÐÐBDÉÉëÒÓóüý=ìí­½|ãÆ]"rr¾aÃ"IQQÛròº÷2ËII±ï¾»mŒ‹‹²°°ˆ‹‹"¢„„”°°)áá~J¥R.W$&¦ªŽMãÁÖÖÇùù©ÝÝC† }ñÅ(›DÔÝÝYTtº©©J"‘J¥–sæÄJ$’«W¿nk{"•ZXZZMºdøðѪýtt´\¿þ]{ûS‰Dêï9r¤«Î‡îìlµ¶ND‰dÄmý\¸ð•B!g/Øå°°·ÓÓ?Z²d¥§4qâܺº’ÎÎÖ©SíCDÏž5æå“HÈÙybEEÖâÅ[‰èîÝŸîÜÉ!’H¥ÒÐÐ Â'ÊÊÊÖÏï•‚‚4æ‡Ps6TÇö¶¶ ))9ÿða)¾nk+Óv8ryW^Þ1GÇ žž³ùǬT*kjŠBC×]¼¸§««}Èk"jmmÊËûF©$''/vMÎÆôô<=ƒëë+½¼‚GòÐÜÍÉÔ{zùwYsþùWÖÆÝýÅû÷ó}|æß¿Ÿïî>ýÉ“L;çÁJOÿhò䈚šâÎÎgS¦üª¹¹®®®´³ó™Ÿß¢Ñ£'é7Î#ÂâüS= ùù©üC8ÿl•qsu÷î#Í¢£C²³K/\( ™òå—§™öÆÆ–;S½¼FÇÄÌcŠàŠÁçÏߺ|¹$8ØG*Õý¤’’”›Â|5sëÖ#ÍÍívvCÕÆ&„qŠ`aaº›Û ãÇÞ»wíæÍô™3GD……§¬­‡Íûuuµ1O˜/¼ðkëaDôäɃ‚‚´·~ÙÏ)OÏYNN^OŸÖ^¿þóìÍo„—.\øÊÉÉÓÉÉËÍíæYN³Ÿ°°·U¯´]5ØØŒ ]ßÔtÿúõL,,üa„—ÜݧWUÝP*•ÌjÅÅgÂÃ7YYÙvuµõv®†ýìY³¬9jãÔ6!¶¶²ÐÐ ÷ï_/,üáùlsŽF"êîîÈÍ=ìæ6ÝÝï5ãÑ£Šáǵ=ÚçÁƒ[ãÇ2Óâá1ÓÝýÅû÷¯³ÓÂÙHDvv£|}Q^Þ7š»£9™†L¯¶]æœ+s;ÖïÒ¥½“&Í­©¹5gÎ[……§ž÷Æ}°† ± yëñãê+WN›¶„YÎÏÿ–©8zŒóˆ°´ýˆ±G!??•Hç_çÕ–··ËÞ½g‰(7·|ùòYl{nnUVÖÉdöÏ×ìùÓO«V…êœ5EEÕ«VÍÍÉ)¿qãŽÀ±©2Nll¼°Œˆ\]§ýÓXWWñ³»rÎF"ÊÊ:0qbؘ1‚^IUWß;v¹ºN½}û,ó#רx—éyìX¿‚‚´çÇÑÈ|ɳ;š“iÈôjÛeÃWfYX ‘ÉÜ‹ŠþoäH7KK+¶]ÛÁrs›FD#Gº*ÝcÇNe–ÛÚžè=Î#ÂÒvR±GAçÎ?[eªªÇw*/¯Õ¶¦Ê"QW—œiTy#AI”J¥T*Q(”––Rþ÷öìÉðöv™=Û'4Ô÷óÏOÒO0??uúôׯÉå]§O¢¹BpðKË¡½êÓÎÎÁÎÎÁÕuÚ™36¤"’JÙ Ñ<*ÿ: ¯76Þ»ÿú½{y³fý[¯âéÓ:;»Q̲ÎÙ }w„ߨQã>,uq™¬óý¬îîκºÒÆÆ{%%爨½½™y;Lu6Tp÷¦Z)4wGs2 ™^Tç_oãÆ\ºô¿s樎Éy°Ø“J"‘J¥Ï›9~ì…Ð~Dzh;©TÿÎ?{µ•‘qcùòY_~yº¹¹]*•„…ù^¸P¬P(ËËk'\¾\2c†Wi©ÖIDå嵞YY%AAÿz#¥¡¡yÂ犊ºÀ@/Íó´»[neeÙÙÙMD£F ++«}ð é¿ÿ;ZmlBç-R‡ñ55EDôàAá¨Qã™F—Éåå—˜eöºº««¹V¿w㛽ïÞíiü¸ZÈC?zTÁ,47×1ojëG*µ”Ë»4—ùÉdîÌgpµµElckëc‡qS¦¼üøñ!°:;[oÝú§‡Ç æKÎÙP›¶ y>Û·Æ1-œ‡€³‘ˆüü~ea1DõbM›šš"''÷#"Þ‹ˆxÏÓsvuu98ŒcÇÀ®ÌÙ¨Šsw4'SïéåÙe†Úüó¯ÌcäH×ÈÈx™ÌMçÞ8`MÚŽ‹ÿGLóÏV™üü;gÏnÞ¼8..jÛ¶å..#™7CÎ ™¿lΜÉGŽ\æéêèѬðð©[·F¹º:(=µøøñìØØˆ?\êì<œmdefmÛ¶Œùl$&fþ¶mËþýß_MIÉV›z^ ²×\ÎÎÞþþ¯Nº(??µ²2ÛÒr(󂔈üüÎÌL’J-,,†¯•H$¾¾ ¯\9`eeçìÿÖâ‚‚“iþþ|¿QU]]0~ü ö˱cý®]K™81ÌÏïWyyÇ~þùª££;rÎÆ_>(ÇîhN¦Ó«òÜ»Ì9ÿ<ó£=Î^=Ơ툰-ü?bBœÕ«­œœòœõ?§«¯úé§ß©5²øó/=|ø41±çSŽcÇ®0 7nÜe>6!¢´´<µÍ¿ý6çÛos˜åÿùŸïyƦþvX7æ· jjŠ++³4_©hìÙ+ðøÛaÓÂߋԕ+33“JJÎùùýÊÔc(Ìæo‡ý/K÷ƒàà5¦À€ƒ¿Qw Äý¢A1Hmþàñž iá=As£ãJpÐÅë@ß\—$ìJP÷#ƒn·„ÃËa5A5A5A5A5A5A5A5A5ýo¥US#èæÝcÆðŘ–A÷LKÛÿÂ矟Å_ÝÀ@fèËa¥v›6ýEÛVžžÎ|ðZ|ü²ÄÄ11ó ƒ6II|·ÂŒÔq‰šœ¼ÎG7psè}rgi‰DOä m…5kæïß¾²ò¡T*qu54ÿP?‹M?yRÏ8.0Æ/‚LÀÕöíÛ7oÞ¥m{{›¦¦V"R(”÷ï×Ñôé3gzïÙs†ˆÆŒ‘½õVxBBJròºôô<{{ë£G/3ÑSÖÖC^}¶§çh¹\ÙÕÕýé§ß)U²œ†oذ€HRTTÅ6nÞ¼X&³—ˇ]ªªjŒ‹‹²°°`òúR†·‰™+“ÙÉåʯ¿¾xçÎCfÃW_ ò÷GD»wŸyôè)9:[»6ÜÆfH[[ç¾}çZ´52¬¬,7lXpûöƒŒŒroZPeä"ÈT@¥RG°ô¹s7ã⢊‹«‹Šîgg—É劂‚{¯¿>ÛÞÞº¥¥=4tòÅ‹·™5îLõò3)‚ÑÑs?nݱã˜RIvvCÕkÅŠàóço]¾\ì#•öä <øããÇψhüx§U«Â>þøDBBJRRlBBOÊ_tôœ3gnU¹»Z½z›þW_ßœ˜˜ì³bEð_ÿzšˆ¢£C²³K/\( ™òå—Z‰ÈÆÆêw^¹r¥4+«Ä“ }À¿"³}ûöíÛ·3 $ QZZÞ'Ÿœ(+{0¾ßêÕóˆH¡Pdg—Íž=ÉÒÒ" À3'§ŒY37·‚ˆ*+ëd2{¦Åßßãôéë̃<{Ö¡Ö³·÷˜¼¼J"úé§ ¶qÔ(û-["ãã—ÿÛ¿…q¾úöõuŠz)..*&fžÝP¶ýÚµž®¼½]ž÷ï’“SAD¹¹å'ò5Ñ–-¿>¾` 3•àŽ;Ø…øx¡a>yøðINNÅ'ŸôdT_¼x{Ó¦EOž´Þ¾]ÝÚÚÉ4vuɉH©$Á)Ò%866|ÿþóeeµC‡Z~ñEŒæ  }öYZ{{§ÀÇ`†¤³±¬¬fÚ´ñùùw„<1€IáJP©TÆÇÇ3¥¹ÔiÊ7¦¨¹º:0/T‰¨©©¥¾¾9*ê%öµ0§ë×~å•éÌæªWmŒòòÚ€O" òbml¬?n%¢_¶±»[neÕóPXXÖó-gv¶«²²Úçý×N ¢3¼JKù‰èèѬÎÎîU«ÂWpèoÆyOyE,ü³>oÞ”+æÈåò®.ÅÁƒ™l{vv©“S`EE­öMéÈ‘¬7Þ˜ÿº\®èììþãñÁÈÑ£Yë׿>µ¤äBÑÓ~üøÕ-["››Û ï±™™EÛ¶-ëèèJHH9tèÒÊ•¡ññË,,,êëŸîÚõ³Ž“Óð­[—ÑîÝg˜–dzbcç/X0­­­kß¾s<ÏG{éÍ7CW® ûûß/œèOºƒ–´ý¶3“`ÂóBoóæ]&LíÕ/K¿þú솆æ³g …o q‚–øñüLoÅÇ/koïúî»\cu “AEðóÏÏkD´cÇq#ö „þEp̘@ü]0 v¸•ˆŠ ˆŠ ˆŠ ˆŠ ˆŠ ˆŠ ˆ‚–@Ô´¢fèßóß@AÛ·<=ßxcŽ••Å!–ååµd8 á’’bß}wŸFñ-ñ“J¥ …ÂÔ£€>gnAKš™J¤%}‰³19y]FFÁäÉ®7JJj4ӗ¦„‡û)•J¹\‘˜˜ÊÙƒˆ¹-if*‘–ô%ÎF"ª«{’šz•ˆ6lxY3})*jæÖ­Gš›ÛÙ›Zk¶À bnAKœ™JœéKœª_r¦/U¯Z57(È«³³[[ "æ´¤%S‰³.s뎎.f3}iÏž oo—Ù³}BC}?ÿü$g "æ´Ä™©Ä™¾ÄÙ¨Š3}iÔ¨aeeµ))ÙãÇ;jk€AÄÜ‚–83•8Ó—8Uq¦/ÅÄÌ·µµ’J%))ÙÌjš-0ˆ h Ì‚–t@Ј‚–@Ôp+-5A5A5A5A5A5A5-€¨!h DÍÜ‚–"#Ožt‰JÈWó ZZ´hºð"`VAKqqQqqQD”âè8líÚp›!mmûökhh!-ùJœk€˜UÐRBBJRRlBB óettHvvé… Å!!“££C¾üò4iÉWâ\ÄÀÜ‚–Ty{»ääTQnnùĉ.Ï9C—8Ö10· %N¿,Ë|5Z@³bnAKÝÝr+«žÊ^^^8ˆfÌð*-­}ÞȺı&ˆ¹-efmÛ¶¬££+!!åðá¬ØØù LkkëÚ·ï³g¾çš Z³… %´¢† %5ÜJ D ED ED ED ED ED ED AK jZQ3· %€^1· %€^1« %"JN^wâDN@À{{›o¾¹âææàï?nØ0›#G.Ü#¢áÃmcbæÊdvr¹òë¯/Þ¹óPÈVHb0Wf´ÄhiéøøãÎ[¶D:t‰Y^»v>S΢£çœ9s³¨¨ÊÝ}ÔêÕóS„m…$&ód†AK̶wï>´´´ÈÍ-g–z6÷õuŠz)..*&fžêÝùù·B€¹2à%v…BÑÝ­PÛ\"¡Ï>KkoïìÕV,$1˜s ZÒ©°°*,Ì—Yöðp¸’˜Ì•¹-étèÐ¥•+Cãã—YXXÔ×?ݵë![!‰ À\!h Ì‚–t@Ј‚–@Ôp+-5A5A5A5A5A5A5-€¨!h D AKú›?ß/<|jW—\©¤ï¿Ïen|½qã±cº»»ÛÚ:ºTUÕ¨¶Õ¦M‹ÿþ÷ MMzÞ ?))öÝw÷ч.ݹ3•ˆ"#OžÌëÕd2ûU«Âví:¥÷¾˜> ZÒÉ<‚–®^-Ë̼¥T’³óˆÿüÏßþá‰èòå’ÂÂ{ …ÒÏÏ=66bÇŽcª›L˜àÜÞÞ©wTÅT@"Z´h:[©©©¥µµÃËktEEá#ÔLSÍ#h‰½ýµ¥¥EKK³\Pp—Y(/¯aïÎÏš5kR~þÏìP32 ¦Lq#RîÞ}æÑ£§Ú†çä4|ÆD’¢¢*Õ=ݸqo\\”……E\\%$¤Òµk?Ïš5 EÀ4EМ‚–¶nrrö—¿¨¿´|ùeÿ7î¨5Nšä’‘qƒý²¶öqjêÕà`Ÿ+‚ÿú×ÓÚ†·bEðùó·._. ö‘JqçÚ„„”¤¤Ø„„ÕF!Cºsçáo~¤õˆ†i~EÆœ‚–S¾úêÌÒ¥/©6ΘáäýÍ7WÔÆæà0ìÉ“VöËk×*‰è§Ÿ*¼½]x†çí=&/¯gM3+xH·j^¨ˆi®ɼ‚–JKlܸý2(ÈëÕWÿüç“--íBýœ–áõ:ÞɈC0o¦¹4 %77fÁß|uuϧÀAAž¯½6ã‹/N55=Óì§±±yÄ;öË€O" ò*+«å^yy-»¦fŸÝÝr++ËÞiäHÛ††f»`ÆLs%hAKË—Ïvp°ïî–?}Ú¶ÿy¦166üéÓ¶wÞYHDr¹’ý —QVVëááT_ÿ”ùÒÉiøÖ­K‰$»wgð ïèѬõë_ŸZRò@¡PßÙÌÌ¢mÛ–utt%$¤’‡‡Siiðy0WZêWžž£#"¦íÝ{†ž¼kª‘¼õVø¹s…••M5€~€ ¥§²².22P&³7ʯ êM&³³µµF -õ?öï4LxØÔô .À@Јn¥¢†"¢†"¢†"¢†"¢†"¢†"¢† %5-€¨™[ÐRròºÒÒŸžÎ|ùûß/š2ÅuãÆÿ5Vÿ`fÌ0hÉÒÒÂÑqX}}³Lfocc¥yï)–¹-“Åñý÷?͙㓕U2~¼#Ó¾yób™Ì^.Wttü+ “ó! \3 ZÊË«øàƒ×ÒÓ¯y~òɉèè9LûÁƒ?2w±?ÞiÕª°?>¡í! _ ÓÁ´´¼«W˧Lq?ßÏÇÇõo;Ç-?+ Àó£zâz9ƒ–>üðOÐRGGwyy]TÔ¬Êʇíí]lû¨Qö±±óíím ÅèÑ#Ùv͇0|M,Ì0h‰ˆ.]ºýÁ¿ýôÓïTccÃ÷ï?_VV;t¨å_İíšaøš0X˜gÐÒ;7lØSYù‹dq«Ç[‰($Ä—x}±& L" Z:~üê–-‘ÍÍí……÷ø?2î‹5``BИ--耠%5-€¨áVZ j(‚ j(‚ j(‚ j(‚ j(‚ j(‚ jZQCЈš¡/‡•ÚmÚôm[yz:ðÁkññËWÄÄÌ3p ª’“×ÅÅE1ÿV¯6fφ°³úÞ{Kâã—mÞ¼ØÖÖJí»îîŽ[·FÅÇ/çW¬­­xUmÚ´˜½·ë«¯Íœé­÷ðØÍ““×1-~¸”Y`[´m®ÉIg?ŒÈÈ_¼\àßþ®ø‡!œs2HÉdö›6-6õ(LÉ ƒ–RŒÛ¡á"#KJªøáúÂ…/,YxìØÕï®^=÷ûïs îùù¹GF?ž­­‘5a‚s{{gSS 󥟟ÛÙ³7õ˜T*U(š›ïܙʿ!» ÿš:ûa,Z4ýäɽ»¢÷î8 UzÌÉ ÕÔÔÒÚÚáå5º¢¢N÷ÚæÈ ƒ–Ô¸»Z¿þå;SÛÛ;ß{oÉ•+¥ÙÙeÉÉë22 ¦Lq#RîÞ}æÑ£§D4|¸mLÌ\™ÌN.W~ýõÅ;w’–|¥°°)áá~J¥R.W$&¦jÛ–5uªû_¤QNNùþ©V]\F? ¢’’ê7Þ˜ÍÔ;ÎFÖ¬Y“òóf–GŒ°íêR0IÉÉë6nÜË´'%žûî>ÎÑ2»?y²kFÆÒÒvs–j?¯¾äï?ŽˆØ‰â|DÎ)Uí‡áè8líÚp›!mmûökhh‰‹‹²°°ˆ‹‹"¢„„µÎ5ûä$»³ÎÎ#Ö¯_@¤¼yóþÂ…þL£ê …MÕ1œÍ` œxšëkÎ?]»öó¬Y“PûUŸ-1?ND”ŸÿóÉ“×îßo¸x±(::¤ªª¾¥¥=;»ŒùnmíãÔÔ«ÁÁ>+Vÿõ¯§™žÏœ¹YTTåî>jõêy‰‰)ÚÆ5sëÖ#ÍÍíì­­µmËÉ옢ÿäɳ‘#íÔ\]ÝäyåJi` 'û —³‘5i’KFÆ fyêÔq……÷xf[s´DTW÷$5õ*Í™3™óúúæÄÄTÕ‰ÒöˆšSª)::$;»ôÂ…âÉÑÑ!_~y:!!%))–½~Wë\HŸªV¬>w®0+«dÖ¬IR)G&ƒ£©sJ5çDó'×úêóODwî<üÍo‚tέ¹2ͯȤ¥å}òɉ²²óçû1ïܱAK––ž99=g gÐÒéÓ×y‚–R˜'O^cZ22 d2Ûyó¦þãÙÕ®]«$¢Ÿ~ªðöcL ÖIDATvaZ|}]£¢^Š‹‹Š‰™§Z/4ÇPTT½jÕÜ  ¯ÎÎnþm…8p 38Ø'>~Ù˜12ööÔœ,‡aOž´2ËÓ¦»y“ï'Vs´ÌŽ Ü\s¢´m¢¹¦&oo—œœ "ÊÍ-Ÿ8‘c5µÎ…ô©ÊËË…Ù„ù_“£©Çœpž&?ñ4×çœÿÇ[ÔŸhÅÃ<ƒ–ÔX[[1×_ÖÖVlÏš$úì³´övõ4ǰgO†··ËìÙ>¡¡¾Ÿ~’g[FSS«LfÛÐÐ2b„›©Âª©iúÓŸÒˆh̘‘>>®<š,-¥..#ª«{òŽ•J¥T*Q(”––RÉóájŽ–ˆ::º47BM8q¾‡Ñ«Î9w–¿p4õÛAÎÀä'ç¡gˤó ZRó»ß…\¼x;55{ÍšùìOK@€'y••õDšV……õä%yx8ót8jÔ°²²Ú””l6ÙÛ[·î35Μé]Xx_í»Ì“°T*Y¼8àüùBžFVccóˆvD4q☲²¶½¡¡yÂg" ôbr4GËRÛœ“ÚDñl¢9¥šÊËk'ÑŒ^¥¥=«uwË­¬,9;çé“sg+*ê^|qLàß/–Úüè1'¤å0ù‰§¹>çüiÛÐÐÌ¿ËfÌ ƒ–Ø÷ïÝk8x0sæLï‘#mÿö·óJ¥rÚ´ñ úÿóŸ7ˆÈÉiøÖ­K‰$»wg0ë:tiåÊÐøøeõõOwíúAÛbbæÛÚZI¥’””l!Û¦¥å­_1s¦÷“'­{öôÜŽû×28nÚ´H"‘tttgg—æäôüZ%g#«¬¬ÖÃé¾þ©Ú ·ãdzcc#ZZÚo޼˾ˆÖ-Kçë>•‰¢Ý»Ïðo¢9¥šΊ¿`Á´¶¶®}ûÎ1™™EÛ¶-ëèè*)y Ö9OŸœ;{ôhÖúõS‹‹«;;åü»ÆP›=愸Nžxì©¥¹>çü{x8•–ê¨ûfL¤AKšŸZ.žž£#"¦íÝ{&.nÙ§ŸžP}³¯WôØ\u“¡C‡üñ+7oÞOFšRµñè×§……T.WLxùeµìi=Æ`\óÄ{ë­ðsç ++ê^u°AÐ’Ùª¬¬‹Œ ”Éì fÑcsÕM¶m‹Ò|©ÞÏãÑô‡?DÚÙYK$tà@¦©Æ0ˆÈdv¶¶ÖfY2èJ0<ü €?›SéÛ+A-€À­´@ÔP@ÔP@ÔP@ÔP@ÔP@ÔP@Ô´¢† %53 ZbÜÜvîüÏXáÆÅEÅÇ/Ûºu©§gÏ-‰ôèañ‡+q~÷÷¿ÿÕÿ¸29ù-m}"\I¸~W2Jâ’!ç˜ÈQÒ©OÞ”H$Û·oçYaÍšùG^Þ±ãø¶mGûâž1nn£Þ}÷Wd–”<¾UBBÊŽÇSSsV­ cZ ÉÖa•vì8^\\½d‰ú{œß=w®0!á¸æ}¤šáJ·n©ßšP©Tʹ¹p%fc…+qvn,ú…+õvN $•Jûú!Ø¥>}”AÍø÷dn¹}ûvžÌôiÐ’»»ã;ï,Ü¿ÿÇ£dF.‚Lä£>Zzÿý%{÷žeo©™D£í±/¾èÉykuÍ‘ðgúð‡+ñ—•´1U¸ÙØX½óÎ+W®”fe•PoN6öX¬]Î3Nþ]CŽ’QáåðöíÛ™¿Ìÿ:+ õqÐRQQÕܹ¾ì£™D£í±ââ¢v‰™wøð%Ín5G¢3ÓǸ®¤©Â•ˆhË–_Ÿ?_ÈT@êÍÉÆ þqòïr”ŒÂW‚;vì`âããnÕwAKûÛù®^=÷ÀLfCÍ$ÎÇb.L""¦.ZðÕWÿ§Ö-ÏH8Ë>¸ÿwù!\i€„+QYYÍ´iãóóï0ÏýÂO6æXè'ÿ®!GÉ(Œp%¨T*ããã™RÈÿy«Oƒ– Åž=2™ýŠsHK Ïc=[(“Ù1 >üø3}øÃ•ø¿Ë áJÚvÖTáJDtôhVgg÷ªUaÌ`z{²éÄ¿kÈQ2 ã¼'ȼ"Ö|fÖ¦Oƒ–ˆ¨«Kž”ôÏ÷ß_òÚk3µ¥Øð<Ö?ÿyã·¿©öÔª‰?Ó‡?\‰ó»Ÿ~ú&YZZ0 ÿñÿPíáJÚvÖTáJŒ#G.½ùfèÊ•a_}A“ç®!GɸD´d¬Ç20Ó§W®Äc ‡+‘a'›áç˜ç(é„ ¥>,3}záJ<r¸’'›»†%´f AK:àVZ j(‚ j(‚ j(‚ j(‚ j(‚ j(‚ jZQCЈš¹-·ç¸¸(æßW_­gÈxÉ8üILîîŽ[·FÅÇ/çW¬­­xU!‰I¸~Hb2.Õ éëx&UfÕdüŒ"’H$ñññDÚVX³fþþýç++J¥W×QF|hãöÌÞÿ]õ^ðÆJÆa²–~øáúÂ…/,Y¨B²zõÜï¿Ï-(¸çççpüx¶¶F–fÓÙ³7õ˜T*U(š› Ibb61VÓÉ“ÿzËEïÝ1pªô˜#Rþ|\6ªÉ\SJÌ-h©O#œª >'NäL°··ùæ›+nnþþㆠ³9rärAÁ=âÊxRí‡?‰ÉÅedqñ"*)©~ãÙL½ãld!‰IÛΚ*‰I­CNÅ­[—ªNˆ±NBD5‘ù-õi„“¦––Ž?>ááá¼eKä¡C—˜åµkç3çŸfìŽê¶üYKÕÕAAžW®”z²¯p9YHbÒÆTILjr*ªMˆ*CNBD5‘ù-õi„“&¦·»wZZZäæ–3Ël¨fìŽpdûÄÇ/3FÆÞB™³‘…$&mL•ĤÖIІœ„ˆj"³ Z껞5±(Šîn…Z‡œ±;,þ¬¥šš¦?ý)ˆÆŒéããÊÓ¨ IL$‰Is’ûâT4ä$DT™_ÐRŸF8õgì‹?k‰yâ•J%‹°wræld!‰IÛΚ*‰Is’ 9Ù éþ“QMd~AK}áÔ+ÚbwüIL›6-’H$ÝÙÙ¥99=¿kÉÙÈB“¶5Uç$ë}*²ÂùΠ6œ'!¢šT‰%h©?#œLIL<NÓ`<oT‚–ú¼çIL<HÓ`<Í>ª AK`¶´ n¥¢†"¢†"¢†"¢†"¢†"¢†"¢†"¢¦û—¥¦Ê F:ŠàûïGôÏ8LBÇߘ7¼'¢†"¢†"¢†"¢¦ãÓa__ïþ@_xÿýCoªŠ;§À %äלñrD ED ED ED EDÍÐðum’“×UW7)årå… Å—/ß6õˆ8 BJLL!"{{ë·ß~™Hyùr‰©G Eú\KKû±cWÞ|3Œ)‚ŽŽÃÖ® ·±ÒÖÖ¹oß¹††"JN^—žžçïïaoo}ôèå7îÑðá¶11se2;¹\ùõ×ïÜyhâ=s„÷¡?Ü¿ßèâ2‚YŽŽÉÎ.ݱãxVVitt»NccËΩûö]¶lÖó5çœ9ssÇŽãf®\j‚qƒàJú›··ËÞ½g‰(7·|ùòYl{nnUVÖÉdöL‹¯¯«³ó𨨗ˆÈÖv¨) æEúƒ»»CmíµF¥ò_vuÉ™F‰¤§E"¡Ï>Kkoïì!‚Xáå0ô9{{ëåËgÿøã-æËòòšÀÀ D4c†Wii-φ……Uaa¾Ì²‡‡s_Ä W‚Їâ⢔J¥\®¼x±˜ýhøðá¬ØØù LkkëÚ·ïÏæ‡]Z¹24>~™……E}ýÓ]»~è—Qƒ¸èÈñõõÆ]d`ª©ÉKKÛÃ_åðrD ED ED ED EDM÷¯È¹I?À ¥£¾ÿ~DÿŒÀ$tüž €yÃ{‚ j(‚ j(‚ j(‚ j(‚ j(‚ j(‚ j(‚ j(‚ j–MMgL=“‘(Õ"¿ÄÄòرcFïôرcß|óM_ô âÔwUï €¨¡€¨¡€¨¡€¨¡€¨ýÚÉ¿ÑÃ%³tIMEÕ  ˜ýÓIEND®B`‚jpilot-1.8.2/docs/jpilot-prefs-2.png0000664000175000017500000003543512320101153014157 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103Ð IDATxœíÝy\Ôvþ?ð÷ ‡\  (—ZP©"¢¢€­Õ¢Vð\«E­Òã[[×ïþ¶©®½vk·]¿º¶uÛZO<Û­G½ED(‡ˆ ‡ˆ‚ˆÀL~cœ|’É 3CÞÏG}ÄLòÉ'ŸÌ¼Í$c^²#GŽ@‡M›6M'í „H:+;oeÉ’%:i!„DÒUÙY²d‰\ýA!c…E!$iXB’†E!$iXB’fJœKQ”À:2™¬s:ƒ ýfèâƒÎ¼ñ͆4Å÷Žå›O.‚¨û!¾¸ÛÑ t¼ðñµ,~],¨#(Šb¿…Nìðë0ÙÀ*@"kEQo/nËu6æ­Ë¼å„¿Xðž ò}ð­,çbÄ÷“øs7öûG&“©ü8o0îbá¶#0Ÿ¸:ߦ‘Q`«˜ƒˆg‚Hìb§òöÒ¨L°—çž„ò-Ì­_|¨,ÆÌgWpáÕÙgÄX‘ÊQ8ˆxM‰=åa)úoZµ_ „[Öhuí–!îŽÈKEH"°J÷ûlçéhúY»D.£Ñêì*g‚ƈ{]…ï8b”CûH«í˜wp§NéRhhƒ†„©üMÏ\ !G¼&ˆ4þ¸¦“Ò#|sYx‘˨P{75ï:ÄÍ{&ˆo ¤‚}f¤‹ƒZÔD•k‹Ä»" ˆ\†¸ ðäÖwu¼5lì¸7Føj¹âQ—¾Íž¯ö.›Ú›š®®Å…çè¤Ad,Ä¿÷hxM°;ãû­BˆE°;ê‡Zxc!$iXB’f O"K:NWí „HXvB¨Cd+V$ê»!¤7xM!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iFö(-oo/}wA½ÜÜB}w!$–1Aoo/£¨/II1ø2ê‹à£Gýº ÝFEE&ó YZVx绲‡†0†Ð6CëZ––Õ ¨)‚õ«­ÍÒ]:(DßËM3?ü§ï^éÊÂhBØ ­?jýðC¼ð73c½1²aÃtü¿±«­½¡ï.¨Ñ•=4„Ñ0„>°ZÔÓa5Ò2¨3Áððÿ&XQ‘™’’d\U2jkoœ;·×;ß•=4„Ñ0„>°ZÔ¢;ÜÏ ‡¡õ!$’ñÁ}wá†Ö„HÆ[Ûϼ<<Ö¬™7{Ó¦ùÑÑ“V‰ˆð'N¯]©Ãþ „Œ‹6E05õCÝvB‹™3¯%KBwí:¿÷ƒv?ž-°ÊÔ©#‰Ó›7'kºuþ¥¦~xútâ™3‰gÏ~SRrE¸©üüS tpüµX½¾¾âðáøÊÊ\â«GŽl9³3œ>ý5ýßáÃñôwÆ_Xjê‡iiÿaþ˜žþSjêÆŽ4¨îÑù§R#åå7ΜI:}úë“'·fgéHSÂïœ3g’è µñŒéÇÒl6L§ëŽemm(•Tiiû‚zõ²ŠŽžhkk­PP?þx¦¸¸*66ÊÄÄ$66Š^€™Þ¸q_BÂò7ßü–§¦fúúºÙØXìÚuîÚµÛààÐ{ÅŠÉÔõë¥/¾èûöÛÛ $Ä',lEQ …rÓ¦dvø„„Ä@KKÓ¥K»e2puÅ·daá™!C&ê`ŒtçÎ,GÇ¡wîd99ykÝE)e2Ýó yƒž8rd3MZLìø«¥T*ššê¬¬ú"q*+óŠŠ.Œ󪹹EQ·o_¢(ª“†e„ô„?&º)‚MMuW®$·µ=63ë1jT”¥eohkkÉÉùµ¶öŽL&—ËMÇ[&“É.^üñÑ£z¹ÜÄÔÔ|øð—{õrd·óøqãÕ«››Èdr_߈>}œù¶ÈTœ'®ÇÆFåæ–å䔦¥(JX°`ܱc×srö}íµI›6íÛ¸qßÖ­Ë6nÜG¯Åžf«©iܼ9ÙÓÓ1:z]çÏ>q"ûüù¼  !ryûqŠ \¿~gCC³µu•þ37·6lJVV ý!äŽÆéÓ_+• út&$ä ¾ÉËû½ª*üýçZYÙòâLšBÑš™¹§_?w±Â}¦(ª¢"g„ågÎ$µ¶6›™Y@SSmfænŠ{{OfIâÌÔÔ=<‚««‹<=ƒûöuãîÎíÛ—Š‹Ódr¹|„âñv™;þ óquUZzeèÐÐÒÒ+®®#ëëËéù㕚úásÏ…WTä¶´<ôñy©¡áîÝ»ù--‡ ›êè8D»>ƒøc…+W’…»¤éøóñyÑÜÜ d2™›Ûhz>q×RS?rdÓ´ië™™*“޼a@WE0;;ÕÅåùAƒüKJ._¿žø'ÈÎ>baÑsâÄ· µõý7ÃóÏÏ´°è õõåYY)ãÇ¿þl;G<<‚ìí=<¨¼zõ ý·7sæ•’’yñb¡shè°¡C¿ýöx{;;8ôŠŠVV=ÄïHFÆM(*ºkkkCÏñôtJJ:—/½öZû¯µsrÊ-š˜ž^xíZ±JÔêÕËñáÃûô4w4BBÞ`ŸÑ𠈕•í„ 1¥¥W³³y2ÚÄC@˜ mm32~vqéê:Ô¹wïf¯^=zØ8:-/¿1h?dgÿâæèê:ª´ô*EQOzK˜ ÖÖ}½½'@fænîîäæ [innÕÚúˆ^ž;G<¾]&Ž¿Ú…‰ vöì7C†L¬¨¸1nÜëÌ·?¾ƒeff5~üëuue.l1âezúÊ•ýtÅÑ¢Ä#Âàûˆ1GáÊ•dá.i:þÜíÓgw>ß®YZöž0aEmméÕ«è"È÷Îá£ò1éÈtUkjJüüf€³óˆœœßè™wïæ…‡¿GO›™YÒÕ]¹’ÜÒòP&“76ÞWiçÞ½¢‡krs@kk³ÀÙ§ªª¾ªª>=ýæÇ/¤çÈdðÙg)ÍÍ-šîHk«( ¸çòìC“”tÔËËiìØ¡&xoÙr´½;,<À? ýûûÀ€ÃnÜø•žC<Ä™pþü÷ƒ‡ôï/ê›TYÙµF€³óð?þ8NäjjnÓ-0,++åÉæ3é? 쎽½Çµk‡œG89 å›#ß.w|a†‰‰™­­kNÎo}ú¸˜šš3óù–‹ËèÓÇY©l0`8=ýèQ½Ö} ß›Š9 j»Ô‘ñgãÛ5gçá`këúèу'K’ß9"u°Ã]}MðÊ•ä‘#gÙÙ T(ZýõcîÁÁKLMÕŸ»1g^>>.¹¹w( œíêêÒ¯fgß ñþí·kàææP\\mm ssÓ––6•ia7oÞ5ÊýÂ…|??wffß¾= *ËËkÿö·*ýQëÁƒ»ÖÖ}éiµ£¢D#}ûªªÊwrzNí…›¶¶–»wókjJòòN@ss}9 €¸"¹5v¥àÿÜšš’ÒÒ«%%™AA‹‰stˆ=þZ8ÐïìÙ·Le>ñ`ÉåíŸ2™L.—›<™­þ|‡ˆÿˆ´ã{S±‚p—4ÿž=ëêÊíìŠÜfë¬A ¿èk‹J¥Bøô°ƒoÝ\"µ³TQ‘ååÙ}û¢g:9=WXx–žfNS[[›ésõ’’Ln;^·o·Ï¯«+Ø"Sq&Mò‰Ÿ7{Μ±Û·Ÿ¤gîØqÖÝÝ!.nö‡Λ1£ýïÉ“'s>ø`6}?„=-l×®ó“'X¿>ÒÅÅ®¥EAÏŒŽýàƒÙùËŒ}ûÒTú#¬¥¥éÆÿ2Mˆ£!—›*­ô4߀<íÌ;xˆ3`ذ—LLÌÄü•[Q‘coï¾*<ü½ðð÷<<Æ–•e€Ý@¦ÌÂÄ™lÄÝijª³³èãóB]]9ßñøv™¦2þ èÓÇ9""ÎÖÖEíÞu°Ã\|G„!üCÓñ÷ô ÎÉù­¥¥ (Š*.Πk–ø]#¾s¬¬úÔÕÝ€Š ÂÛ‰ý1éÈ´>üåë×SNJP*VV¶cÆ,äësæõÿGøñðasbâQ•™û÷§ïߟΦo ³'€¾ wïÖmÞ¼_¡Púù¹{y9Ñ3ÿþ÷C|ýásúô×2™L&“èÏÜš$ކ›ÛèS§LMÍCBÞদš3gÀß.=‡xˆ3Ÿ¼4-+ëpVVН¯Ð/Ëʲ ÍüqÀ€a—/ï<8dذ—23÷ܺu±_?7¦çÄ™Ïn”°;W¯îomm ||^¤ãÎo—‰ã/0>ZÿîÓa>|G„™#üCÓñwrzN¡h½xñŠ¢”JE¿~ôvÅïñããóâåËûÌÍ­‡pw„ý1éÈðß‹ñ—¿Ì°¶¶ÉàûïOÞºU%¼0þÛáN…ÿvX¿ ­?j‰ù·ÃFÿ;Á.ðÙgªç}\]Ù„ï?›3¬ŠchýA‰d¼EPÿOì~ÏDH‚ðš Žá5ÁN…×õËÐú£Vw~ž B鄚3AƒŠ¸4üÓ@†ABR¶jUxGïQé18h ü:Œê¶è\aXB’†E!$iXB’†E!$iÆúo‡‘dáϵ¿†!Â"ˆŒþ q‰¹L„_‡B’†E!d@**2µ>§ÓA„a ›×•›Ã"ˆ’4,‚!IÃ"ˆ2‰‰+tÞ&A„q + Îë Á®°|Õª—™?¾óÎÔ„„×Ŭ8nÜÐøø¹qqsþú×™óçÓ¹ƒ±±Qô_½‚ž 7A¯ââb·y󟆠uWµ[‘mÊ”‘ëÖE®_k×FjÔ2³¼„×Ù“ˆ­;Ðñvt2þÝ»öé¶⥻ˆ©©I¿~=««lmm,-Í•JJí*¡¡Ã¿øâHmm#xx8Êd2Š¢6nÜG/°uë2fšæâÒ÷í·§|÷ÝÉü|mR¨Å“ËåJ¥’ïÕ©SGþùÏÛé}ܼ9Y£–5]^üº"[ž:uäáê?ÑÞ_ñí íp«^b⊘˜$4ŽE°‹œ;—<ôСKãÆ =>oР~0r¤[` WRÒ1èßßöõ×ÃØE-<Üw×®ót€¢¢»Â›puí÷Ö[/~÷Ýïùù*/YX˜Í;ÖÃÃQ¡ Z[Û>ùä EQýúõ\º4ÌÒÒìÑ£–mÛNÜ¿ßÈ^…øjBÂò£G³ž{ÎùèÑk––=†Q¥P(7mzZ_bc£,,Ì×­‹¤÷%!a9;Õzõ²ŠŽžhkk­PP?þx¦¸ø™(gfùbû˜ué~úø¸P‰‰ÇîÝ{@ì wcc£LLLè“ë÷±÷÷úõî2M©ôV¥â. bÓU½#Â"ØE23o®Y3+5õr@€ÇÇX°`de•Ì;ÖÆÆ¢±±y„çΜùƒ½Š³³­FŒU«^þæ›ãÜ  Œ««kŠßCQ`m݃þô.X0>--ÿôéÜñãŸ[°`ü¿þõ볫_½{·>9ù"üóŸÑë×ïlhh¶¶îÁ^qãÆ}ÜST•Î;v='玫kß×^›´iyɨ¨@bû"UVÖ%'_ :~ðW_ýJ\†»ÜÎ3û»dÉ$îòõV¥â.‹ÔÙðš`yü¸­°ðnTTPQQUss+=S©T¦¥Œ;ÄÔÔÄÏÏ#=½€½ ûSõÉ' 6‘“sgâDo¹\Æ}É××í×_¯Ò >|ø˜žéå唞~22 vRY…ïÕK—n>Ù\Ù¢E<[ZÚD ÀSÞÞÎQQcbc£¢£' 8­Û§]¾\D÷ÖËKu×Â#@cö—8†"{KÜe‘ã€:ž v³gÿX³æ•O>9ÈžyæÌ+WN­¯oú㲦¦öK¥¥ÕîîŽôÕ½ääôääô­[— ´ÿí·¿¿ù拯½6ñûïORê/9>%¼°Ê«·W𤤣^^NcÇ0Á{Ë–Ãâ7'“ÁgŸ¥47·/¦uûZf… ÷–¸Ë"Çu6<ì:ÅÅU11I*—öjk««¢¢Æ¨|€ÔÔ+óæ;8ô¢ÿhff"ܾR©LJ:jkk3þ8•—®^½5eÊHúæ2sÒQXXáïï£G{æçWª¬"ü*ôíÛ³  rß¾4úú¦xÙÙwBB¼éi77¾Å´nŸæççž„ÎÓˆûØÖ¦07'œÇP ·ìvˆ»,r$&®àþ§«ÆñLPÿÒÒòííýoÞTý¬ææÞÙ·/mñâIÖÖæ­­ÊÖÖ¶½{Ó„›jmUlÝúßU«^ž5+pÿþtfþÎççÍ7W¡P¶´´}úéAŠ¢~þùü²e¡“'xô¨uÛ¶*M ¿ ÑÑ¡VVær¹lß>5½R±cÇÙW_7ÛÄĤºúÁ—_þB\Lëöiöö½Ö¯%&å[†¸'Oæ|ðÁìÇ[U.kÇpíÚHú¦3··ìvˆ»,rÄÄ$©T=Þ*QŸ;ŒÏnëls玽¿áøñl}wÄ8ð½'{ô0ûôÓWß}÷; ÝFÆ¢¢"3,lñ3uX+*2SR’T q¦ ü:¬gqq³ÝÝΞUý.Œ4õÁQ¿ÿŽ‘tgtíÓùÏeðë°žÅÇïÕwº‰uëv2ÓxØ]uÆñL!$iXB’†E!d@ºø±Ò€×B¥ëŽ‚g‚!IÃ3Ad|º8 uoX‘‘Yµ*\ß]@Ý Add¦O×}Ê’2,‚Èø¤¤tâ#6‘ñÚ²å¸÷U°"£”W®ÉÃÂücƒ–5âÝa„¤aDIA„¤nôðpX³fV\ÜìM›æGGO¹–pò,7Ô5!ayllT\Üœuë"E>Ý—/OvåÊi¶¶6ôôŒ^* ?Ÿˆi‡½Qá@[â¸Y[÷xï½—ãâf¿ûî4++s1[ÔUω4¶µµY¹rßbÿü Rö«Îá&®£¤vþõ§3ÙÓ\>®ä^Í„ÙÓ " ^†÷ß{ºðÌÉ0#^š‡´Ï\±ÆŸ÷éŠáÁ%KBwí:¿÷ƒv‰|à¨\.×"µvãÆ}ññ{º´xqˆ˜ML:’;ßÝÝ¡¹¹…‰Ç6ÌåÆRM{ÂÅ´ÃÞ(± â¸EDøçå•ÅÇïÍÍ-{ùe¡ªóž‰¦'jk›š{z:;{BBµè#o;‰_=Éžïÿ­„õáð øõ ,~ýéüƒÇàÐqHú>\Û>gñ28t L ÷ƒØýîÝaËÚÚ&P*©ÒÒjz&1ª•»tiý,¹wßfkk£P(?nÙ±ãì;5›Ëͽ3ÔåíÔ¢€É“eV råÊ-zºwo«ÖV%Hfoß+&f2€,'ç³0w/fÎ hiiûå—«0j”ÛèÑ^IIǘvØ!¶ÀL§¤drc‹‰ã6|¸ë_¤@zzáŸÿ±gÏâ è¼ç »àË—o ¹yS5|ùÞ]07‡Þ}JŠáÝ@Q0nâÓª«àýUPY¦&ðá§à; þù)XXBÌ;GÃàŸ‰OÛ™9Z[aæäöÕ™éwþRöÃ? óaõ[pðqjïƒcú`ÏpÕW€Ë“S¿ñ“xA]Ãp‹à‰×cc£rsËrrJÓÒ  %ðGµ2á°K—†Ñs¶o?UW÷ ²_´(ä£ðl§¿¿geeˆÈÛ%†êâtôè5zzøðÙÙ%ôôüùÁ¿ÿ~ƒN^gÂ0¹{qñbaLÌdº”NK+`·£bËLËårnl1qÜlm­éÊX_ÿ°Ok¾AÐyÏi:‰¦ .wÅS'`â“B²)^] Qóaß.P(Ûg~¸¢WÀø‰{Ö¼ŽÂôHX¹¢½¦$ÃÌÙÏ´sðŒp{Zà˜iElŽƒÚ°µƒÝ?Á\¡ôSX¼fN†à˜0 fF©Yûü™“¡¥ÊJá?ø,]ƒa¸gá))™|   <4tØk¯M¢gòEµ2á°Œ¾}mV¯Žˆ‹›³xqˆ³s_ Ñ×Ǻ}û)‘·Kdg׳¾¾‰ž1bàõëí%ÀË«ff‘Êêܽ¨¬¬kkSº¸ØYX˜{z:Þ¸Q¢Ò1¶˜8n"uRÏu\W×dggÃòLzR/]„—"¦ÍxºÀù3ðÙF˜9Þêë<¼ÀÜ òr¡±._‚0ÕvˆLLaælØ¿ZZ࿇a:}^Nyxg5ìI…À øñ[xÕÓùÁ/§aË×ðéF¡m¡®d¸g‚PUU_UUŸž~óãÛÿÚå‹jå†Ã.[öÝw¿TöèaúÅÑ[ážÖÑøòv…™šÊœz—•1ß¾ ¿é%îEzza` Wee}VVI[›’Ó1¶˜;nµµM¶¶V÷ï7öîmMŸ ë½ç|4JLnm…[7aˆ÷Óîüi?Øô|ffÄ,HIw/ ffªíð™»–/{G;zõ°¶‚ƆöÆ5…åÓ…¹Ã wˆ˜!œk°Ã`õÛâ÷u.Ã=ôñq¡ßÓÎÎvÌçV|T«¥¥y]]Œ¯î­ý,µy»Ä\Úšš†Þ½­`ðàþ¬Ö*™\f&q/22 <ƒ‚Ó't*í°7ÊžæÆÇíÆRú^m` WvvûýЏ¸9ì]褞ƒŽ"€ûô±º¿Ae­Œ4ôôþðk*À‘COgN…?´Og]iŸˆ˜GÁÁ½0=’ÐŽyxôˆ0ݸ „Ï6>ý.ªuïÞ‹«WG444gg—(•œ]¨ÍÛ%æÒTº¹ÙWW?Pù&¸k×ù+^ ž—WÎtƒ¸uuM÷î58:ö¦+ˆJ;ìªt@%¶˜8n))™+V„zÕ×7%%+«&Ïޒ줞ƒŽ"€ÝÜìóó+TÖ:yìéAX·Þ]?üÆŒ{z¿uÃGðÁÿƒˆ0hm×AðïŸÁußl¯}*íüé5˜VVpðØ3ÓðÊl(½ ~£Û—ü`3Äþvÿ0plú{ûüßÃÆu`fææðñO[ž9è±üðÓö9!~--í§/óê,˜;¬Žáá#¾ùæXlììO>9ÐÒÒÖÁÅ·£]lñˆ{;v]‹- SiGWÀ¯¿vâDvQQ$KÿÛáá°ë0XZª][ ñílŽ×g~õ‚ Ä?6$q땘ÜaÃ=4.EEw#"ümmm6nÔÍm?‘íÄÅÍnnn=x0CÓö¯_/¹~ý™9]ÜsØÚZ[YYU©Ì?t\7í‹l'" l¬aÕ_u³Qd °êÌ—_éú~l±NNkkêexU&\AFÏpoŒ „PÀ"ˆ’4ü:ŒŒ’ÖOÐDHAd|¶lÑÑ „ðë02:aaóôÝd ´K"Ä3Ad|𷫈Kë4j<DIA„©¨ÈÔúœN;XB†¥‹/ûbDIA„¤aDÄÄ:o‹ BÈ8ÐPçuÐp'èáá0oÞ8ss33ÓÂÂÊï¿?)f­µk#â¹Ï¶KHX^^^#—Ë åŽg¹kbDDø>,ö¦ÕÊ•Ó~øátmmcBÂò²²J¡ NŸÎ=wî‘-è–øÎO™22 ÀC&“mÚ´=ÝÁm©ŒüÖ­ËÞ~{ðeú ÈÌÌä))—32 mmm- Qû ™wÞyÉÕµ_Ïžo¾ùoá™O6ðùç©6À›o¾8`€][[Û£GO ­­{,_>¹wo˺º¦o¾9Fgg¢NÅ®}‰‰+bbtöï& ·.YúÝw¿UÉå2á¤$†Ö¹Ãàãã²hQˆÀ“©¦N)²Ž¨dÓÄÆÆâ7^ ÎËÓ´‡'¾óS§ŽüóŸ·Ó’fOwƶ€ÿ(ÓÅ޾ך5³22 ™Üanä&Û‰Ù%%ÕL²ŠÀL eËœ;—G?‡|Ø0×eËÂãã÷À“Èæ_~¹úâ‹Ï¿ü²?VJœ‰:÷ìO‡uÐp‹`ççç—÷ë׋žæ®«’KìƒAÌhllÞ³çÂÂ…!t$¦› ñ FQ”B¡Ü´é™Ÿ°<55Ó××ÍÆÆb×®s×®Ý&¶¬ÒyfuânZX˜¯[¹qã>ö4_ß,,ÌæÎëáá¨PP­­mŸ|rpýúHâ¶4:Ê ++óêêö\¾Üa¶7I”•u›ž(,¬`’툑Í"sœ‘®èð¼Ëp‹`çåÁ¤q×UÉÀåëAÌVZZãäÔûI „tcb³QQë×ïlhhfGŒ2jj7oNöôtŒŽžDAµ¾žFÀ¸wIDAT áÝ³Ë Œ««kŠßCQ`m݃¢(¾mñ!eˆ255éÛ·ç矧Ðsør‡µE­YóJæEEw÷ï¿ØÐÐÌ~í…|¯]+¦§‰‘Í"sœ‘Q0Ü"˜’’yñb¡shè°¡C¿ýöx{;;8ôŠŠVVjr‡—- µ±±T*•ŽŽ}6eiiÞ»·õ§Ÿ¹._7hì b>^^Nß|s22 çÌ h6'§lÑ¢‰éé…ÌÇ’-#ã&ݵµµh™HüñõÍ××míÚt¬ÚÇ §&exrùüónQQAŸ}vøs‡µ³fÍÏuuMLäS¦Œ\¶,ì‹/ž^m=Ú+ Àëï?$°:êN ·B׿‡‡Ÿ:Õï믳._7„¹ºÚUVÖ«ÌdÇì›MJ:êåå4vìÐ ¼·l9¬²zk«‚n„¹«6ÀWüñõM¼ææ6 szõ=LÙqNÜ£ÌÈÎ.Y¶,L»- £O 寿^:5š™à9c†ÿçŸnll?7$F6‹ÉqFÆÂp"ÓŹÃÇgÛÚZ»»;ð­ËÎÀî“AÌfcc1gÎØS§nÐ$Æì›íÛ·gAAå¾}iƒõ³#j| ±oW¯Þš2e$}˜˜oëÄmýñGYpðz:8ø¹œœ2zšx”Ž55í÷—ˆ¹ÃZ³°0{Ò™!Ìmâ€Y³FñÅ‘ÚÚ§=!F6g¢Î“˜¸‚ûŸ®7Ü3Á®ÏþﯽòJà–-‡‰ë²3p…»ÁdÓŒ¢(J¡ ÎœÉen cv‰ÍFG‡ZY™Ëå²}ûÒÄì…Ú_톈ط;ÏÏ›76.n®B¡liiûôÓƒE·õóÏg_}5d„çàÞ½?üpšžO<Êô Éd2øé§ö%‰¹Ã*>ùd!˜ššÐýëO|3ÿç^êÑÃŒ¾ñ²mÛïôêË–…=xðè­·^…‚¢iÀl曉:OLL’JÕÓá­ÌÖ=&ƒXßéV˜Üa|Ovo™aa󈇘©ƒÄ HŒ“;l¸_‡WQÑ]KKsæNê8¾Üa$)tíÓùÏe ÷ë°Q3„ÜîÄ@r‡‘ÞuÆñL!$iXB’†E!d@º>M¯ "„ H×ßúÇ3A„¤á™ 2>]œF†º7,‚ÈȬZ®ï. n‹ 22Ó§ë>eIAd|RR:ñ›ÈxmÙr\‹û*X‘QÊ+×ì¡ÿ¨ÛûÇ-ÿjÄ»Ã!IÃ"ˆ’4,‚!IÓgLHXþÆ/0ܺuY[ëpTM™2rݺÈõë£t¸¡Îè'DDøë·"7´vm¤Ö ß!>®0srûuµZ·¤KÏ7F\]û¹»;ܺ¥ŸçÄÉår¥R)°€vÁ»z¡QÚ¯n©F6-‚¡Õ:ˆ¯E ç"xèÐ¥ÈÈ1ÿøG {fBÂr:;¶n]ööÛÛ虤ûù¹ÛØXîÞ}ÁÅÅÎ×w`Ïž–;wžËÊ*¡ž1#À×w $&»wïˆÈ)¦ÓÚ€'®—¼ËÆÝ1æ˜ËK=I?277‰™üÇåGfñíïÑ£Y>>.³¾ b•dab¨±pÿ…“”‰{ÇÆë×Kˆ{:eÊH??÷ž=-™XdzggÎ hiiûå—«0j”ÛèÑ^IILj}°·ï3@–“#6>!蹦§¼ø¢ïˆ¯_/Q»pcãã>:àææ°zuÄŽgéé¥KC™"X]ݰiSrpðÐùóƒ¿úŠ7ÉX9Å ñq½Ä c޹±¼ôê––æo½5åÂ…üóçóö·²².9ù"{+|ÄœŒ`B¨±pÿ…“”ùBœ™a\²dqOš>úh?;™vñbaLÌdºNK+àëÃüùÁ¿ÿ~ãܹ¼àà¡r9'Rd0çexØ#ýá×]_Eˆ@ÏE¢ 99=*jŒ˜È®ôô¸}»ÊÔÔ$#£žfgÑ^¾\—.Ýœ7o,=G|N±ø¸^ↈ¾|±¼«WO?räòåË·4ÝŠp±ø}?P{¬aäÛSn,2­²²®­MéâbW]Ýèéé¸mÛq¾>xyõ§÷åÒ¥›‹MàîËïéàèm­´þ÷møv§ÀÀ D ÿK߸Q:eÊóAAƒ™9EÉå2¥’25•ËXyºLÆ®R©lkSOÞ.›øœbÖÖµÙ 2| *FŒtåJ1}ÆÄ·¿\ÂÄ\â÷E8V˜o&‹œž^èUYYŸ•UBMž>¨ÙG'S3ˆùHúJxY„ â'2ÉɧOhÿ Ü¿ß@çÿúû{ ×8~~àYP ”äKDŒë¿!b†/1–ví:ßÒÒ¶hQýßþr·"AÌNûU»/š”Ú„b¾=‘Qà4˜>ÁçëCaa%Ó[b;Ÿ\ðLÞ ƒŸ³e„ž¡ÿ3A(.¾wëV•ŸŸ;ýǽ{Ó–- oll¾~ý¶Fwfíí{­_ ‰‰í÷ ÅçãzÅoˆ˜áKŒå}òÒÙ… '¼újÈ?žæÛß'[‘%&¥çd³Ó~Õ¥6¡X`OùÔÕ5Ý»×àèØ»  B »v_±â…°°áyyåÄMÇ,†¦‡ðุÂßÿ%¼M„0wØ@±o#6:Iÿí0Rñ IÜz…¹Ã!¤A…§u ,‚!IÃ"ˆ’4ƒ¸;Œ¦´~‚&B*°"ã³eËq}wuX‘‘éßß¶…t¯ "„$ ‹ BHÒ°"„$Mûk‚¢žcÜ¿¿ØÇ¾#„P×ëеØÚe!#„P—éè×aŠßÊ•ÿä[ËÃÃaÍšYqq³7mš=‰žÙy@ÂNÂÛ`¤vCDäFW®œ¦òdSµës¦ÔbÆ“8téZ^±±QôcÆxÑ3mmmV®œ¦QÒˆ~~"³dIèwßý^TT%—Ëœ úèº 0Ò(HçM¹»;47·ÔÖª†ë`ÎßÐÓµž~Ð /ø~ñEjCCsÏž+WNknn½vívmmcSÓcOOÇ›7ïj× „„é§ÚØXÖÖ6€RI•–V3ó¹¹<ÜÌ ððVVæ))™¡¡Ã¦OX½z»‰‰|óæ?½ÿþO*ããôÇ q_U 0Ò" ˆF”—WÁ]ÆDLJb7U\|»Q¾& råÊ-FF%gŠ/k‰ES:vgˆéZS¦<¿gÏ…††fhhhÞ½ûü+¯ÒïË—o Á"ˆ:‰~Šà‰×cc£rsËrrJÓÒ Šöón.73(?¿bîܱ™C†ô¿w¯ÞÙÙ줤Zå„…Ð#'Ä}•`¤M“Fówub_RÓÔ;ï¼ÄÝ(_  âtôè5FFeßù²–øÄTÓµ\\ú²Ï oݪrq±£§‹‹«fÎ ÞBZÓOLIɼx±ÐÇÇ94tØÐ¡Îß~Ûþôcn.73èÎûNN½ÍÌLúœ8‘=xðKKóüür•Mz„ã„„_å[@m“FD\QÄ—”Ä4Eܨ@ “]Ïúú&­Gø³–´ QºÔÕ5±ã´Ò-½ý³¹ªªúªªúôô›¼™)ËÃ<­¢¨ââ{ÁÁC++kóóË##ÇXY™''§s¶@¸’%'$ü*ÿj.™1iDjÛçRyF=+؈°QÑ1L ðd-‰ˆRÁM׺sç¾»»C~~û£öÝÝèoÜu6ýüXÚÇÇ…þÈ8;ÛÑ_²ø3ƒòó+¦N™—WqïÞ{û^ýûÛ²/,>Y‘Ð#'D|•`¤]pûĈ"µIIÄ Ä0ÕÔ4ôîm-°®ÚD*bÖ’p${è¸TÒµ~û-kΜ±={Z€Åœ9ÁGfÑ/õécuÿ~_;u~Î'Mò™?œB¡hmUnß~R`IbfP~~ÅìÙAôWàòòÚºº‡Ü;˜Ä€á8!â«ì#í’€„Û'F©MJ"nT †©  ÒÍ;ºúv#4Òž#c¡}Äg["„º|”BHÒ°"„$ ‹ BHÒ°"„$ ‹ BHÒ°"„$ ‹ BHÒ0h !$i´„’4I-i‡ÉZ»6’ž`13Å·£Å«ÅC ®`Ð’z›7·çu°ƒ‡˜™z„!P…:®Û-%$,?p ÝÏÏÝÆÆr÷î ..v¾¾{ö´Ü¹ó\VV ±eà !¢ã„T‚‡˜Œ!-Ò—0ŠÝ BúÕmƒ– ±ññGpssX½:bÇŽ³ôôÒ¥¡t$† ¤&ñ%i‘¾„!Pl…ô«Û-@zzܾ]ejj’‘QHO3‘=Ä0#µ©I\Z¤/a†@!ýêÆAKO[S*•mmJµ-ÓÒtG´J_Â(ÞV¹³0 uªn´¤±eñ©I -Ò—0Š C ~uÛ %µˆ-‹OMbh‘¾„!Pl…ô ƒ–žaê<´„Œ†@!ý %¤F¥„!PÝ-!„$ ¥…’4,‚!IÃ"ˆ’4,‚!IÃ"ˆ’4,‚!IÃ"ˆ’4 ZBI-!„$M?AK0p`¿ÄÄ£F¹ ,ÓyÑKÚE&©ÅŽïéH³Ú¥wJäjÚ[µOÌvÅgEuð@°ÓšˆMHX7gݺHú‘\"GI£@+>Ü­'$,_¿>jýúÈ5kf÷{a•O‡@¢“!dTx¬^Áîý4Fz—éÿ^{mý*7dMïyUò(-™L`'°LPÐàk×n3˜É—èJ‘IZ±ã{:’Ä$>EˆÝÕŽä@iº¼®2žt5b"Óšèg1pñâ?Ü+r‹jwÖʪGSÓcµí¨lè‹7Þx€:w.^RåÓÁ—èd U—.3$8xèùóy^–VÀÞe6nÈšÞóªt_é§ønذAà3r¹ÌÏÏã£ö¯]ɼø²xÌÍMcb&ÿñG9ó$KÐ0(55Ó××ÍÆÆ‚Îoâ‹Lb§-]&œÓÄ ÷Q‰ïašÙ+f×Tº§6؈Î$àÛ)†p{¸S94*{JÌ9â꼃gÓšÔÊͽ3™8JÜM ¤21Ö¯,+«ÉȸyíZñãÇm"·ÎhllÞ³çÂÂ…!t$~:ˆ‰N†“QµcÇÙ¿üeúÍ›wgÎýùçO'‡¬é7¯JÇE®€¤ùø¸”•ÕÔ×7eexœ> ©F YÓo^-¡î€Öäîî°xñÄøø=úî”.Œ:£Š­óòª0h I“ÖôÖ[/š˜Èwî<§ïé_¢“ñfT±é=¯ªCg‚aaóÔnÏBúÒ¹g‚´„êðQZ!IÃ"ˆ’4,‚!IÃ"ˆ’4,‚!IÃ"ˆ’4,‚!Ià%„¤aÐBHÒô´Ä [ÎŒUêÚÅñók:9„É;iD?AKܰ•n ƒÙC:‰Âä„4¥Ÿ %bØ L™2ÒÏϽgOK&I‡|>ÂÊÊ<%%34tØôé«Wo71‘oÞü§÷ßÿ‰ý1¦£ˆ||\¨ÄÄc÷î= ¶Æ·$1k†¸$M%€†¸!âLâê*ÙO*[äK¤LÞAHsú Z"†­@CCÓGíg'épƒoòó+æÎ 9dHÿ{÷êí,,ÌKJª¹'2••uÉɃƒ‡ÎŸüÕW¿[ã[’ß’bÒ‘ø¶Î]]x‹ÄD*&ï ¤)üD†‰X´”’’ùñÇ ÊCC‡1׆€”¤ãå唞~22 v€;wî;9õ633qpèsúôƒ2d@~~9w+—/À¥K7½¼œøZã[’È%‰âÛº¦[¤c<¹2VIÞÉÌl_—YÀÛÛ9*jLllTtô$n €¾}mV¯Žˆ‹›³xqH¯Tœ<™cnnÆMÞ¡ÿ£+ ð¼ô›¼ƒ$EAK4bØŠ@’SZ)Š*.¾<´²²6?¿<2rŒ••yrrºF}V[¨µËš¹!mŸýÞN8öˆ½î,LÞAH…Î)ŠŠ‹‹´>>.ôG‰¶BDß;ø&?¿bêÔ‘yy÷î=°·ïÕ¿¿-ûÂ"ÃÏÏ< *Z#.IgÍ€JÖ wI@#°!¾­sWÞ :öhß¾´Aƒú©,L'ï<Ù\%³.³¼CO»¹9p7'¼Ã áž‹D|3è7yIŠ‚–€'l…ˆ|“Ÿ_1{vý¸¼¼¶®î!ñΦ½}¯õë#d‰‰GZ#.É—5Ã]’Á !nH8?ˆ/¿†»E¾D*Àä„4×mƒ–Ø74»~I]Ñt‹˜¼ƒ-I&ï ¤) ZBu[´„BjࣴB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’†E!$iXB’¦þÉÒ™]Ð„Ò 5EpÕªð®éBé…š %„êÞðš BHÒ°"„$ ‹ BHÒ°"„$MÍÝaoo¯®éBu†U«Â…oÿªÿ`nn¡îúƒB]GÌÏœñë0BHÒ°"„$ ‹ BHÒ°"„$ ‹ BHÒÔßFH; ËËÊj(…‚:}:÷ܹ?ôÝ#„°¢N´iÓ>°±±xã¨sçòôÝ#„TaD®±±yÏž †ÐE°_¿žK—†YZš=zÔ²mÛ‰û÷ !ayjj¦¯¯›Å®]ç®]» ½zYEGO´µµV(¨&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" \ "$(DESTDIR)$(miscdir)" NROFF = nroff MANS = $(man_MANS) DATA = $(doc_DATA) $(misc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ # Install the manual docs docdir = $(miscdir)/manual dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Install the man pages raw_mans = jpilot.man jpilot-dial.man jpilot-sync.man jpilot-dump.man jpilot-merge.man man_MANS = jpilot.1 jpilot-dial.1 jpilot-sync.1 jpilot-dump.1 jpilot-merge.1 # Install the standard GNU doc files miscdir = $(datadir)/doc/$(PACKAGE) misc_DATA = \ ../BUGS \ ../ChangeLog \ ../COPYING \ ../AUTHORS \ ../INSTALL \ ../README \ ../TODO doc_DATA = \ manual.html \ plugin.html \ jpilot-address.png \ jpilot-datebook.png \ jpilot-expense.png \ jpilot-install.png \ jpilot-memo.png \ jpilot-prefs-1.png \ jpilot-prefs-2.png \ jpilot-prefs-3.png \ jpilot-prefs-4.png \ jpilot-prefs-5.png \ jpilot-prefs-6.png \ jpilot-prefs-7.png \ jpilot-prefs-8.png \ jpilot-print.png \ jpilot-search.png \ jpilot-todo.png \ jpilot-toplogo.jpg EXTRA_DIST = $(raw_mans) $(misc_DATA) $(doc_DATA) DISTCLEANFILES = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-miscDATA: $(misc_DATA) @$(NORMAL_INSTALL) @list='$(misc_DATA)'; test -n "$(miscdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(miscdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(miscdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(miscdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(miscdir)" || exit $$?; \ done uninstall-miscDATA: @$(NORMAL_UNINSTALL) @list='$(misc_DATA)'; test -n "$(miscdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(miscdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(miscdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-docDATA install-man install-miscDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA uninstall-man uninstall-miscDATA uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-miscDATA \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-docDATA uninstall-man \ uninstall-man1 uninstall-miscDATA # Make rule to build man pages %.1 : %.man sed -e 's|@DOCDIR@|$(miscdir)|g' $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/docs/jpilot-prefs-6.png0000664000175000017500000001515712320101153014162 00000000000000‰PNG  IHDR¬2)ÆsÈgAMA± üa2tEXtSoftwareXV version 3.10a-jumboFix+Enh of 2005050103ÐÕIDATxœíÝkPU×ÝÇñÿDADA@T@¼jŒhUl$ÉS›&AÛøÔ<õ5¶“¶¶/Út’£“´“´vœfˆú8MÆŒ&¬1y5Š‚FD” DE/€ˆ€ÀáèÆHgC[Ùê±¶Ê­‡ >V{€åo;m†ŽŸ­5;¿,ñ‡Ž0 ¦]ÈÎÀŽËaˆî1 '3È`0Øé^–kºš±ë»œý ›#A[ç]YvÆbVû“óc7Óþ£ÓéÌ~‹f9ƒ3+±\r«‹ÛÚ4zãauæ 2D˜†Y÷jSL˜Îo9µ5³e~ÙZ‰ÙlÆrÓ·¿¸éˆ˜ìÌŽšƒÈ=A8;ä1 )í7­ÃËûknÓâí›Çêî8y«Š •cy=Ûu#¶^ ·o'çiÓâ¦)ÏH°7²¼¯bë8‚Êéi§´Ãú8Sá…=­Ñ`ŸÙozãͫǑ{‚hÓ›k=ö.ÛŸÁÉyÌ8|ƒ^ÍεŽÕms$H·€Ó‘‘X»9ØŽL4»·hõ©ˆýœœÇê.ȃG–‹óh¸·³|0b+Ó¬‡ G]¶´i¹Ã§l>´uñvlÑ~I§¬½…ó}OÃ=Á‡™­ÏÊ0"f¤àF( 4yðÊ’Žë¬õ€“ˆèÝŠ›\]pî P!@i„ ¥‚”FP!@i„ ¥‚”FPJ °)**ÒÕUóç‹\]…‡!XÙhóæ•|·µK9Á††€n¨‡“¼¼nö¨úXÕ+*iKϯ|ϯa'*/ÏÎÁŽñòºi!ØÐP]Ûyõé¨mÛÖΛ·ÆÕµp WTÒ–ž_ùn¬aB·lÅ1ÎÁŽØ¶m­ý¡toz0R]}ÎÕUp¬WTÒ–ž_yWÕð7~ÜÍÿï™z~1ãL…ü)­5¬®>—‘ñiÿ-Ô+*iKϯ|wÖ011ÁU÷ßxãÇo¼‘*"ååÙ©©›{Îéù=ÄŒVá‡g$¸J7δD÷ Ǻ9•zòñÇ3¦RròòÕ«Ÿ6–¿òÊÜää—º`sŒ»O{B0-íÍέDGVX]]vìØ–#G’ÚxæÌ;s±:}ôèævoÝIiio¦§o:ztÓ±c[._α?³iÝl­­ƒ•ië"·o—ïÛ·¶¢â¼ÕÝ¿½“…]!=ý}í¿}ûÖj–ó´©ý­2M%÷€€"âççãååÙÚj°½\;9 Z‘N?+ÛäÚµsGnNOÿðá÷òòöwdUö{Žñluxš8¯×XúÌ™OšôœŸ_¨Á`¨­­´3gQÑÑ1cf[NÇǯèòZŠ$$¬‘¦¦úS§vêt2|ø£ÎÔ³‡(+Ë2dlYYnppT»Wb0´êtå‘ð²6±ÿzã´µÙœm«ŒO*D$#£ .nìÞ½§fΛ™Y0räýÍùúz/^<Ûϯ¿^oøè££%%×E$9yùž=''O÷ññÚ¹óxh¨ÿĉ# ðúøãŒÜÜË"0`éÒ9^^}š¶n=tëV81l÷銣PQQP\||Ú´EžžÞƒ¡´ô”Á`Ðét»ñlíÄÓ¤sB°¾¾&'gwK˽>}ú>úh’—×@iiiÊÏÿ¼ººL§sssó˜9s™N§ûúën»¹¹{xxŽÿ´¯ïÓõÜ»WwæÌku:·‰ç âpÓMMõýúùŠˆN§80ØÖzÒÓßomÕ‡ Æé„„—ÓÒÞ|úé?‹HZÚ›£GÏ®¬,hjª?~î!cEäîݪìì]:¾x1ó©§^‘ÒÒS%%'Etnnnññ+o(OOÿÊÍMÕNBËÖ0­gBÂ˶¤ à«ë× E$6ö§ÞÞ~¶ÕB^ßœ½+ <"b†ý: †òòüøøåGnnnnìÓ§ŸˆÔ×Wggï4$0p”qN«…iioFDÄݼYmøðIeeg †û>çϘ3çמžÞÍÍ mm+_ß!wïÞÒ¦-[ìž¶ÄÛÛ/>~å•+gòò>{ÐÚV•Bii¹—•µ#4tÒðá“VøÆ‹¾¾A}ûú 2öÚµs#GÆjÍöƒáýr匱Y¬ŠHÿþƒ£¢‘ìì–»cÙ˜i^[»lµýÎldšJ÷îµU&%M/.¾ÞØØlœ'**$(È7)išˆx{÷5–ŸÚ¿FFoÙrPD²²Š,˜þ`söF‚Vˆ‘­SÌxrrv÷éã=kÖK55Wÿp„§µéœœk!ØÖö¯­­4h˜e¹­æµz–Yí9¶˜&é0ÒY!XUuyòäù"2!?ÿ ­°²² 1ñ·ÚtŸ>^ÚDCCMNÎ»:[]Ý-³õܸQ|÷nÕùó_ŠHss£3›3æ‡!!oܸXRròæÍK>ú|ûÖ£ /"~~Ãjµ’êê˱± DdèÐè³g÷j…gÏî ™<Öù•[²ßvvdèÐh6,æÜ¹Ïµ«‡Àj¡ˆdf~0ztÂСN]I]½zvذ "2þÛoj§\UU©¶æaÃbrsSlÎJ¡ö£Ý±lÌŽ4¯­]îàÌf©tìØ·¯¾úì_ÿúÓBNÞy'µ±±ÉlÙæf½ˆ ÒÚÚÚÒÒªM[^,šžûöG‚Vˆ‘­Ne< ":AD imm6l¼6ÝÐp[û×ÎêÞ¶š×ò,³ÕsœÔÁ w÷=ÁœœÝ“&=çï?B¯oþüó¿XηÄã¯e¹ýûû÷ïï2áÀ¿wd="âæflË_GßuÛØØŸVU]¾råÌåËÙÓ§ÿO›6Q[[Ù¿ÿ`mÚakH{wľÁƒG^¿^<Îá›––¦ÊʪªË‡D¤±ñN}}·÷ ÓÖ0a}mžÆiËݱlÌŽ4¯C¦íï<³T*)¹¾r¥ùó´¼¼²„„¨/¾8+"aaAÚ=A‡ŠŠÊccÃ32 ¦NUXXñ`s6ƒÀö¹ÏV§2= Æ~®Ó¹¹¹¹?(¾ßçÛÚþ ©©¹æï?™ýëg™õî¤Ý[lmÕÛv°ÃtÎ-Rÿ‘ååù"ríZÞàÁ#µÂààqEEÇ´iã0µ¹¹Q«_¾œm¹ž  ÈÒÒûå55WÙôµ‰;w*µ›ƒ¶Öãææ¡×7[NÛçç7\{WQ‘o,¬¯¯ñ÷ýDMÍ5gVbÔÔTîÜÿošXm ÓºÙj­}ÎØó¬«…"ó#w÷>ÎüÊ-/Ï ŒLL\˜øÛÄÄßFD̸z5WDüýGë`œÙj¡)«»cÙ˜ín^;»¬1kû3›ræ3+Û· Z³fþ›oþì™gbίٱ#sÖ¬qkÖÌŸ9sÜÇg<ØœÍ§Ã¶Žˆ‘ýSÌmmÿQ£âòó¿hjªƒÁPR’¥e–óÍkµçx{ª©)‘òr+ÝÉô4éH‡‘vc®  È‰Ÿ?~nNÎîââ}µ R‰‰™›ŸÿùáÃï¹¹¹»»÷‰‹[ªÓ颢ž<~üOÏþAA£-‡!ãÇ?ýÍ7©GŽ$·¶ê½½ý¦Mû¹Ãš”–fåå}æææîææ>iÒOì¬',lê‘#Éž /›NÛ_LÌÜÓ§w]ºt" ÂÝý~s9óïææFCtô“N¶Xzúû:N§s1"ÖøhÒjk˜ÖÍVƒÔ×W=ºIDbcú`—­«…þé©ÜÜ}¹¹©'Úû4ÆÕ«¹#GN5þ8lXÌéÓ)£G'ÄÄü(;{×¥K_„knµðûµ²;–ÙŽæ5Ù„õ]¶ÚþvÚÇŒq$¸jÕ³úÕ¯¶jwï6nÚô¥Ù¿šÎoœÓtúæÍZ³Ëj±›¹¶Žˆ±Äþ)挶¶pð8½¾ù믷 †ÖV}@@„¶]ç›×jωŽ~òôéOOï!CÆXîˆéiÒ‘#|wØÚ§ ÊËÏgΜ¹Ìþ̽îË•¦z~åùî°kõübÆ™ï÷úÏ vƒãÇ?Ô†ú“&=ëêºÀ5ì?©è‚Íñ‘îC:·ÄÕU€‹uÿw‡ÉÁnÃw‡Ǻùï ’€Ý‰{‚¬WTÒ–ž_yEî qO°ƒø{‚à€ƒ‘`Oxå à.qvÄêÕ‰}:Üsº &ÎÁ.Åå0€‡–öÎRûAJ#( 4B€ÒAJ#( 4B€ÒÚÿ§´œù¢ˆ êì߀îס¿'˜šjþ®36ä?z²ŽþQU;oúÍo6Úú§ääå¦ï^xï½e¦¯_p^ròòÂÂk6¤i?¾òÊÜèèU«þ·«²ã±ÇbæÌßܬ7dïÞ¬³gKEdÕª'‡ óoiiihhÚ¾ýXYY•ÙR¿þõSÛ¶¥WW×µo£Æ6ùÓŸžë­Ý"2o^ì¾}Ùmª’ŸŸÏ‹/&lܸ¿Ýû<ôzý_–öðppóæ??//ÏÖVÇonn«¯¿¾pøð9ƒA‚‚þñÏþîwŠHFFA^ÞåÖVCLÌðeË×®ÝeºHxxPccS»Д–€"2wî$c:Y¥êêºúú{£F ¹x±²ã5J=+¢ç̉1 z}ëúõ»EÄ××{ñâÙ~~ýõzÃGµ|—kFFA\ÜØ½{OÍœ963³`äÈ­Üê‚ÉÉË÷ì99yr¸×ÎÇCCý'N1`€×Çgäæ^‘€€K—ÎñòêÓÐдuë¡[·êD¤¾þþë´=<Üëêî¿;47·T›(**÷÷÷1«Õôécrr.iÓÉÉË¿ü27::TİiÓ7jmU/0ÐwåÊÇEtùùeÆUi£æ×_Orwwýõ$Y·.Åù*>}iúô1„ `KÏz:œ”ôƒ¿ý-uíÚOW¸ Î8þŒKÍ:q¢píÚO33 .œeº¡×^KúÞùàƒÃfx≉gÏ–˜Ž|éÒwy]QQ³~}Ê¡Cç^x!ÎNõ^x!έ_ŸRQQãæö½w ®[—¢×ë×­KY·.¥MU*)¹>fÌPËv qÕHÐúEk~þÕ_œ}òd‘ñŽŠ òMJš&"ÞÞ}-¹w¯¥¨¨2)izqñõÆÆïÞ§nkÁ“'/ˆHiéu÷¬¬"mÚ8nŠŒ ޲堈de-X0ÝtCë×§DE…>ÿü´wßýîýS§FN™ùî»{Íjåï?àöízã§O‹È©Sö³vª9TÛú©S_|ÑJâ›q¦J55õ–UF® ÁÆÆ–~ý<›D¤o_¦¦­|óæ/##ƒg̵aÃ>ÑéäwRµ9m9vìÛW_}Öì Ö¶lnÖ‹ˆÁ ­­­--­Ú´å+ª­>ï),¼¶jÕwowž2eÔ3ÏÄþýïûêêÙk'ª×æšX%@M®¹þöÛ«qqc´é¸¸qùùWµéÁƒ\¸P‘’rÂxk//¯,!!J› ²º¶’’ë+Wn..þÞm/g´TTT."S§Ž*,¬Ð CCýµ‰‰G^½zÿ)ð”)Ï=7õÿØ_]}×r=UUwìoüqòä™2eÔ… vªWTTaœÓr--zOO¶ViÐ ï[·î8¹û€‚\3Ü±ãØ¢E ññãDäÆÚmÛÒµòÅ‹óöötsÓ¥¤œÐJ¶o?¶hQüš5óÝÝÝoެݸñ3'7ѾwìÈ\¶ì±ÇŸÐÐмuë!­pÁ‚þþ>--úÚÚ†ýë+­pÙ²9µµ ¿üå“"¢×ŒÏp5.T„…Þ¼Y«ýèûÚkÏ‹è6múÒNõ>ù$sÅŠ'æÌ_PpÍò1÷áÃùþóü{÷š×­Kq¾Jaa……åN6  Ç/Z²õigíe€ö?'>^ÍKGD ILœ°e˱øPd7{é¥9‡å›?UT ÅTG_´dŸOD«¬¸¸rÞ¼X??ŸNù¨`»ùùõ÷öîGvt(7l8ØYõxø¿§áÂa`uõ]¾.Ø×þ:4VÍK]“žõaièf„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FP!@i„ ¥‚”FPš‡Ã9Ê˳»¡àBpõêÄ„nÅŠM®®¸ ÷( 4B€ÒAJsðt8**²{ê]aõêDûNðüù¢Î«tg>æÌå0¥‚”FP!@i„ ¥9~: ´Oròò«W«D z½!=ý|FÆ·®®`!ˆ.´~}Šˆøøô{ùå'D ®®`ŽD—««kܵëøÏž …`@À€¥KçxyõihhÚºõЭ[u"’œ¼<--{âÄ0Ÿ~Ÿ|’qöl©ˆøúz/^<Ûϯ¿^oøè££%%×]¼'xqOÝáÊ•ªààÚôÂ…³Nœ(\»öÓÌÌÂ… g穪ª{ë­Ý[·œ?úƒ9g8ðÍÚµŸ~øááE‹â]Po(€‘ º[ddð–-E$+«hÁ‚éÆò¬¬‹"R\\éç磕DE…ù&%Moï¾®¨,~„ ºÃðáþ·Í †ïýØÜ¬× uºû%:¼óNjccSwTªâr]Îǧ߂3Ž9§ýXTT."S§Ž*,¬°³`^^YBB”6ÔÕõ„š ¢ ½þz’Á`Ðë Gž7>Þ±#sÙ²Ç|BCCóÖ­‡ì,¾}û±E‹â׬™ïîî~ófíÆŸuK­¡ï‰ŠŠä¯Èè¥Ê˳SS7ÛO9.‡( 4B€ÒAJ#(ÍñGdœù#ýÐK9ÁÕ«»§à>'7î P!@i„ ¥‚”FP!@i„ ¥‚”FPšGuõW×\Fg0{å¨Äc×®]¾Ò]»víܹ³+Ö @M]—*Ü 4B€ÒAJ#( ´ÿ å¤7ð MtIMEÕ €<ÑIEND®B`‚jpilot-1.8.2/sync.h0000664000175000017500000000355612340261240011076 00000000000000/******************************************************************************* * sync.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _SYNC_H__ #define _SYNC_H__ #include /* Bitmasks for backup */ #define SYNC_FULL_BACKUP 0x01 #define SYNC_NO_PLUGINS 0x02 #define SYNC_OVERRIDE_USER 0x04 #define SYNC_NO_FORK 0x08 #define SYNC_RESTORE 0x10 #define SYNC_INSTALL_USER 0x20 #define SYNC_ERROR_BIND -10 #define SYNC_ERROR_LISTEN -11 #define SYNC_ERROR_OPEN_CONDUIT -12 #define SYNC_ERROR_PI_ACCEPT -13 #define SYNC_ERROR_READSYSINFO -14 #define SYNC_ERROR_PI_CONNECT -15 #define SYNC_ERROR_NOT_SAME_USER -20 #define SYNC_ERROR_NOT_SAME_USERID -21 #define SYNC_ERROR_NULL_USERID -22 struct my_sync_info { unsigned int sync_over_ride; char port[128]; unsigned int flags; unsigned int num_backups; long userID; unsigned long viewerID; long PC_ID; char username[128]; }; int sync_once(struct my_sync_info *sync_info); int sync_loop(const char *port, unsigned int flags, const int num_backups); #endif jpilot-1.8.2/po/0000775000175000017500000000000012340262141010437 500000000000000jpilot-1.8.2/po/nb.po0000664000175000017500000023402412340261240011322 00000000000000# J-Pilot in Norwegian / J-Pilot pÃ¥ norsk. # # Ragnar Wisløff , 2000, 2001. msgid "" msgstr "" "Project-Id-Version: JPilot\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2001-08-16 14:53GMT+1\n" "Last-Translator: Ragnar Wisløff \n" "Language-Team: Norwegian Bokmaal \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.5\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "Feil under lesing" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Feil under lesing" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "feil" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "Greit" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 #, fuzzy msgid "No" msgstr "Ingen" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 #, fuzzy msgid "Yes" msgstr "Ã¥r" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 #, fuzzy msgid "Error Opening File" msgstr "Feil under lesing" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Feil under lesing" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Kategori" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privat" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Navn/Bedrift" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Navn/Bedrift" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Bedrift/Navn" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Utfør denne kommandoen" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Ferdig\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Kategori" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 poster" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d av %d poster" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Navn" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adresse" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Andre" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Notat" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 #, fuzzy msgid "Quick Find: " msgstr "Hurtigsøk" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Angre" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Slette" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "%d av %d poster" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Slette" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "%d av %d poster" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopier" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "Legg til post" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Ny post" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "Legg til post" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Legg til post" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "Legg til post" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Lagre endringer" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privat" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Angre" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Fjern" #: ../address_gui.c:4246 msgid "Show In List" msgstr "" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Minn meg pÃ¥" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dager" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Alle" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minutter" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Timer" #: ../alarms.c:253 msgid "Remind me" msgstr "Minn meg pÃ¥" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Avtale-pÃ¥minnelse" #: ../alarms.c:513 msgid "Past Appointment" msgstr "ForbigÃ¥tte avtaler" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Utsatt avtale" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Avtale" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "Innstallering av %s mislyktes" #: ../category.c:407 #, fuzzy msgid "Move" msgstr "Ma" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "" #: ../category.c:440 msgid "Enter New Category" msgstr "" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "" #: ../category.c:452 msgid "You must select a category to rename" msgstr "" #: ../category.c:461 msgid "Enter New Category Name" msgstr "" #: ../category.c:476 msgid "You must select a category to delete" msgstr "" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Kategori" #: ../category.c:834 msgid "New" msgstr "" #: ../category.c:841 #, fuzzy msgid "Rename" msgstr "Navn" #: ../dat.c:512 msgid "unknown type =" msgstr "" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "" #: ../dat.c:636 msgid "File schema is:" msgstr "" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Gjenta pÃ¥:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Gjenta pÃ¥ følgende dager: " #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Gjenta pÃ¥:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Gjenta pÃ¥ følgende dager: " #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Gjenta pÃ¥ følgende dager: " #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Gjenta pÃ¥ følgende dager: " # These days of the week are put in the buttons above the calendar and # the little buttons in the repeat weekly window. # They should be one letter if possible. The English ones get truncated to # one letter. #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Sø" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Ma" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ti" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "On" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 #, fuzzy msgid "Th" msgstr "To" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Fr" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Lø" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Slutt-dato" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Gjenta pÃ¥ følgende dager: " #: ../datebook_gui.c:330 #, c-format msgid "Number of exceptions: %d" msgstr "" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Notat" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarm" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Gjenta pÃ¥:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "ukedag" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 #, fuzzy msgid "Error" msgstr "feil" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ingen" #: ../datebook_gui.c:1633 #, fuzzy msgid "Begin On Date" msgstr "Slutt-dato" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Slutt-dato" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Søndag" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Mandag" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Tirsdag" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Onsdag" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Torsdag" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Fredag" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Lørdag" #: ../datebook_gui.c:1760 msgid "4th" msgstr "" #: ../datebook_gui.c:1760 msgid "Last" msgstr "" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" #: ../datebook_gui.c:1782 msgid "Current" msgstr "" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dag" #: ../datebook_gui.c:2028 msgid "week" msgstr "uke" #: ../datebook_gui.c:2029 msgid "month" msgstr "mÃ¥ned" #: ../datebook_gui.c:2030 msgid "year" msgstr "Ã¥r" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Du kan ikke ha en avtale som repeteres hver %d %s\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Du kan ikke ha en avtale med ukentlig gjentagelse som ikke repeteres pÃ¥ en " "ukedag.\n" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Ingen tid" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 #, fuzzy msgid "Invalid Appointment" msgstr "ForbigÃ¥tte avtaler" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Ingen forfallsdato" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Uke" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "MÃ¥ned" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Katter" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Ingen tid" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Oppgave" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Forfall" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 #, fuzzy msgid "Date:" msgstr "dato" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Starter den" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Slutt-dato" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Dag" # msgid "WeekView" # msgstr "Pr. uke" # msgid "MonthView" # msgstr "Pr. mnd" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Ã…r" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Denne avtalen skal ikke gjentas" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Frekvens er" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "dag(er)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Slutt-dato" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "uker(r)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "mÃ¥ned(er)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Gjenta pÃ¥:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "ukedag" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "dato" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Ã¥r" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "" #: ../dialer.c:230 msgid "Prefix 1" msgstr "" #: ../dialer.c:252 msgid "Prefix 2" msgstr "" #: ../dialer.c:274 msgid "Prefix 3" msgstr "" #: ../dialer.c:289 msgid "Phone number:" msgstr "" #: ../dialer.c:319 msgid "Extension" msgstr "" #: ../dialer.c:341 #, fuzzy msgid "Dial Command" msgstr "Alarm-kommando" #: ../export_gui.c:121 msgid "File Browser" msgstr "" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Alle poster i denne kategorien" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "For Ã¥ bytte til en skjult katalog, angi den under og trykk TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Filer som skal installeres" #: ../install_gui.c:372 msgid "Install" msgstr "/Arkiv/_Installere" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Arkiv/_Installer" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 #, fuzzy msgid "User Name" msgstr "Navn" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 #, fuzzy msgid "User ID" msgstr "Navn" #: ../jpilot.c:317 msgid "Print" msgstr "Skriv ut" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Det finnes ikke skriverstøtte for dette tillegget" #: ../jpilot.c:384 #, fuzzy msgid "There is no import support for this conduit." msgstr "Det finnes ikke skriverstøtte for dette tillegget" #: ../jpilot.c:428 #, fuzzy msgid "There is no export support for this conduit." msgstr "Det finnes ikke skriverstøtte for dette tillegget" #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Angre" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 #, fuzzy msgid "Cancel Sync" msgstr "Angre" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "" #: ../jpilot.c:697 ../jpilot.c:701 #, fuzzy msgid "Sync Problem" msgstr "Synkroniser notater" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "Navn" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Om %s" #: ../jpilot.c:1107 #, fuzzy msgid "/_File" msgstr "/_Arkiv" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/_Arkiv/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Arkiv/Skriv ut" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Arkiv/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Arkiv/_Installer" #: ../jpilot.c:1112 #, fuzzy msgid "/File/Import" msgstr "/Arkiv/Skriv ut" #: ../jpilot.c:1113 #, fuzzy msgid "/File/Export" msgstr "/Arkiv/Skriv ut" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Arkiv/Innstillinger" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Arkiv/Skriv ut" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/Arkiv/_Installer" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Arkiv/Avslutt" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Vis" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 #, fuzzy msgid "/View/Hide Private Records" msgstr "/Vis/Gjem - visning av private poster" #: ../jpilot.c:1123 ../jpilot.c:1373 #, fuzzy msgid "/View/Show Private Records" msgstr "/Vis/Gjem - visning av private poster" #: ../jpilot.c:1124 ../jpilot.c:1376 #, fuzzy msgid "/View/Mask Private Records" msgstr "/Vis/Gjem - visning av private poster" #: ../jpilot.c:1125 #, fuzzy msgid "/View/sep1" msgstr "/Arkiv/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Vis/Kalender" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Vis/Adresser" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Vis/Huskeliste" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Vis/Notater" #: ../jpilot.c:1130 ../jpilot.c:1261 #, fuzzy msgid "/_Plugins" msgstr "/Tillegg" #: ../jpilot.c:1132 #, fuzzy msgid "/_Web" msgstr "On" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Hjelp" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/Hjelp/J-Pilot" #: ../jpilot.c:1229 #, fuzzy, c-format msgid "/_Plugins/%s" msgstr "/Tillegg/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Hjelp/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "/Vis/Gjem - visning av private poster" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "/Vis/Gjem - visning av private poster" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Skriv ut alle poster" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synkroniser Palm'en med PC'en" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Synkroniseradresser" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synkroniser Palm'en med PC'en\n" "Ta deretter sikkerhetskopi" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Kalender/GÃ¥ til i dag" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adressebok" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Huskeliste" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Notater" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 #, fuzzy msgid "Remind me later" msgstr "Minn meg pÃ¥" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Tegnsett" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "Adressebok" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "Adressebok" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Adressebok" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "Adressebok" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Feil under lesing" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Feil under lesing" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "feil" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "Feil under lesing" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "Feil under lesing" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Feil under lesing" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Feil under lesing" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Feil under lesing" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Feil under lesing" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kan ikke Ã¥pne loggfil, gir opp.\n" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Notater" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "MÃ¥nedlig visning" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm-passord" #: ../password.c:306 #, fuzzy msgid "Incorrect, Reenter PalmOS Password" msgstr "Angi Palm-passord" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Angi Palm-passord" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Feil under lesing" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, fuzzy, c-format msgid "Plugin:[%s]\n" msgstr "/Tillegg/%s" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Innstillinger" #: ../prefs_gui.c:483 msgid "Locale" msgstr "SprÃ¥k" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Innstillinger" #: ../prefs_gui.c:487 #, fuzzy msgid "Datebook" msgstr "Synkroniser dagbok" #: ../prefs_gui.c:491 #, fuzzy msgid "ToDo" msgstr "Huskeliste" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "Synkroniser notater" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarm" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Tillegg" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Kort datoangivelse " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Lang datoangivelse " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Tidsangivelse " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Min GTK-fargefil er " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Synkroniser notater" #. Serial Rate #: ../prefs_gui.c:605 #, fuzzy msgid "Serial Rate" msgstr "Seriell overføringshastighet " #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Antall kopier som skal arkiveres" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Vise slettede poster? (standard: nei)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Vise endrede slettede poster? (standard: nei)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Markere dager med avtaler" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 #, fuzzy msgid "Use DateBk note tags" msgstr "Bruk DateBk notat-markeringer" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 #, fuzzy msgid "Mail Command" msgstr "Alarm-kommando" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%t erstattes med alarm-tidspunktet" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Gjem ferdige oppgaver?" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Synkroniser notater" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Ã…pne alarmvinduer ved avtale-pÃ¥minnelser" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Utfør denne kommandoen" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "ADVARSEL: Ã¥ utføre tilfeldige skall-kommandoer kan gi uforutsette resultater!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarm-kommando" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t erstattes med alarm-tidspunktet" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d erstattes med alarm-datoen" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D erstattes med alarm-beskrivelsen" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N erstattes med alarm-meldingen" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Synkroniser dagbok" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Synkroniseradresser" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Synkroniser oppgaver" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Synkroniser notater" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Hopper over %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Skriverinnstilinger" #: ../print_gui.c:196 msgid "Paper Size" msgstr "" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "" #: ../print_gui.c:218 #, fuzzy msgid "Weekly Printout" msgstr "Ukentlig visning" #: ../print_gui.c:224 #, fuzzy msgid "Monthly Printout" msgstr "MÃ¥nedlig visning" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "%d av %d poster" #: ../print_gui.c:268 msgid "All records in this category" msgstr "Alle poster i denne kategorien" #: ../print_gui.c:272 msgid "Print all records" msgstr "Skriv ut alle poster" #: ../print_gui.c:294 msgid "One record per page" msgstr "En post per side" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " blanke linjer mellom hver post" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Utskriftskomando (f.eks. lpr, eller cat > fil.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Filer som skal installeres" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "" #: ../restore_gui.c:247 msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "" #: ../restore_gui.c:253 #, fuzzy msgid "3. Press the OK button." msgstr "Trykk pÃ¥ HotSync-knappen nÃ¥\n" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "" #: ../search_gui.c:142 #, fuzzy msgid "datebook" msgstr "Synkroniser dagbok" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 #, fuzzy msgid "address" msgstr "Adresse" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 #, fuzzy msgid "todo" msgstr "Synkroniser oppgaver" #: ../search_gui.c:359 #, fuzzy msgid "memo" msgstr "Synkroniser notater" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Synkroniser notater" #: ../search_gui.c:419 #, fuzzy msgid "plugin ?" msgstr "/Tillegg" #: ../search_gui.c:499 msgid "No records found" msgstr "Ingen poster funnet" #: ../search_gui.c:598 msgid "Search" msgstr "Søk" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Søk etter: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Skill store/smÃ¥ bokstaver" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../sync.c:131 #, fuzzy msgid "lock failed\n" msgstr "Ferdig\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Kontroller serieporten og innstillingene\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "" #: ../sync.c:1085 ../sync.c:1423 #, fuzzy, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s er oppdatert, dropper overføring\n" #: ../sync.c:1089 ../sync.c:1427 #, fuzzy, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Henter '%s'... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "Greit\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "" #: ../sync.c:1498 #, fuzzy, c-format msgid "Installing %s " msgstr "Innstallerer %s... " #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "Henter '%s'... " #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "Henter '%s'... " #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Innstallering av %s mislyktes" #: ../sync.c:1619 #, fuzzy msgid "Failed.\n" msgstr "Ferdig\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s innstallert" #: ../sync.c:1736 #, fuzzy, c-format msgid "%s:%d Error getting app info %s\n" msgstr "Feil under lesing" #: ../sync.c:1742 ../sync.c:1772 #, fuzzy, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "Feil under lesing" #: ../sync.c:1763 #, fuzzy, c-format msgid "Error reading appinfo block for %s\n" msgstr "Feil under lesing" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "" #: ../sync.c:2106 ../sync.c:2824 #, fuzzy, c-format msgid "Syncing %s\n" msgstr "Hopper over %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, fuzzy, c-format msgid "Wrote an %s record." msgstr "Skriv ut alle poster" #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "" #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "" #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "" #: ../sync.c:2122 ../sync.c:2475 #, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "" #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, fuzzy, c-format msgid "Wrote a %s record." msgstr "Skriv ut alle poster" #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "" #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "" #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, fuzzy, c-format msgid "Deleted a %s record." msgstr "%d av %d poster" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr "" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr "Trykk pÃ¥ HotSync-knappen nÃ¥\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "" #: ../sync.c:3205 #, fuzzy, c-format msgid "User ID is %d\n" msgstr "Navn" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Utfører hurtigsynkronisering\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Utfører en treg synkronisering\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Takk for at du bruker J-Pilot." #: ../sync.c:3411 ../sync.c:3479 #, fuzzy msgid "Finished.\n" msgstr "Ferdig\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Ingen forfallsdato" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Ingen forfallsdato" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Ingen forfallsdato" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioritet: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Utført" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Ingen forfallsdato" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Utført" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioritet: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Forfallsdato:" #: ../utils.c:330 msgid "Today" msgstr "dag" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Kan ikke Ã¥pne loggfil\n" #: ../utils.c:578 #, fuzzy msgid " may not be installed.\n" msgstr "Filer som skal installeres" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "" #: ../utils.c:623 #, c-format msgid "%s is not a directory\n" msgstr "" #: ../utils.c:628 #, c-format msgid "Unable to get write permission for directory %s\n" msgstr "" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "" #: ../utils.c:1334 ../utils.c:1358 #, fuzzy msgid "Save New Record?" msgstr "Ny post" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Feil under lesing" #: ../utils.c:1973 msgid "Date compiled" msgstr "" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "" #: ../utils.c:1976 #, fuzzy msgid "Installed Path" msgstr "%s innstallert" #: ../utils.c:1978 msgid "pilot-link version" msgstr "" #: ../utils.c:1982 msgid "USB support" msgstr "" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 #, fuzzy msgid "yes" msgstr "Ã¥r" #: ../utils.c:1984 #, fuzzy msgid "Private record support" msgstr "Skriv ut alle poster" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 #, fuzzy msgid "no" msgstr "ingen" #: ../utils.c:1990 msgid "Datebk support" msgstr "" #: ../utils.c:1996 #, fuzzy msgid "Plugin support" msgstr "/Tillegg" #: ../utils.c:2002 #, fuzzy msgid "Manana support" msgstr "/Tillegg" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "" #: ../utils.c:2014 #, fuzzy msgid "GTK2 support" msgstr "/Tillegg" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 msgid "Edit Categories..." msgstr "" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID er 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "En ny PC ID laget. Denne er %d\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "I dag er %A %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "I dag er det %%A %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Feil under lesing" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Feil under lesing" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Ukentlig visning" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "" #: ../Expense/expense.c:96 msgid "Austria" msgstr "" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "" #: ../Expense/expense.c:99 msgid "Canada" msgstr "" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "" #: ../Expense/expense.c:102 msgid "Finland" msgstr "" #: ../Expense/expense.c:103 #, fuzzy msgid "France" msgstr "Angre" #: ../Expense/expense.c:104 msgid "Germany" msgstr "" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "" #: ../Expense/expense.c:107 msgid "India" msgstr "" #: ../Expense/expense.c:108 #, fuzzy msgid "Indonesia" msgstr "ingen" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "" #: ../Expense/expense.c:110 #, fuzzy msgid "Italy" msgstr "/Arkiv/_Installere" #: ../Expense/expense.c:111 msgid "Japan" msgstr "" #: ../Expense/expense.c:112 msgid "Korea" msgstr "" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "" #: ../Expense/expense.c:118 msgid "Norway" msgstr "" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "" #: ../Expense/expense.c:122 #, fuzzy msgid "Spain" msgstr "Skriv ut" #: ../Expense/expense.c:123 #, fuzzy msgid "Sweden" msgstr "uke" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "" #: ../Expense/expense.c:125 #, fuzzy msgid "Taiwan" msgstr "Skriv ut" #: ../Expense/expense.c:126 #, fuzzy msgid "Thailand" msgstr "Skriv ut" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "" #: ../Expense/expense.c:128 msgid "United States" msgstr "" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 #, fuzzy msgid "Dinner" msgstr "ingen" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 #, fuzzy msgid "Hotel" msgstr "Notat" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 #, fuzzy msgid "Laundry" msgstr "Søndag" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 #, fuzzy msgid "Parking" msgstr "Skriv ut" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 #, fuzzy msgid "Snack" msgstr "Synkroniser" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 #, fuzzy msgid "Subway" msgstr "Søndag" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 #, fuzzy msgid "Train" msgstr "Skriv ut" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "" #: ../Expense/expense.c:1376 #, fuzzy msgid "Cash" msgstr "Katter" #: ../Expense/expense.c:1377 msgid "Check" msgstr "" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Tid:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Om %s" #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "Kategori" #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Tid:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "" #: ../Expense/expense.c:1746 #, fuzzy msgid "Month:" msgstr "MÃ¥ned" #: ../Expense/expense.c:1760 #, fuzzy msgid "Day:" msgstr "Dag" # msgid "WeekView" # msgstr "Pr. uke" # msgid "MonthView" # msgstr "Pr. mnd" #: ../Expense/expense.c:1774 #, fuzzy msgid "Year:" msgstr "Ã…r" #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Om %s" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "" #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Kategori" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s er skrevet av\n" "Judd Montgomery (c) 1999-2000.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 #, fuzzy msgid "Incorrect, Reenter KeyRing Password" msgstr "Angi Palm-passord" #: ../KeyRing/keyring.c:1699 #, fuzzy msgid "Enter a NEW KeyRing Password" msgstr "Angi Palm-passord" #: ../KeyRing/keyring.c:1701 #, fuzzy msgid "Enter KeyRing Password" msgstr "Angi Palm-passord" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, c-format msgid "Can't export key %d\n" msgstr "" #. Change Password button #: ../KeyRing/keyring.c:2451 #, fuzzy msgid "" "Change\n" "KeyRing\n" "Password" msgstr "Angi Palm-passord" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Angre" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "" #. Name entry #: ../KeyRing/keyring.c:2660 #, fuzzy msgid "name: " msgstr "Navn" #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "" #. Password entry #: ../KeyRing/keyring.c:2676 #, fuzzy msgid "password: " msgstr "Palm-passord" #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 #, fuzzy msgid "Generate Password" msgstr "Angi Palm-passord" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Synkroniser notater" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s er skrevet av\n" "Judd Montgomery (c) 1999-2000.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Ferdig" #, fuzzy #~ msgid "Field" #~ msgstr "Ferdig\n" #~ msgid "Quick View" #~ msgstr "Kortversjon" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "Kan ikke Ã¥pne loggfil\n" #, fuzzy #~ msgid "category name" #~ msgstr "Kategori" #~ msgid "Close" #~ msgstr "Lukk" #~ msgid "none" #~ msgstr "ingen" #, fuzzy #~ msgid "W" #~ msgstr "On" #, fuzzy #~ msgid "M" #~ msgstr "Ma" #~ msgid "This Event has no particular time" #~ msgstr "Denne avtalen har ingen tidsangivelse" #, fuzzy #~ msgid "Start Time" #~ msgstr "Starter den" #, fuzzy #~ msgid "End Time" #~ msgstr "Ingen tid" #~ msgid "Done" #~ msgstr "Ferdig" #~ msgid "Add" #~ msgstr "Legg til" #, fuzzy #~ msgid "User name" #~ msgstr "Navn" #~ msgid "/Help/PayBack program" #~ msgstr "/Hjelp/PayBack program" #~ msgid "Clear" #~ msgstr "Fjern" #, fuzzy #~ msgid "Show private records" #~ msgstr "/Vis/Gjem - visning av private poster" #, fuzzy #~ msgid "Hide private records" #~ msgstr "/Vis/Gjem - visning av private poster" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Skriv ut alle poster" #, fuzzy #~ msgid "Font" #~ msgstr "MÃ¥ned" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Kan ikke Ã¥pne loggfil\n" #~ msgid "The first day of the week is " #~ msgstr "Første dag i uken er " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Seriellport (/dev/ttyS0, /dev/pilot)" #, fuzzy #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Synkroniser notater" #~ msgid "One record" #~ msgstr "En post" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "Trykk pÃ¥ HotSync-knappen nÃ¥\n" #, fuzzy #~ msgid "Quit" #~ msgstr "Avslutt" #~ msgid "Help" #~ msgstr "Hjelp" #, fuzzy #~ msgid "Filename" #~ msgstr "Navn" #~ msgid "Sync" #~ msgstr "Synkroniser" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "/Vis/Gjem - visning av private poster" #~ msgid "Backup" #~ msgstr "Ta sikkerhetskopi" #~ msgid "Quit!" #~ msgstr "Avslutt" #, fuzzy #~ msgid "Show Preferences" #~ msgstr "Innstillinger" #, fuzzy #~ msgid "About Expense" #~ msgstr "Om %s" #, fuzzy #~ msgid "About KeyRing" #~ msgstr "Om %s" #, fuzzy #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "Kan ikke Ã¥pne loggfil\n" #, fuzzy #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "Kan ikke Ã¥pne loggfil\n" #, fuzzy #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Feil under lesing" #, fuzzy #~ msgid "Cannot open " #~ msgstr "Kan ikke Ã¥pne loggfil\n" #~ msgid "RTh" #~ msgstr "To" jpilot-1.8.2/po/es.po0000664000175000017500000027611112340261240011335 00000000000000# Mensajes en español para jpilot-1.6.0-pre2. # Copyright (C) 2001-2008 Free Software Foundation, Inc. # This file is distributed under the same license as the jpilot package. # Juan Diego , 2000. # Cristian Othón Martínez Vera , 2001-2005, 2008. # msgid "" msgstr "" "Project-Id-Version: jpilot 1.6.0-pre2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2008-05-07 10:39-0500\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Memoria agotada" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Error al leer la información de la categoría %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Error al leer del fichero: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "error" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Este registro fue borrado.\n" "Recupérelo o cópielo para hacer cambios.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "No se puede abrir el fichero: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "No se puede abrir el fichero: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "El fichero parece que no está en el formato de address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Sin llenar" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "No" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Sí" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s es un directorio" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Error al Abrir el Fichero" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "¿Desea sobreescribir el fichero %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "¿Sobreescribir el Fichero?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Error al abrir el Fichero: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "No se puede exportar la dirección %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Categoría: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privado" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, fuzzy, c-format msgid "%s: " msgstr "%s%s: %s" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "Correo electrónico" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Tipo de exportación desconocido\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Nombre/Compañía" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Nombre/Compañía" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Compañía/Nombre" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "No se puede modificar un registro que fue borrado\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "La categoría no es legal\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "ejecutando el comando comando = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "Cumpleaños" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "No se encuentra el programa externo, u otro error" #: ../address_gui.c:2577 #, fuzzy msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" "J-Pilot no puede encontrar el programa externo \"convert\"\n" "o sucedió un error al ejecutar convert.\n" "Tal vez necesite instalar el paquete ImageMagick" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "La orden ejecutada fue \"%s\"\n" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "el código de devolución fue %d\n" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "falló el bloqueo\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "Agregar Foto" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Categoría: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Correo" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Marcar" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Sin nombre-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 registros" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d de %d registros" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Nombre" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Dirección" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Otro" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Nota" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "Se regresa a la base de datos Address\n" #: ../address_gui.c:3965 msgid "Phone" msgstr "Teléfono" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Búsqueda Rápida: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Cancelar" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Cancelar las modificaciones" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Borrar" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Borrar el registro seleccionado" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Recuperar" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Recuperar el registro seleccionado" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Copiar" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Copiar el registro seleccionado" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nuevo Registro" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Agregar un registro nuevo" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Agregar Registro" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Agregar el registro nuevo" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Aplicar Cambios" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Confirmar las modificaciones" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privado" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "Cambiar Foto" #: ../address_gui.c:4174 msgid "Remove Photo" msgstr "Borrar Foto" #: ../address_gui.c:4246 msgid "Show In List" msgstr "Mostrar Como Lista" #: ../address_gui.c:4347 msgid "Reminder" msgstr "Recordatorio" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Días" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Todos" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minutos" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Horas" #: ../alarms.c:253 msgid "Remind me" msgstr "Recordarme" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "No se puede abrir el fichero: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Recordatorio de Cita" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Cita Pasada" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Cita Pospuesta" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Cita" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Alarma de J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "¿Fichero PC corrupto?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "falló fseek - error fatal\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "falló el renombrado" #: ../category.c:407 msgid "Move" msgstr "Mover" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Editar Categorías" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Ya se utilizó el número máximo de categorías (16)" #: ../category.c:440 msgid "Enter New Category" msgstr "Editar Nuevas Categorías" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "Error de Editar Categorías" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Se debe seleccionar una categoría para renombrar" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Introducir Nuevo Nombre de Categoría" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Se debe seleccionar una categoría para borrar" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Hay %d registros en %s.\n" "¿Quiere moverlos a %s, o borrarlos?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "estado inválido fichero %s línea %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "La categoría %s no se puede usar más de una vez" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Categoría:" #: ../category.c:834 msgid "New" msgstr "Nueva" #: ../category.c:841 msgid "Rename" msgstr "Renombrar" #: ../dat.c:512 msgid "unknown type =" msgstr "tipo desconocido =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "cuenta de campos por fila != %d, formato desconocido\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "cuenta de campos != %d, formato desconocido\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Formato desconocido, el fichero tiene un esquema erróneo\n" #: ../dat.c:636 msgid "File schema is:" msgstr "El esquema del fichero es:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Debería ser: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%s:%d Registro %d, campo %d: Tipo inválido. Se esperaba %d, se encontró %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "se terminó la lectura del fichero\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "Se encontró un repeatType (%d) desconocido en DatebookDB\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Repetición por:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "se Repite en los Días:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Repetición por:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "se Repite en los Días:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "se Repite en los Días:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "se Repite en los Días:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Do" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Lu" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ma" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Mi" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Ju" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Vi" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Sa" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Termina En La Fecha" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "se Repite en los Días:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "número de registros = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Nota" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarma" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Repetición por:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Día de la semana" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Texto de la descripción de la cita > %d, truncando a %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Error" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "El fichero parece que no está en el formato de datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Tipo de exportación desconocido" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportar" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exportar Todos los Registros de la Agenda" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Guardar como" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Explorar" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Categorías de Agenda" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ninguno" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Comienza En La Fecha" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Termina En La Fecha" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "domingo" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "lunes" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "martes" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "miércoles" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "jueves" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "viernes" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "sábado" #: ../datebook_gui.c:1760 msgid "4th" msgstr "Cuarto" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Último" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Esta cita se puede repetir\n" "en el cuarto %s\n" "del mes, o en el último\n" "%s del mes.\n" "¿Cúal prefiere?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "¿Pregunta?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Este es un evento periódico.\n" "¿Desea aplicar estos cambios\n" "al evento ACTUAL, o a TODAS\n" "las ocurrencias de este\n" "evento?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Actual" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "día" #: ../datebook_gui.c:2028 msgid "week" msgstr "semana" #: ../datebook_gui.c:2029 msgid "month" msgstr "mes" #: ../datebook_gui.c:2030 msgid "year" msgstr "año" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "No puede tener una cita que se repite cada %d %s(s)\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "No puede tener una cita con repetición semanal que no se repita en cualquier " "día de la semana." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Sin Hora" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Cita Inválida" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "La Fecha de Término de esta cita\n" "es anterior a la fecha de inicio." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Sin Fecha" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Error en advanceUnits de DateBookDB = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (HOY)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Semana" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Ver citas por semana" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Mes" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Ver citas por mes" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Categorías" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Hora" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Mostrar Lista de Pendientes" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Tarea" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Límite" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarma" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Fecha:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Inicia en" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Termina en" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "Etiquetas DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Día" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Año" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Este evento no se repetirá" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "la Frecuencia es Cada" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Día(s)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Termina en" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Semana(s)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Mes(es)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Repetición por:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Día de la semana" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Fecha" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Año(s)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Marcador de Teléfono" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Prefijo 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Prefijo 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Prefijo 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Número de teléfono:" #: ../dialer.c:319 msgid "Extension" msgstr "Extensión" #: ../dialer.c:341 msgid "Dial Command" msgstr "Comando de Marcado" #: ../export_gui.c:121 msgid "File Browser" msgstr "Explorador de Ficheros" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Seleccionar registros a exportar" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Utilizar las Teclas Ctrl y Mayúsculas" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importar" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "El Registro fue marcado como privado" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "El Registro no fue marcado como privado" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "La categoría antes de la importación era: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "El registro se colocará en la categoría [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importar Todo" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Saltar" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "" "Para cambiarlo a un directorio oculto escríbalo a continuación y presione TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importar Tipo de Fichero" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Ficheros para instalar" #: ../install_gui.c:372 msgid "Install" msgstr "Instalar" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Instalar Usuario" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" "Un dispositivo PalmOS(c) necesita un nombre y un ID de usuario para " "sincronizar adecuadamente." #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" "Si desea sincronizar más de un dispositivo PalmOS(c), cada uno debe tener un " "ID diferente y de preferencia un nombre de usuario diferente." #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "La mayoría utiliza su nombre o apodo para el nombre de usuario." #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Nombre de Usuario" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "El ID debe ser un número aleatorio." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID de Usuario" #: ../jpilot.c:317 msgid "Print" msgstr "Imprimir" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "No hay soporte de impresora para este conducto." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "No hay soporte de importación para este conducto." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "No hay soporte de exportación para este conducto." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Cancelar la Sincronización" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Esta palm no tiene el mismo nombre de usuario\n" "o ID de usuario con el cual se sincronizó la\n" "última vez. La sincronización puede tener\n" "efectos indeseados. Lea el manual de usuario\n" "si no está seguro." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Esta palm tiene un id de usuario NULO.\n" "Cada palm debe tener un id de usuario único para poder sincronizar " "adecuadamente\n" "Si ha sido borrado, use la opción \"restaurar\" del menú para restaurarla,\n" "o utilice pilot-xfer.\n" "Para agregar un nombre de usuario y ID utilice la herramienta de línea de " "comandos install-user,\n" "o utilice instalar usuario del menú\n" "Lea el manual de usuario si tiene dudas." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Cancelar la Sincronización" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Sincronizar de Cualquier Manera" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Problema de Sincronización" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr "Usuario: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Comando desconocido en el proceso de sincronización\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Acerca de %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Fichero" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Fichero/arrancar" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Fichero/_Buscar" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Fichero/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Fichero/_Instalar" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Fichero/Importar" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Fichero/Exportar" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Fichero/Preferencias" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Fichero/Im_primir" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Fichero/Instalar _Usuario" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Fichero/Restaurar Dispositivo Portátil" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Fichero/_Salir" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Ver" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Ver/Ocultar los Registros Privados" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Ver/Mostrar los Registros Privados" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Ver/Enmascarar los Registros Privados" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Ver/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Ver/Agenda" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Ver/Direcciones" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Ver/Pendientes" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Ver/Memorándums" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Plugins" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Ayuda" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Ayuda/Acerca de J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Plugins/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Ayuda/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendario:inicio_semana:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "No se cargaron los plugins.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Se ignoran todas las alarmas.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Se ignoran las alarmas pasadas.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "No se puede abrir la tubería\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Mostrar los registros privados Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Ocultar los registros privados Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Enmascarar los registros privados Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Sincronizar su palm con el escritorio Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Sincronizr direcciones" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Sincronizar su palm con el escritorio\n" "y entonces hacer un respaldo" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Agenda/Ir al Día de Hoy" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Libreta de Direcciones" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Lista de Pendientes" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Bloc de Notas" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Hazlo ahora" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Recordar más tarde" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "¡No lo repita!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot está utilizando las herramientas gráficas GTK2. Esta versión de usa " "UTF-8 para codificar los caracteres.\n" "Debe escoger un conjunto de caracteres UTF-8 para que pueda ver los " "caracteres que no sean ASCII (por ejemplo, acentos)\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Conjunto de Caracteres " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Escoja una codificación UTF-8" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +D +A +T +M formato como date +format.\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v muestra la versión y termina.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h muestra la ayuda y termina.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f muestra la ayuda para códigos de formato.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -D vuelca DateBook.\n" #: ../jpilot-dump.c:97 #, fuzzy, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr " -i vuelca DateBook en formato iCalendar.\n" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N vuelta las aplicaciones de hoy en DateBook.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NAAAA/MM/DD vuelca las aplicaciones de AAAA/MM/DD en DateBook.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "-A vuelca Libreta de Direcciones.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T vuelca la lista de Pendientes como CSV.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M vuelca Memos.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "No se puede abrir el fichero: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " Se leen las opciones de J-Pilot para obtener el puerto, tasa, número de " "respaldos, etc.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v muestra la versión y opciones de compilación y termina.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d muestra la información de depuración a la salida estándard.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -p evita la carga de los plugins.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = ciclo, de otra forma sincroniza una vez y termina.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p {puerto} = Usa este puerto para sincronizar en lugar del especificado en " "las opciones.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Error al abrir el fichero: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Error al abrir el fichero: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Error" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "Su variable de ambiente HOME es demasiado larga para mí\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, fuzzy, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" "Un dispositivo PalmOS(c) necesita un nombre y un ID de usuario para " "sincronizar adecuadamente." #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Este registro ya fue borrado.\n" "Está destinado a ser borrado de la Palm en la próxima sincronización.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "No se puede abrir el fichero de registros PC\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "No se puede encontrar el registro a borrar.\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Versión de encabezado %d desconocida\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Error al leer el fichero: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Error al leer el fichero: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Error al abrir el fichero: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Error al leer %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Error al leer el fichero PC 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Error al leer el fichero PC 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Versión desconocida de encabezado PC = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "No se puede abrir el fichero de registro, cediendo.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "No se puede abrir el fichero de registro\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Texto de la nota > 65535, se trunca\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Nota Importada %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "El fichero parece que no está en el formato de memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "No se puede exportar la nota %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Bloc de Notas" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Vista Mensual" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "último cambio: " #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Contraseña de la Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Incorrecta, Reintroducir la Contraseña de PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Introducir la Contraseña de PalmOS" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "el fichero _to_install\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Error al leer del fichero: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "ciclo infinito" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Al leer %s%s línea 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Versión Errónea\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Revise preferencias->conduits\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "No se puede abrir el plugin [%s]\n" " error [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " el plugin es inválido: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Plugin:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Este plugin es versión (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "Es demasiado antiguo para funcionar con esta versión de J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d de %B de %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%B %d, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Preferencias" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Local" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Opciones" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Agenda" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Lista de Pendientes" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Notas" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarmas" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Conductos" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Formato de fecha corta " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Formato de fecha larga " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Formato de hora " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Mi fichero de colores GTK es " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Problema de Sincronización" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "Tasa Serial" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Número de respaldos para archivar" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Mostrar los registros borrados (por omisión NO)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Mostrar los registros borrados modificados (por omisión NO)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" "Pedir confirmación para la instalación de ficheros (J-Pilot -> PDA) (por " "omisión SÍ)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Mostrar consejos de botones (por omisión SÍ)" #: ../prefs_gui.c:666 #, fuzzy msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "Usar la base de datos Datebook (Palm OS <= 3.5)" #: ../prefs_gui.c:669 #, fuzzy msgid "Use Calendar database (Palm OS > 5.2)" msgstr "Usar la base de datos Calendar (Palm OS >= 4.0)" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Remarcar los días del calendario con citas" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Anotar hoy en las vistas de día, semana y mes" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Agregar años en aniversarios en las vistas de día, semana y mes" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Usar las marcas de notas DateBk" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Soporte para DateBk desactivado en esta compilación" #: ../prefs_gui.c:725 #, fuzzy msgid "Use Address database (Palm OS < 5.2.1)" msgstr "Usar la base de datos Address (Palm OS <= 3.5)" #: ../prefs_gui.c:728 #, fuzzy msgid "Use Contacts database (Palm OS > 5.2)" msgstr "Usar la base de datos Contacts (Palm OS >= 4.0)" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Comando de Correo" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s se reemplaza con la dirección de correo electrónico" #: ../prefs_gui.c:783 #, fuzzy msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "Usar la base de datos ToDo (Palm OS <= 3.5)" #: ../prefs_gui.c:786 #, fuzzy msgid "Use Task database (Palm OS > 5.2)" msgstr "Usar la base de datos Task (Palm OS => 4.0)" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Ocultar los Pendientes Completados" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Ocultar los Pendientes sin completar" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Registrar Fecha de Término" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Utilizar la base de datos Mañana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Utilizar el número de días límite por omisión" #: ../prefs_gui.c:856 #, fuzzy msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Usar la base de datos Memo (Palm OS <= 3.5)" #: ../prefs_gui.c:859 #, fuzzy msgid "Use Memos database (Palm OS > 5.2)" msgstr "Usar la base de datos Memos (Palm OS => 4.0)" #: ../prefs_gui.c:862 msgid "Use Memo32 database (pedit32)" msgstr "Usar la base de datos Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Abrir ventanas de alarma para recordatorios de citas" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Ejecutar este comando" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "AVISO: ¡¡¡ejecutar comandos arbitrarios del shell puede ser peligroso!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Comando de la Alarma" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "se reemplaza %t con la hora de la alarma" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "se reemplaza %d con la fecha de la alarma" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "se reemplaza %D con la descripción de la alarma" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "se reemplaza %N con la nota de la alarma" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "" "%D (sustitución de la descripción) está desactivado en esta compilación" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%n (sustitución de notas) está desactivado en esta compilación" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Sincronizar agenda" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Sincronizr direcciones" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Sincronizar pendientes" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Sincronizar memorándums" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Sincronizar Mañana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Usar J-OS (PalmOS No Japonés:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Sincronizando %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Opciones de Impresión" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Tamaño del Papel" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Impresión Diaria" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Impresión Semanal" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Impresión Mensual" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Se borró un registro %s." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Todos los registros en esta categoría" #: ../print_gui.c:272 msgid "Print all records" msgstr "Imprimir todos los registros" #: ../print_gui.c:294 msgid "One record per page" msgstr "Un registro por página" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Líneas en blanco alrededor de cada registro" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Comando de Impresión (p.e. lpr, ó cat > fichero.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Restaurar Dispositivo Portátil" #: ../restore_gui.c:174 ../restore_gui.c:176 #, fuzzy msgid "Unable to convert filename for GTK display\n" msgstr "" "No se puede convertir el nombre de fichero para mostrar en GTK\n" "El fichero %s no se restaurará\n" #: ../restore_gui.c:175 #, fuzzy msgid "See console log to find which file will not be restored\n" msgstr "" "No se puede convertir el nombre de fichero para mostrar en GTK\n" "Vea el registro de la consola para encontrar cual fichero no se restaurará" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Ficheros para instalar" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Para restaurar su dispositivo portátil:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Escoja todas las aplicaciones que desee restaurar. Por omisión son todas." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Introduzca el Nombre de Usuario y el ID de Usuario." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Presione el botón OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "" "Esto sobreescribirá los datos que están actualmente en el dispositivo " "portátil." #: ../search_gui.c:142 msgid "datebook" msgstr "agenda" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "dirección" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "pendientes" #: ../search_gui.c:359 msgid "memo" msgstr "memorándums" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "memorándums" #: ../search_gui.c:419 msgid "plugin ?" msgstr "¿ plugin ?" #: ../search_gui.c:499 msgid "No records found" msgstr "No se encontraron registros" #: ../search_gui.c:598 msgid "Search" msgstr "Buscar" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Buscar por: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Sensible a Mayúsculas/Minúsculas" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "falló al abrir el fichero de bloqueo\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "falló el bloqueo\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "el fichero de sincronización está bloqueado por el pid %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "falló el desbloqueo\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "la sincronización está bloqueada por el pid %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Revise su puerto serial y sus opciones\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "No se leer el directorio inicial\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID de Creador '%s') está actualizado, se saltó la obtención.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Obteniendo '%s' (ID de Creador '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Falló, no se puede crear el fichero %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Falló, no se puede respaldar la base de datos %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Saltando %s (ID de Creador '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Instalando %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "¡No se puede abrir el fichero: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "No se puede sincronizar el fichero: '%s': ¿Fichero corrupto?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(El ID de Creador es '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(El ID de Creador es '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "No se puede abrir el fichero: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Falló la instalación de %s" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Falló.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s instalado " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Error al obtener la información de la apliciación %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Error al desempaquetar la información de la aplicación %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Error al leer el bloque de información de la aplicación %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "No se puede agregar la categoría %s al remoto.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Demasiadas categorías en el remoto.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Todos los registros del escritorio en %s se moverán a %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Sincronizando %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Se escribió un registro %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Falló la escritura de un registro %s." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Falló el borrado de un registro %s." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Se borró un registro %s." #: ../sync.c:2122 ../sync.c:2475 #, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Conflicto de Sincronización: se duplicó un registro %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Se escribió un registro %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Falló la escritura de un registro %s." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Falló el borrado de un registro %s." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Se borró un registro %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "Conflicto de Sincronización: se duplicó un registro %s." #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "Falló dlp_DeleteRecord\n" "Esto puede ser porque el registro ya fue borrado en la Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Se terminó de instalar la información del usuario.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Sincronizando en el dispositivo %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Presione el botón HotSync ahora\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Último Nombre de Usuario Sincronizado-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Último ID de Usuario Sincronizado-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "Este Nombre de Usuario-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "Este ID de Usuario-->\"%d\"\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "El Nombre de Usuario es \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "El ID de Usuario es %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "últimoSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Este PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Sincronización cancelada\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Finished restoring handheld.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Tal vez necesite sincronizar para actualizar J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Haciendo una sincronización rápida.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Haciendo una sincronización lenta.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Gracias por usar J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Finished.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Saliendo con estado %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Texto de la descripción de Pendiente > %d, truncando a %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "texto de la nota de Pendientes > %d, truncando a %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Fecha Límite" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "El fichero parece no estar en el formato de todo.dat\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "No se puede exportar el pendiente %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Fecha Límite" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Fecha Límite" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioridad: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Completada" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Prioridad fuera de rango\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Sin Fecha" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Completada" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioridad: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Fecha Límite:" #: ../utils.c:330 msgid "Today" msgstr "Hoy" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "No se puede encontrar el fichero DB %s vacío: %s.\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr "tal vez no esté instalado.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "No se puede crear el directorio %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s es un directorio" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "No se puede escribir ficheros en el directorio %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "¿Guardar el Registro Modificado?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "¿Desea guardar los cambios hechos a este registro?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "¿Guardar el Registro Nuevo?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "¿Desea guardar este registro nuevo?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "ciclo infinito, interrumpiendo\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p evita la carga de los plugins.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" " -a ignora las alarmas perdidas desde la última vez que se ejecutó este " "programa.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignora todas las alarmas, pasadas y futuras.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" " Las variables de ambiente PILOTPORT, y PILOTRATE se utilizan para " "especificar\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " en cúal puerto sincronizar, y a qué velocidad.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Si no se establece PILOTPORT, entonces usa /dev/pilot por omisión.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Error al leer el fichero" #: ../utils.c:1973 msgid "Date compiled" msgstr "Fecha de compilación" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Compilado con las siguientes opciones:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Ruta de Instalación" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link versión" #: ../utils.c:1982 msgid "USB support" msgstr "soporte USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "sí" #: ../utils.c:1984 msgid "Private record support" msgstr "Soporte para registros privados" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "no" #: ../utils.c:1990 msgid "Datebk support" msgstr "Soporte para Datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Soporte para plugins" #: ../utils.c:2002 msgid "Manana support" msgstr "Soporte para Mañana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Soporte para NLS (idiomas extranjeros)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Soporte para GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "No se puede la variable de ambiente HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "Su variable de ambiente HOME es demasiado larga para mí\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Editar Categorías" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "el ID de PC es 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Se ha generado un ID nuevo de PC. Es %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Hoy es %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Hoy es %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Error al escribir el encabezado PC al fichero: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Error al escribir el siguiente id al fichero: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Vista Semanal" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australia" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Austria" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Bélgica" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brasil" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canadá" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Dinamarca" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "UE (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finlandia" #: ../Expense/expense.c:103 msgid "France" msgstr "Francia" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Alemania" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Islandia" #: ../Expense/expense.c:107 msgid "India" msgstr "India" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonesia" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irlanda" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italia" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japón" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Corea" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxemburgo" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malasia" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "México" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Países Bajos" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nueva Zelandia" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Noruega" # ¡Ups! Es abreviatura de Corea o de China? cfuga #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "R.P.Corea" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipinas" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapur" #: ../Expense/expense.c:122 msgid "Spain" msgstr "España" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Suecia" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Suiza" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taiwán" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Tailandia" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Reino Unido" #: ../Expense/expense.c:128 msgid "United States" msgstr "Estados Unidos" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Gastos" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "TarifaAérea" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Desayuno" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Autobús" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "ComidadNegocios" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "RentaAuto" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Cena" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Diversión" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Combustible" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Regalos" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Incidentales" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Lavandería" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limusina" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Alojamiento" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Almuerzo" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Millaje" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Estacionamiento" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Estampillas" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Bocadillo" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Subterráneo" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Recursos" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Teléfono" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Propinas" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Peajes" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Tren" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Gastos: Tipo de gasto desconocido\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Gastos: Tipo de pago desconocido\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Efectivo" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Cheque" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Tarjeta de Crédito" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Prepago" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Tipo:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Cantidad:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Categoría:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Tipo:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Pago:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Moneda:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Mes:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Día:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Año:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Cantidad:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Vendedor:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Ciudad:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Asistentes" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s %s fue escrito por\n" "Judd Montgomery (c) 1999-2002.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size demasiado pequeño\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Incorrecta, Reintroducir la Contraseña de KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Introducir una Contraseña NUEVA de KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Introducir la Contraseña de KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: no se encuentra el fichero %s.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: Pruebe sincronizando.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "No se puede exportar la nota %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Cambiar\n" "Contraseña\n" "KeyRing" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Modificado" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Cuenta" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "nombre: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "cuenta: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "contraseña: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "último cambio: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Generar Contraseña" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "SyncTime" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s %s fue escrito por\n" "Judd Montgomery (c) 1999-2002.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "synctime: Palm OS Versión 3.25 y 3.30 no admiten SyncTime\n" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "synctime: NO se modifica la hora en el pilot\n" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "synctime: Se modifica la hora en el pilot..." #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Hecho\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Sobreescribir el Fichero" #~ msgid "Field" #~ msgstr "Campo" #~ msgid "email command empty\n" #~ msgstr "comando de correo vacío\n" #~ msgid "Unable to open %s%s file\n" #~ msgstr "No se puede abrir el fichero %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "No se puede abrir el fichero de alarmas %s.alarms\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "No se puede editar la categoría %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "No se puede borrar la categoría %s.\n" #~ msgid "category name" #~ msgstr "nombre de categoría" #~ msgid "debug" #~ msgstr "depurar" #~ msgid "Close" #~ msgstr "Cerrar" #~ msgid "none" #~ msgstr "ninguno" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "Se encontró un repeatType desconocido en DatebookDB\n" #~ msgid "W" #~ msgstr "S" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "Este Evento no tiene una hora en particular" #~ msgid "Start Time" #~ msgstr "Tiempo de Inicio" #~ msgid "End Time" #~ msgstr "Tiempo de Fin" #~ msgid "Dismiss" #~ msgstr "Descartar" #~ msgid "Done" #~ msgstr "Hecho" #~ msgid "Add" #~ msgstr "Agregar" #~ msgid "Remove" #~ msgstr "Remover" #~ msgid "User name" #~ msgstr "Nombre de usuario" #~ msgid " -v = version\n" #~ msgstr " -v = versión\n" #~ msgid " -h = help\n" #~ msgstr " -h = ayuda\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = ejecución en modo de depuración\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = no carga plugins.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = Hace una sincronización y después un respaldo, de otra forma sólo " #~ "sincroniza.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Especificación de geometría inválida: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Ayuda/programa PayBack" #~ msgid "Font Selection Dialog" #~ msgstr "Diálogo de Selección de Tipo de Letra" #~ msgid "Clear" #~ msgstr "Borrar" #~ msgid "Show private records" #~ msgstr "Mostrar los registros privados" #~ msgid "Hide private records" #~ msgstr "Ocultar los registros privados" #~ msgid "Mask private records" #~ msgstr "Enmascarar los registros privados" #~ msgid "Font" #~ msgstr "Tipo de letra" #~ msgid "Go to the menu \"" #~ msgstr "Vaya al menú \"" #~ msgid "\" and change the \"" #~ msgstr "\" y cambie el \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "No se puede abrir el fichero de registros PC\n" #~ msgid "The first day of the week is " #~ msgstr "El primer día de la semana es " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Puerto Serial (/dev/ttyS0, /dev/pilot)" #~ msgid "One record" #~ msgstr "Un registro" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: presione el botón hotsync en la base o ejecute \"kill %d\"\n" #~ msgid "Finished\n" #~ msgstr "Terminado\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Último Nombre de Usuario = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Último ID de Usuario = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Nombre de Usuario = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID de Usuario = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: número de registros = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disco: número de registros = %d\n" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i hace que este programa se iconifique al iniciar.\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "Parece que %s no es un directorio.\n" #~ "Necesita serlo.\n" #~ msgid "Expense: Unknown category\n" #~ msgstr "Gastos: Categoría desconocida\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Su variable de ambiente HOME es demasiado larga (>1024)\n" #~ msgid "Directory" #~ msgstr "Directorio" #~ msgid "Filename" #~ msgstr "Nombre de fichero" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Vista Rápida" #~ msgid "Answer: " #~ msgstr "Respuesta: " #~ msgid "Quit" #~ msgstr "Salir" #~ msgid "Help" #~ msgstr "Ayuda" #~ msgid "Sync" #~ msgstr "Sincronizar" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Tasa Serial (No afecta en USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Sincronizar memo32 (pedit32)" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p no carga plugins.\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "TarjetaCrédito" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Copy the record Ctrl+O" #~ msgstr "Copiar el registro Ctrl+O" #~ msgid "Add a new record Ctrl+N" #~ msgstr "Agregar un registro nuevo Ctrl+N" #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "Agregar el registro nuevo Ctrl+Entrar" #~ msgid "Commit the modifications Ctrl+Enter" #~ msgstr "Confirmar las modificaciones Ctrl+Entrar" #~ msgid "Backup" #~ msgstr "Respaldar" #~ msgid "OK, I will do it" #~ msgstr "OK, eso se hará" #~ msgid "\n" #~ msgstr "\n" #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ " [ [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v muestra la versión y las opciones de compilación y termina.\n" #~ " -h muestra la ayuda y termina.\n" #~ " -d muestra información de depuración en la salida estándar.\n" #~ " -p no carga los plugins.\n" #~ " -a ignora las alarmas perdidas desde la última vez que se ejecutó\n" #~ " este programa.\n" #~ " -A ignora todas las alarmas, pasadas y futuras.\n" #~ " -i hace que jpilot se iconifique después de cargarse.\n" #~ " Las variables de ambiente PILOTPORT y PILOTRATE se utilizan para " #~ "especificar\n" #~ " en qué puerto se sincroniza, y a qué velocidad.\n" #~ " Si PILOTPORT no está definido entonces por omisión es /dev/pilot.\n" #~ msgid "Quit!" #~ msgstr "¡Salir!" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): Memoria agotada\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "Falló dlp_WriteRecord\n" #~ msgid "" #~ "\n" #~ "Unable to open '%s'!\n" #~ msgstr "" #~ "\n" #~ "¡No se puede abrir '%s'!\n" #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "No se puede abrir el fichero %s_to_install\n" #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "No se puede abrir el fichero %s_to_install.tmp\n" #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): Memoria agotada\n" #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Error al leer de %s: %s %d\n" #~ msgid "Warning ToDo description too long, truncating to %d\n" #~ msgstr "" #~ "Aviso la descripción de la Lista de Pendientes es demasiado larga, " #~ "truncando a %d\n" #~ msgid "Show Preferences" #~ msgstr "Mostrar Preferencias" #~ msgid "About Expense" #~ msgstr "Acerca de Gastos" #~ msgid "/Web/Netscape/%s" #~ msgstr "/Web/Netscape/%s" #~ msgid "/Web/Mozilla/%s" #~ msgstr "/Web/Mozilla/%s" #~ msgid "/Web/Galeon/%s" #~ msgstr "/Web/Galeon/%s" #~ msgid "/Web/Opera/%s" #~ msgstr "/Web/Opera/%s" #~ msgid "/Web/GnomeUrl/%s" #~ msgstr "/Web/GnomeUrl/%s" #~ msgid "/Web/Lynx/%s" #~ msgstr "/Web/Lynx/%s" #~ msgid "/Web/Links/%s" #~ msgstr "/Web/Links/%s" #~ msgid "/Web/W3M/%s" #~ msgstr "/Web/W3M/%s" #~ msgid "/Web/Konqueror/%s" #~ msgstr "/Web/Konqueror/%s" #~ msgid "Holland" #~ msgstr "Holanda" #~ msgid "U.K." #~ msgstr "G.B." #~ msgid "U.S.A." #~ msgstr "EE.UU." #~ msgid "Cannot open " #~ msgstr "No se puede abrir " #~ msgid "RTh" #~ msgstr "Ju" #~ msgid "Time:" #~ msgstr "Hora:" #~ msgid "Last Syned UserID-->\"%d\"\n" #~ msgstr "Último ID de Usuario Sincronizado-->\"%d\"\n" jpilot-1.8.2/po/POTFILES.in0000664000175000017500000000077412320101153012135 00000000000000address.c address_gui.c alarms.c calendar.c category.c contact.c dat.c datebook.c datebook_gui.c dialer.c export_gui.c import_gui.c install_gui.c install_user.c jpilot.c jpilot-dump.c jpilot-merge.c jpilot-sync.c libplugin.c log.c memo.c memo_gui.c monthview_gui.c otherconv.c password.c pidfile.c plugins.c prefs.c prefs_gui.c print.c print_gui.c print_headers.c print_logo.c restore_gui.c search_gui.c sync.c todo.c todo_gui.c utils.c weekview_gui.c Expense/expense.c KeyRing/keyring.c SyncTime/synctime.c jpilot-1.8.2/po/vi.po0000664000175000017500000027263312340261240011351 00000000000000# Vietnamese translation for JPilot. # Copyright © 2006 Free Software Foundation, Inc. # Clytie Siddall , 2006. # msgid "" msgstr "" "Project-Id-Version: jpilot-0.99.8-pre12\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2006-02-09 20:14+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0\n" "X-Generator: LocFactoryEditor 1.6b36\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Hết bá»™ nhá»›" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Gặp lá»—i khi Ä‘á»c thông tin phân loại %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Gặp lá»—i khi Ä‘á»c tập tin: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "lá»—i" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Mục ghi này bị xoá bá».\n" "Äể thay đổi gì, hãy há»§y xoá bá» nó hoặc sao chép nó.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Không thể mở tập tin: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Không thể mở tập tin: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Tập tin này có vẻ không phải là tập tin dạng <địa_chỉ.dat>.\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Chưa ghi lưu" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "ÄÆ°á»£c" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Không" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Có" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s là thư mục" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Gặp lá»—i khi mở tập tin" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Bạn có muốn ghi đè lên tập tin %s không?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Ghi đè tập tin không?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Gặp lá»—i khi mở tập tin: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Không thể xuất địa chỉ %d.\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Loại: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Riêng" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "Thư Ä‘iện tá»­" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Kiểu xuất lạ\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Tên/Công ty" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Tên/Công ty" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Công ty/Tên" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Bạn không thể sá»­a đổi má»™t mục ghi bị xoá bá».\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Phân loại không được phép\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "Ä‘ang thá»±c hiện lệnh = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "việc khoá bị lá»—i\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Loại: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Lá thư" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Quay số" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Không tên-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 mục ghi" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d trên %d bản ghi" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Tên" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Äịa chỉ" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Khác" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Ghi chú" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Äiện thoại" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Tìm nhanh: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Thôi" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Thôi sá»­a đổi gì" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Xoá bá»" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Xoá bá» mục ghi được chá»n" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Phục hồi" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Phục hồi mục ghi được chá»n" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Chép" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Sao chép mục ghi được chá»n" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Mục ghi má»›i" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Thêm má»™t mục ghi má»›i" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Thêm mục ghi" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Thêm mục ghi má»›i đó" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Ãp dụng thay đổi" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Ghi lưu các sá»­a đổi" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Riêng" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Gỡ bá»" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Hiện trong\n" "danh sách" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Nhắc nhở tôi" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Ngày" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Tất cả" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Phút" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Giá»" #: ../alarms.c:253 msgid "Remind me" msgstr "Nhắc nhở tôi" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Không thể mở tập tin: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Bá»™ nhắc nhở cuá»™c hẹn" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Cuá»™c hẹn qua" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Cuá»™c hẹn đã hoãn" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Cuá»™c hẹn" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Báo động J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Tập tin PC bị há»ng không?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "việc fseek bị lá»—i — lá»—i nghiêm trá»ng\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "việc thay đổi tên bị lá»—i" #: ../category.c:407 msgid "Move" msgstr "Chuyển" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Sá»­a đổi phân loại" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Số phân loại tối (16) Ä‘a được dùng" #: ../category.c:440 msgid "Enter New Category" msgstr "Gõ loại má»›i" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Sá»­a đổi phân loại" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Bạn phải chá»n phân loại cần thay đổi tên" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Gõ tên loại má»›i" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Bạn phải chá»n phân loại cần xoá bá»" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Có %d mục ghi trong %s.\n" "Bạn có muốn di chuyển chúng vào %s, hoặc xoá bá» chúng không?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "tập tin tính trạng không hợp lệ %s, dòng %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Không thể dùng phân loại %s nhiá»u lần." #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Loại:" #: ../category.c:834 msgid "New" msgstr "Má»›i" #: ../category.c:841 msgid "Rename" msgstr "Äổi tên" #: ../dat.c:512 msgid "unknown type =" msgstr "không biết kiểu =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "số trưá»ng trong má»—i hàng != %d, dạng thức không rõ\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "số trưá»ng != %d, dạng thức không rõ\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Dạng thức không rõ, tập tin có giản đồ không đúng.\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Giản đồ tập tin là:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Nó nên là: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d Mục ghi %d, trưá»ng %d: Kiểu không hợp lệ. Ngá» %d, còn tìm %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "việc Ä‘á»c tập tin bị chấm dứt\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" "Không biết kiểu làm lại repeatType (%d) được tìm trong cÆ¡ sở dữ liệu lịch " "DatebookDB\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Lặp lại theo :" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Lập lại vào Hôm:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Lặp lại theo :" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Lập lại vào Hôm:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Lập lại vào Hôm:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Lập lại vào Hôm:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "CN" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "T2" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "T3" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "T4" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "T5" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "T6" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "T7" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Ngày cuối" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Lập lại vào Hôm:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "số mục ghi = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Ghi chú" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Báo động" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Lặp lại theo :" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Hôm cá»§a tuần" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Chuá»—i mô tả cuá»™c hẹn > %d nên cắt xén nó thành %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Lá»—i" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Tập tin có vẻ không phải có dạng thức \n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Không biết kiểu xuất" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Xuất" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Xuất ra má»i mục ghi cá»§a Sổ Ngày" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Lưu dạng" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Duyệt" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Loại Sổ Ngày" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Không có" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Ngày đầu" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Ngày cuối" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Chá»§ Nhật" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Thứ Hai" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Thứ Ba" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Thứ Tư" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Thứ Năm" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Thứ Sáu" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Thứ Bảy" #: ../datebook_gui.c:1760 msgid "4th" msgstr "thứ 4" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Cuối" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Cuá»™c hạn này có thể\n" "lặp lại vào %s thứ 4\n" "cá»§a tháng, hoặc vào %s\n" "cuối cá»§a tháng.\n" "Bạn có muốn chón gì?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Há»i ?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Sá»± kiện này lặp lại.\n" "Bạn có muốn áp dụng các\n" "thay đổi này vào chỉ sá»± kiện\n" "HIỆN THỜI, hoặc vào MỌI\n" "lần gặp sá»± kiện này?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Hiện có" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "ngày" #: ../datebook_gui.c:2028 msgid "week" msgstr "tuần" #: ../datebook_gui.c:2029 msgid "month" msgstr "tháng" #: ../datebook_gui.c:2030 msgid "year" msgstr "năm" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Bạn không thể có cuá»™c hẹn lặp lại từng %d %s\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Bạn không thể có cuá»™c hẹn lặp lại từng tuần mà không lặp lại vào hôm nào." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Chưa có giá»" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Cuá»™c hẹn không hợp lệ" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Ngày cuối cua cuá»™c hẹn này\n" "nằm trước ngày đầu." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Chưa có ngày" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Gặp lá»—i trong cÆ¡ sở dữ liệu Sổ Ngày DateBookDB advanceUnits = %d\n" # Variable: don't translate / Biến: đừng dịch #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (HÔM NAY)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Tuần" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Xem cuá»™c hẹn theo tuần" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Tháng" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Xem cuá»™c hẹn theo tháng" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Ploại" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Giá»" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Hiện Cần Làm" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Tác vụ" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Äến hạn" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Báo động" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Ngày:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Bắt đầu" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Kết thúc vào" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "Thẻ Sổ Ngày" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Ngày" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Năm" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Sá»± kiện này không lặp lại." #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Tần số là Từng" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Ngày" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Kết thúc vào" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Tuần" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Tháng" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Lặp lại theo :" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Hôm cá»§a tuần" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Ngày" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Năm" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Bá»™ Quay số Äiện thoại" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Tiá»n tố 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Tiá»n tố 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Tiá»n tố 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Số Ä‘iện thoại:" #: ../dialer.c:319 msgid "Extension" msgstr "Phần mở rá»™ng" #: ../dialer.c:341 msgid "Dial Command" msgstr "Lệnh Quay số" #: ../export_gui.c:121 msgid "File Browser" msgstr "Bá»™ duyệt tập tin" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Chá»n mục ghi cần xuất" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Dùng phím Ctrl và Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Nhập" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Mục ghi có nhãn Riêng" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Mục ghi không có nhãn Riêng" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Phân loại trước khi nhập là: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Mục ghi sẽ nằm trong phân loại [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Nhập hết" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Bá» qua" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "" "Äể chuyển đổi sang má»™t kiểu thư mục bị ẩn, hãy gõ nó dưới đây rồi bấm phím " "TAB." #: ../import_gui.c:484 msgid "Import File Type" msgstr "Kiểu tập tin nhập" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Tập tin cần cài đặt" #: ../install_gui.c:372 msgid "Install" msgstr "Cài đặt" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Tập tin/Cài đặt ngưá»i dùng" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Tên ngưá»i dùng" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID ngưá»i dùng" #: ../jpilot.c:317 msgid "Print" msgstr "In" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Không há»— trợ khả năng in cho ống dẫn này." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Không há»— trợ khả năng nhập cho ống dẫn này." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Không há»— trợ khả năng xuất cho ống dẫn này." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Thôi đồng bá»™" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Máy Palm này không có cùng má»™t tên ngưá»i\n" "dùng hay ID ngưá»i dùng vá»›i Palm đã đồng bá»™\n" "lần trước. Như thế thì việc đồng bá»™ hóa có thể\n" "tác động má»™t cách sai. Hãy Ä‘á»c Sổ Tay nếu chưa chắc." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Máy Palm này có ID ngưá»i dùng Rá»–NG.\n" "Má»—i Palm phải có ID ngưá»i dùng duy nhất, để đồng bá»™ được.\n" "Nếu Palm này đã bị lặp lại cứng, hãy dùng Phục hồi từ trình đơn\n" "để phục hồi các thông tin, hoặc dùng pilot-xfer.\n" "Äể thêm má»™t tên ngưá»i dùng và ID, hãy dùng công cụ dòng lệnh\n" "« install-user », hoặc dùng « Cài đặt ngưá»i dùng » từ trình đơn.\n" "Hãy Ä‘á»c Sổ Tay nếu chưa chắc." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Thôi đồng bá»™" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Vẫn đồng bá»™" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Lá»—i đồng bá»™" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Ngưá»i dùng: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Không biết lệnh từ tiến trình đồng bá»™\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Giá»›i thiệu vá» %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Tập tin" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Tập tin/tách rá»i" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Tập tin/_Tìm" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Tập tin/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Tập tin/_Cài đặt" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Tập tin/Nhập" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Tập tin/Xuất" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Tập tin/Tùy thích" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Tập tin/_In" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Tập tin/Cài đặt ngưá»i dùng" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Tập tin/Phục hồi bá»™ cầm tay" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Tập tin/T_hoát" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Xem" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Xem/Ẩn các mục ghi riêng" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Xem/Hiện các mục ghi riêng" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Xem/Lá»c các mục ghi riêng" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Xem/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Xem/Sổ Ngày" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Xem/Äịa chỉ" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Xem/Cần làm" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Xem/Ghi nhá»›" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/Xem/Bá»™ cầm _phít" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Mạng" # Name: don't translate /Tên: đừng dịch #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Mạng/Netscape" # Name: don't translate / Tên: đừng dịch #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Mạng/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Mạng/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Mạng/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Mạng/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Mạng/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Mạng/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Mạng/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Mạng/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/Trợ _giúp" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/Trợ giúp/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/Bá»™ cầm _phít/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/Trợ _giúp/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Không tải bá»™ cầm phít.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Bá» qua má»i bảo động.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Bá» qua các bảo động qua.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Không thể mở ống\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Hiện bản ghi riêng Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Ẩn bản ghi riêng Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Lá»c bản ghi riêng Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Äồng bá»™ hóa Palm vá»›i máy tính Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Äồng bá»™ hóa Äịa chỉ" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Äồng bá»™ hóa Palm vá»›i máy tính\n" "rồi sao lưu hết" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Sổ Ngày/Äi tá»›i ngày hôm nay" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Sổ địa chỉ" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Danh sách Cần làm" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Tập giấy Ghi nhá»›" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Làm ngay" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Nhắc nhở lần sau" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Äừng nói Ä‘iá»u này lần nữa." #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "Chương trình J-Pilot Ä‘ang dùng bá»™ công cụ đồ há»a GTK2. Phiên bản bá»™ công cụ " "này dùng UTF-8 để mã hóa ký tá»±.\n" "Bạn nên chá»n má»™t bá»™ ký tá»± UTF-8 để có khả năng xem ký tá»± khác ASCII, v.d. " "chữ có giá»ng.\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Bá»™ ký tá»±" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Chá»n bảng mã UTF-8" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" " dạng thức +B +M +A +T giống như dạng thức date+ (dùng « -? » sẽ xem thông " "tin thêm).\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v hiện phiên bản rồi thoát.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h hiện trợ giúp rồi thoát.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -h hiện trợ giúp rồi thoát.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -B đổ Sổ Ngày.\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N đổ các cuá»™c hẹn cá»§a hôm nay trong Sổ Ngày\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NNÄ‚M/Th/Ng đổ các cuá»™c hẹn cá»§a NÄ‚M/Th/Ng trong Sổ Ngày.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A đổ Sổ địa chỉ\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T đổ danh sách Cần Làm dạng .csv\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M đổ các Ghi nhá»›\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Không thể mở tập tin: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "Tùy thích J-Pilot được Ä‘á»c để biết cổng, tốc độ, số bản sao lưu v.v.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v hiện phiên bản và tùy chá»n biên dịch rồi thoát.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d hiện thông tin gỡ lá»—i vào thiết bị xuất chuẩn.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "Không tải bá»™ cầm phít.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = lặp lại, không thì đồng bá»™ hóa má»™t lần rồi thoát.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p (cổng) = dùng cổng này để đồng bá»™ hóa, không Ä‘á»c cổng từ tùy thích.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Gặp lá»—i khi mở tập tin: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Gặp lá»—i khi mở tập tin: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Lá»—i" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "Biến môi trưá»ng HOME cá»§a bạn là quá dài.\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Mục ghi đã bị xoá bá».\n" "Nó sẽ bị xoá bá» ra máy Palm vào lúc đồng bá»™ hóa kế tiếp.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Không thể mở tập tin mục ghi PC.\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Không thể tìm thấy mục ghi cần xoá bá».\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Không biết phiên bản phần đầu %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Gặp lá»—i khi mở tập tin: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Gặp lá»—i khi Ä‘á»c tập tin: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Gặp lá»—i khi mở tập tin: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Gặp lá»—i khi Ä‘á»c %s 5.\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Gặp lá»—i khi Ä‘á»c tập tin PC 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Gặp lá»—i khi Ä‘á»c tập tin PC 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Không biết phiên bản phần đầu PC = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Không thể mở tập tin bản ghi nên chịu thua.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Không thể mở tập tin bản ghi.\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Chuá»—i ghi nhá»› >65535 nên cắt xén nó\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Ghi nhá»› đã nhập %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Tập tin có vẻ không phải có dạng thức .\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Không thể xuất ghi nhá»› %d.\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Tập giấy Ghi nhá»›" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Xem tháng" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Mật khẩu Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Sai, hãy gõ lại mật khẩu PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Gõ mật khẩu PalmOS" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Gặp lá»—i khi Ä‘á»c tập tin: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "bị lặp vô hạn" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Trong khi Ä‘á»c %s%s dòng 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Phiên bản không đúng\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Kiểm tra Tùy thích → á»ng dẫn\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Việc mở bị lá»—i trên bá»™ cầm phít [%s]\n" " lá»—i [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " bá»™ cầm phít không hợp lệ: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Bá»™ cầm phít:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Bá»™ cầm phít này là phiên bản (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "nó quá cÅ© để hoạt động vá»›i phiên bản J-Pilot này.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Tùy thích" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Miá»n địa phương" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Thiết lập" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Sổ Ngày" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Cần làm" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Ghi nhá»›" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Báo động" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "á»ng dẫn" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Dạng ngày ngắn" #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Dạng ngày dài" #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Dạng giá»" #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Tập tin màu sắc GTK cá»§a tôi là " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Lá»—i đồng bá»™" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Số bản sao lưu cần lưu trữ" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Hiển thị mục ghi bị xoá bá» (mặc định là KHÔNG)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Hiển thị mục ghi bị xoá bỠđã sá»­a đổi (mặc định là KHÔNG)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Nhắc xác nhận cài đặt tập tin (J-Pilot → PDA) (mặc định là CÓ)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Hiển thị mẹo công cụ bật lên (mặc định là CÓ)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Làm nổi bật ngày trên lịch có cuá»™c hẹn" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Äánh dấu ngày hôm nay trong khung xem ngày, tuần và tháng Ä‘á»u" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Phụ thêm năm vào ngày kỉ niệm trong khung xem ngày, tuần và tháng Ä‘á»u" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Dùng thẻ ghi chú Sổ Ngày" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Bản xây dá»±ng này không há»— trợ Sổ Ngày (DateBk)" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Lệnh thư" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s được thay thế bằng địa chỉ thư Ä‘iện tá»­" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Ẩn má»i tác vụ hoàn tất" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Ẩn tác vụ chưa tá»›i hạn" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Ghi lưu Ngày hoàn tất" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Dùng cÆ¡ sở dữ liệu Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Dùng số ngày tá»›i hạn mặc định" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Dùng Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Mở cá»­a sổ báo động khi nhắc nhở cuá»™c hẹn" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Thi hành lệnh này" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "Cảnh báo : thá»±c thi lệnh hệ vá» tùy ý có thể gây nguy hiểm !!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Lệnh báo động" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t được thay thế bằng giá» báo động" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d được thay thế bằng ngày báo động" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D được thay thế bằng mô tả báo động" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N được thay thế bằng ghi chú báo động" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (thay thế mô tả) bị tắt trong bản xây dụng này" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (thay thế ghi chú) bị tắt trong bản xây dụng này" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Äồng bá»™ hóa Sổ Ngày" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Äồng bá»™ hóa Äịa chỉ" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Äồng bá»™ hóa Cần làm" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Äồng bá»™ hóa Ghi nhá»›" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Äồng bá»™ hóa Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Dùng J-OS (không phải PalmOS cá»§a Nhật: WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Äồng bá»™ hóa %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Tùy chá»n in" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Cỡ giấy" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Bản in hàng ngày" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Bản in hàng tuần" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Bản in hàng tháng" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Má»›i xoá bá» mục ghi %s." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Má»i mục ghi trong phân loại này" #: ../print_gui.c:272 msgid "Print all records" msgstr "In má»i mục ghi" #: ../print_gui.c:294 msgid "One record per page" msgstr "Má»™t mục ghi trong má»—i trang" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Dòng trắng giữa hai mục ghi" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Lệnh in (ví dụ: lpr hay cat > tập_tin.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Phục hồi bá»™ cầm tay" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Tập tin cần cài đặt" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Äể phục hồi bá»™ cầm tay cá»§a bạn:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. Chá»n má»i ứng dụng bạn muốn phục hồi. (Mặc định là tất cả.)" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Gõ tên ngưá»i dùng và ID ngưá»i dùng." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Nhấn nút ÄÆ°á»£c." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Việc này sẽ ghi đè lên toàn bá»™ dữ liệu hiện thá»i trên bá»™ cầm phít." #: ../search_gui.c:142 msgid "datebook" msgstr "sổ ngày" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "địa chỉ" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "cần làm" #: ../search_gui.c:359 msgid "memo" msgstr "ghi nhá»›" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "ghi nhá»›" #: ../search_gui.c:419 msgid "plugin ?" msgstr "bá»™ cầm phít ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Không tìm thấy" #: ../search_gui.c:598 msgid "Search" msgstr "Tìm kiếm" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Tìm kiếm:" #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Phân biệt chữ hoa/thưá»ng" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "việc mở tập tin khoá bị lá»—i\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "việc khoá bị lá»—i\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "tập tin đồng bá»™ bị khoá bởi PID %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "việc mở khoá bị lá»—i\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "việc đồng bá»™ bị khoá bởi PID %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Hãy kiểm tra cổng nối tiếp và thiết lập\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Không thể Ä‘á»c thư mục chính\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID ngưá»i tạo « %s ») là hiện thá»i nên việc lấy đã bá» qua.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Äang lấy « %s » (ID ngưá»i tạo « %s »)..." #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Bị lá»—i, không thể tạo tập tin %s.\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Bị lá»—i, không thể cập nhật cÆ¡ sở dữ liệu %s.\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "ÄÆ°á»£c\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Äang bá» qua %s (ID ngưá»i tạo « %s »)\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Äang cài đặt %s..." #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Không thể mở tập tin « %s »: %s\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Không thể đồng bá»™ hóa tập tin « %s »: tập tin bị há»ng không?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr " (ID ngưá»i tạo « %s »)..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr " (ID ngưá»i tạo « %s »)..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Không thể mở tập tin: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Việc cài đặt %s bị lá»—i." #: ../sync.c:1619 msgid "Failed.\n" msgstr "Bị lá»—i.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "Äã cài đặt %s" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Gặp lá»—i khi lấy thông tin vỠứng dụng %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Gặp lá»—i khi giải nén thông tin vỠứng dụng %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Gặp lá»—i khi Ä‘á»c khối thông tin vỠứng dụng cho %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Không thể thêm phân loại %s vào bá»™ ở xa.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Quá nhiá»u phân loại trên bá»™ ở xa.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Má»i mục ghi trên máy tính trong %s sẽ được di chuyển sang %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Äang đồng bá»™ hóa %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Má»›i ghi má»™t mục ghi %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Việc ghi mục ghi %s bị lá»—i." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Việc xoá bá» mục ghi %s bị lá»—i." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Äang xoá bá» mục ghi %s." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Äang xoá bá» mục ghi %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Má»›i ghi mục ghi %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Việc ghi mục ghi %s bị lá»—i." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Việc xoá bá» mục ghi %s bị lá»—i." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Má»›i xoá bá» mục ghi %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "Việc « dlp_DeleteRecord » (xoá bá» mục ghi) bị lá»—i.\n" "Có lẽ vì mục ghi đó đã bị xoá bá» trên Palm.\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Má»›i cài đặt xong thông tin ngưá»i dùng.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Äang đồng bá»™ hóa thiết bị %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Hãy nhấn ngay nút HotSync\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Tên ngưá»i dùng được đồng bá»™ hóa má»›i đây → « %s »\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ID ngưá»i dùng được sync má»›i đây → « %d »\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Tên ngưá»i dùng này → « %s »\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " ID ngưá»i dùng này → %d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Tên ngưá»i dùng là « %s »\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "ID ngưá»i dùng là %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "đồng bá»™ hóa PC má»›i đây = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "PC này = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Äồng bá»™ hóa bị thôi\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Má»›i phục hồi xong bá»™ cầm tay.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Có lẽ bạn cần phải đồng bá»™ hóa để cập nhật J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Äang đồng bá»™ hóa nhanh.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Äang đồng bá»™ hóa chậm.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Cám Æ¡n bạn đã dùng J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Äã xong.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Äang thoát vá»›i trạng thái %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Chuá»—i mô tả Cần làm > %d nên cắt xén nó thành %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Chuá»—i ghi chú Cần làm > %d nên cắt xén nó thành %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Ngày đến hạn" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Tập tin có vẻ không phải có dạng thức .\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Không thể xuất Cần làm %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Ngày đến hạn" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Ngày đến hạn" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Ưu tiên: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Hoàn tất" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Ưu tiên ở ngoại phạm vi.\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Không có ngày" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Hoàn tất" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Ưu tiên: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Ngày tá»›i hạn:" #: ../utils.c:330 msgid "Today" msgstr "Hôm nay" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Không tìm thấy tập tin cÆ¡ sở dữ liệu rá»—ng %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " không thể được cài đặt.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Không thể tạo thư mục %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s là thư mục" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Không thể ghi tập tin trong thư mục %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Lưu mục ghi đã thay đổi không?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Bạn có muốn lưu các thay đổi cá»§a mục ghi này không?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Lưu mục ghi má»›i không?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Bạn có muốn lưu mục ghi má»›i này không?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "bị lặp vô hạn nên ngắt nó\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "Không tải bá»™ cầm phít.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" " -a bá» qua các báo động nhỡ sau khi lần cuối cùng chạy chương trình này.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A bá» qua má»i báo động)); qua và tá»›i.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " Hai biến môi trưá»ng PILOTPORT và PILOTRATE được dùng để ghi rõ\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " cổng nào nÆ¡i cần đồng bá»™ hóa, tại tốc độ nào.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "Nếu chưa đặt cổng PILOTPORT nên mặc định là .\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Lá»—i Ä‘á»c tập tin" #: ../utils.c:1973 msgid "Date compiled" msgstr "Ngày đã biên dịch" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Äã biên dịch vá»›i những tùy chá»n này:" #: ../utils.c:1976 msgid "Installed Path" msgstr "ÄÆ°á»ng dẫn đã cài đặt" #: ../utils.c:1978 msgid "pilot-link version" msgstr "phiên bản pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Há»— trợ USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "có" #: ../utils.c:1984 msgid "Private record support" msgstr "Há»— trợ mục ghi riêng" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "không" #: ../utils.c:1990 msgid "Datebk support" msgstr "Há»— trợ Sổ Ngày" #: ../utils.c:1996 msgid "Plugin support" msgstr "Há»— trợ bá»™ cầm phít" #: ../utils.c:2002 msgid "Manana support" msgstr "Há»— trợ Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Há»— trợ NLS (tiếng nước ngoài)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Há»— trợ GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Không thể lấy biến môi trưá»ng HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "Biến môi trưá»ng HOME cá»§a bạn là quá dài.\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Sá»­a đổi phân loại" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "ID PC là 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Äã tạo ra má»™t ID PC má»›i. Äó là %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Ngày hôm nay là %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Ngày hôm nay là %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Gặp lá»—i khi ghi phần đầu PC vào tập tin: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Gặp lá»—i khi ghi ID kế tiếp vào tập tin: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Xem tuần" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Úc" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Ão" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Bỉ" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Bra-xin" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Ca-na-Ä‘a" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Äan-mạch" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (đồng Âu €)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Phần-lan" #: ../Expense/expense.c:103 msgid "France" msgstr "Pháp" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Äức" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hồng Kông" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Băng-đảo" #: ../Expense/expense.c:107 msgid "India" msgstr "Ấn-độ" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Nam-dương" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Ãi-nhÄ©-lan" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Ã" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Nhật-bản" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Triá»u-tiên" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Lúc-xăm-buac" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Ma-lay-xi-a" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mê-hi-cô" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Hoà-lan" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Niu Di-lân" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Na-uy" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "P.R.C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Phi-luật-tân" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Xin-ga-po" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Tây-ban-nha" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Thụy-Ä‘iển" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Thụy-sÄ©" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Äài-loan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Thái-lan" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Vương quốc Anh Thống nhất" #: ../Expense/expense.c:128 msgid "United States" msgstr "Mỹ" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Phí tổn" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Tiá»n vé" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Ä‚n sáng" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Xe búyt" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Ä‚n làm việc" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Thuê xe" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Ä‚n cÆ¡m" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Giải trí" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Äiện thư" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Dầu" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Quà biếu" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Khách san" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Lặt vặt" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Giặt" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Xe hòm" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Chá»— trợ" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Ä‚n trưa" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Lý/giá»" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Äậu xe" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Bưu phí" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Ä‚n vá»™i vàng" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Xe Ä‘iện ngầm" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Äồ cung cấp" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Xe tắc xi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Äiện thoại" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Tiá»n chè lá " #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Thuế qua đưá»ng" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Xe lá»­a" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Phí tổn: kiểu phí tổn không rõ\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Phí tổn: kiểu trả không rõ\n" # Name: don't translate / Tên: đừng dịch #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Tiá»n mặt" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Séc" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Thẻ tín dụng" # Name: don't translate / Tên: đừng dịch #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Trả trước" # Name: don't translate / Tên: đừng dịch #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Kiểu :" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Số tiá»n:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Loại:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Kiểu :" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Số tiá»n trả:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Tiá»n tệ:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Tháng:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Hôm:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Năm:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Số tiá»n:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Nhà bán:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Phố :" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Ngưá»i dá»±" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" "Vòng chìa khoá: pack_KeyRing(): « buf_size » (kích cỡ bá»™ đệm) quá nhõ\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Không đúng, gõ lại mật khẩu vòng chìa khoá" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Gõ mật khẩu vòng chìa khoá MỚI" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Gõ mật khẩu vòng chìa khoá" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: không tìm thấy tập tin %s.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: hãy cố đồng bá»™ hoá.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "Vòng chìa khoá" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Không thể xuất ghi nhá»› %d.\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Thay đổi\n" "mật khẩu\n" "vòng chìa khoá" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Ãp dụng thay đổi" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Tài khoản" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "tên: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "tài khoản: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "mật khẩu : " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Tạo ra mật khẩu" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Äồng bá»™ hóa Ghi nhá»›" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Äã xong" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Ghi đè tập tin" #~ msgid "Directory" #~ msgstr "Thư mục" #~ msgid "Filename" #~ msgstr "Tên tập tin" #~ msgid "Field" #~ msgstr "Trưá»ng" # Literal: don't translate / NghÄ©a chữ: đừng dịch #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Xem nhanh" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Không thể mở tập tin %s%s.\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Không thể mở tập tin <%s.alarms>.\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Bạn không thể hiệu chỉnh phân loại %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Bạn không thể xoá bá» phân loại %s.\n" #~ msgid "category name" #~ msgstr "tên loại" #~ msgid "debug" #~ msgstr "gỡ lá»—i" #~ msgid "Answer: " #~ msgstr "Äáp :" #~ msgid "none" #~ msgstr "không có" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "" #~ "Không biết kiểu lặp lại repeatType được tìm trong cÆ¡ sở dữ liệu Sổ Ngày " #~ "DatebookDB\n" #~ msgid "W" #~ msgstr "Tn" #~ msgid "M" #~ msgstr "Th" #~ msgid "This Event has no particular time" #~ msgstr "Sá»± kiện này không có giá» riêng" #~ msgid "Start Time" #~ msgstr "GiỠđầu" #~ msgid "End Time" #~ msgstr "Giá» cuối" #~ msgid "Dismiss" #~ msgstr "Bá» qua" #~ msgid "Quit" #~ msgstr "Thoát" #~ msgid "Add" #~ msgstr "Thêm" #~ msgid "Close" #~ msgstr "Äóng" #~ msgid " -v = version\n" #~ msgstr " -v = phiên bản\n" #~ msgid " -h = help\n" #~ msgstr " -h = trợ giúp\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = chạy trong chế độ gỡ lá»—i\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = đừng tải bá»™ cầm phít\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = đồng bá»™ hóa rồi sao lưu hết, không thì chỉ đồng bá»™ hóa.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Äặc tả dạng hình không hợp lệ: « %s ».\n" #~ msgid "Help" #~ msgstr "Trợ giúp" #~ msgid "Sync" #~ msgstr "Äồng bá»™" #~ msgid "/Help/PayBack program" #~ msgstr "/Trợ giúp/Chương trìinh trả lại" #~ msgid "Font Selection Dialog" #~ msgstr "Há»™p thoại chá»n phông chữ" #~ msgid "Clear" #~ msgstr "Xoá" #~ msgid "Show private records" #~ msgstr "Hiện bản ghi riêng" #~ msgid "Hide private records" #~ msgstr "Ẩn bản ghi riêng" #~ msgid "Mask private records" #~ msgstr "Lá»c bản ghi riêng" #~ msgid "Font" #~ msgstr "Phông chữ" #~ msgid "Go to the menu \"" #~ msgstr "Äi tá»›i trình đơn \"" #~ msgid "\" and change the \"" #~ msgstr "\" và thay đổi \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "Không thể mở tập tin mục ghi PC\n" #~ msgid "The first day of the week is " #~ msgstr "Hôm thứ nhất trong tuần là " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Cổng nối tiếp (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Tốc độ nối tiếp (không có tác động USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Äồng bá»™ hóa memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Má»™t mục ghi" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: bấm nút Hotsync trên giá để, hoặc « kill %d ».\n" #~ msgid "Finished\n" #~ msgstr "Äã xong\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Tên ngưởi dùng cuối cùng = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "ID ngưá»i dùng má»›i đây = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Tên ngưá»i dùng = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID ngưá»i dùng = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: số mục ghi = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "đĩa: số mục ghi = %d\n" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p đừng tải bá»™ cầm phít.\n" #~ msgid " -i makes jpilot iconify itself upon launch\n" #~ msgstr " -i thu gá»n J-Pilot vào lúc khởi chạy\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s không có vẻ là thư mục.\n" #~ "Phải là thư mục.\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Thẻ tín dụng" # Name: don't translate / Tên: đừng dịch #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Expense: Unknown category\n" #~ msgstr "Phí tổn: phân loại không rõ\n" #~ msgid "\n" #~ msgstr "\n" # Name: don't translate /Tên: đừng dịch #~ msgid "/Web/Netscape/%s" #~ msgstr "/Mạng/Netscape/%s" # Name: don't translate / Tên: đừng dịch #~ msgid "/Web/Mozilla/%s" #~ msgstr "/Mạng/Mozilla/%s" #~ msgid "/Web/Galeon/%s" #~ msgstr "/Mạng/Galeon/%s" #~ msgid "/Web/Opera/%s" #~ msgstr "/Mạng/Opera/%s" #~ msgid "/Web/GnomeUrl/%s" #~ msgstr "/Mạng/GnomeUrl/%s" #~ msgid "/Web/Lynx/%s" #~ msgstr "/Mạng/Lynx/%s" #~ msgid "/Web/Links/%s" #~ msgstr "/Mạng/Links/%s" #~ msgid "/Web/W3M/%s" #~ msgstr "/Mạng/W3M/%s" #~ msgid "/Web/Konqueror/%s" #~ msgstr "/Mạng/Konqueror/%s" #~ msgid "Quit!" #~ msgstr "Thoát !" #~ msgid "Backup" #~ msgstr "Sao lưu" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): Hết bá»™ nhá»›\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "dlp_WriteRecord (ghi mục) bị lá»—i\n" #~ msgid "Cannot open " #~ msgstr "Không thể mở " #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): Hết bá»™ nhá»›\n" #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Gặp lá»—i khi Ä‘á»c tại %s : %s %d\n" #~ msgid "About Expense" #~ msgstr "Giá»›i thiệu vá» Phí tổn" #~ msgid "Holland" #~ msgstr "Hoà-lan" #~ msgid "U.K." #~ msgstr "Anh quốc" #~ msgid "U.S.A." #~ msgstr "Mỹ" jpilot-1.8.2/po/fr.po0000664000175000017500000027027212340261240011337 00000000000000# French translations for JPILOT. # # Regis Rampnoux , 2000-2003. # Ludovic Rousseau , 2004. msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.9-pre1\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2004-10-01 23:05+0100\n" "Last-Translator: Ludovic Rousseau \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Plus de mémoire" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Erreur de lecture application info %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Erreur en lecture: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "erreur" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Cet enregistrement est effacé.\n" "Restaurez le ou copier le avant de pouvoir le modifier.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "%s%s : %s" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Impossible d'ouvrir: %s\n" #: ../address_gui.c:559 #, c-format msgid "Unable to read file: %s\n" msgstr "Impossible de lire: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Le fichier n'est pas du type carnet d'adresses\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Non renseigné" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Non" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Oui" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s est un répertoire" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Erreur d'ouverture du fichier" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Voulez vous écraser le fichier %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Écraser le fichier?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Erreur d'ouverture du fichier: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" "Address exporté de %s %s le %s\n" "\n" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" "Contact exporté de %s %s le %s\n" "\n" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Ne peut pas exporter l'adresse %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, c-format msgid "Category: %s\n" msgstr "Catégorie : %s\n" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, c-format msgid "Private: %s\n" msgstr "Privé : %s\n" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "%s : " #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Type d'export inconnu\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "vCard" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "ldif" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 msgid "Last Name/Company" msgstr "Nom/Société" #: ../address_gui.c:1834 ../address_gui.c:3956 msgid "First Name/Company" msgstr "Prénom/Société" #: ../address_gui.c:1837 ../address_gui.c:3959 msgid "Company/Last Name" msgstr "Société/Nom" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Vous ne pouvez pas modifier un enregistrement effacé\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Catégorie illégale\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "Exécution de la commande = [%s]\n" #: ../address_gui.c:2235 #, fuzzy, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "Échec d'exécution [%s]\n" #: ../address_gui.c:2479 msgid "Birthday" msgstr "Anniversaire" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "Programme externe non trouvé, ou autre erreur" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" "J-Pilot ne peut pas trouver le programme externe \"convert\"\n" "ou une erreur s'est produite pendant l'excution de convert.\n" "Vous devez peut-être installer le paquet ImageMagick" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "La commande exécutée était \"%s\"\n" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "le code de retour était %d\n" #: ../address_gui.c:2657 msgid "chdir() failed\n" msgstr "echec de chdir()\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "Ajouter une photo" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Catégorie : " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Mél" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Appel" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Sans-nom-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 enregistrements" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d enregistrements sur %d" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Nom" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adresse" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Autre" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Note" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "Utilise la base Address\n" #: ../address_gui.c:3965 msgid "Phone" msgstr "Téléphone" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Recherche rapide : " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Annuler" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Annuler les modifications" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Effacer" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Efface l'enregistrement sélectionné" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Restaurer" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Récupérer l'enregistrement sélectionné" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Copier" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Copier l'enregistrement sélectionné" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nouveau" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Ajouter un nouvel enregistrement" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Ajouter" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Ajouter le nouvel enregistrement" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Appliquer" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Appliquer les modifications" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privé" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "Changer la photo" #: ../address_gui.c:4174 msgid "Remove Photo" msgstr "Supprimer la photo" #: ../address_gui.c:4246 msgid "Show In List" msgstr "Montrer dans la liste" #: ../address_gui.c:4347 msgid "Reminder" msgstr "Me le rappeler" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Jours" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Tous" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minutes" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Heures" #: ../alarms.c:253 msgid "Remind me" msgstr "Me le rappeler" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Impossible d'ouvrir le fichier %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Rappel de rendez-vous" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Rendez-vous passé" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "rendez-vous reporté" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Rendez-vous" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Alarme de J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Fichier PC corrompu?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek échoué - erreur fatale\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "echec de renommage" #: ../category.c:407 msgid "Move" msgstr "Déplacer" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Edition Catégories" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Le nombre maximum de catégories (16) est atteint" #: ../category.c:440 msgid "Enter New Category" msgstr "Saisir la nouvelle Catégorie" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "Erreur d'édition de catégories" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Vous devez sélectionner une catégorie à renommer" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Saisir le nom de la nouvelle catégorie" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Vous devez sélectionnet la catégorie à supprimer" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Il y a %d enregistrements dans %s.\n" "Voulez vous les déplacer vers %s, ou les supprimer?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "état invalide fichier %s ligne %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "La catégorie %s ne peut pas être utilisée plusieures fois" #. Category names in host character set #: ../category.c:733 msgid "Category" msgstr "Catégorie" #: ../category.c:834 msgid "New" msgstr "Nouveau" #: ../category.c:841 msgid "Rename" msgstr "Renommer" #: ../dat.c:512 msgid "unknown type =" msgstr "type inconnu =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "champs par colonne != %d, format inconnu\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "nombre de champs != %d, format inconnu\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Format inconnu, le fichier utilise un mauvais schéma\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Le schéma du fichier est :" #: ../dat.c:640 msgid "It should be:" msgstr "Il devrait être :" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%s:%d Enregistrement %d, champ %d: Type invalide. Attendu %d, trouvé %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "lecture du fichier terminé\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "repeatType (%d) inconnu trouvé dans DatebookDB\n" #: ../datebook_gui.c:239 msgid "Repeat Never" msgstr "Aucune répétition" #: ../datebook_gui.c:240 msgid "Repeat Daily" msgstr "Répété tous les jours" #: ../datebook_gui.c:241 msgid "Repeat Weekly" msgstr "Répété toutes les semaines" #: ../datebook_gui.c:242 msgid "Repeat MonthlyByDay" msgstr "Répété les mois tel jour" #: ../datebook_gui.c:243 msgid "Repeat MonthlyByDate" msgstr "Répété les mois telle date" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "Répété tous les ans telle date" #: ../datebook_gui.c:245 msgid "Repeat YearlyDay" msgstr "Répété les ans tel jour" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Di" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Lu" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ma" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Me" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Je" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Ve" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Sa" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" "Rendez-vous commence le : %s\n" "Heure : Événement" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" "Rendez-vous commence le : %s\n" "Heure : %s à %s" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "Inconnu" #. End Date #: ../datebook_gui.c:298 msgid "End Date: " msgstr "Date de fin : " #: ../datebook_gui.c:300 msgid "Never" msgstr "Jamais" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "Fréquence de répétition : %d\n" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "Répété tous les mois le %dème jour\n" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Répété les jours :" #: ../datebook_gui.c:330 #, c-format msgid "Number of exceptions: %d" msgstr "Nombre d'exceptions : %d" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" "\n" "plus..." #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "Description :" #: ../datebook_gui.c:358 ../datebook_gui.c:385 msgid "Note:" msgstr "Note :" #: ../datebook_gui.c:360 ../datebook_gui.c:388 msgid "Alarm:" msgstr "Alarme :" #: ../datebook_gui.c:361 ../datebook_gui.c:389 msgid "Repeat Type:" msgstr "Type de répétition :" #: ../datebook_gui.c:364 ../datebook_gui.c:392 msgid "Start of Week:" msgstr "Début de semaine :" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "Emplacement : " #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Description trop longue > %d , coupée à %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Erreur" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Le fichier n'est pas du type datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" "Datebook exporté de %s %s le %s\n" "\n" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" "Calendrier exporté de %s %s le %s\n" "\n" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Type d'export inconnu" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "iCalendar" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exporter" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exporter tous les enregistrements agenda" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Sauver sous" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Parcourir" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Catégories agenda" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Aucun" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Date de début" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Date de fin" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Dimanche" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Lundi" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Mardi" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Mercredi" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Jeudi" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Vendredi" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Samedi" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4ème" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Dernier" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Ce rendez-vous peut être\n" "répété le 4ème %s\n" "du mois, ou le dernier\n" "%s du mois.\n" "Que voulez-vous ?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Question ?" #: ../datebook_gui.c:1777 msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "C'est un évènement répété.\n" "Voulez vous modifier uniquement\n" "l'événement COURANT, l'événement FUTUR\n" "ou TOUTES les apparitions de cet\n" "évènement?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Courant" #: ../datebook_gui.c:1782 msgid "Future" msgstr "Futur" #: ../datebook_gui.c:2027 msgid "day" msgstr "jour" #: ../datebook_gui.c:2028 msgid "week" msgstr "semaine" #: ../datebook_gui.c:2029 msgid "month" msgstr "mois" #: ../datebook_gui.c:2030 msgid "year" msgstr "année" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Vous ne pouvez pas avoir un rendez-vous répété tous les %d %s(s)\n" #: ../datebook_gui.c:2339 msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Vous ne pouvez pas avoir une rendez-vous hebdomadaire qui ne se répète aucun " "jour de la semaine." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Pas d'heure" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Rendez-vous non valable" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "La date de fin de ce rendez-vous\n" "est antérieure à celle de début." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Pas de date" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Erreur dans DateBookDB ou Calendar advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (AUJOURD'HUI)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Semaine" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "Voir les rendez-vous par semaine Ctrl+W" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Mois" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "Voir les rendez-vous par mois Ctrl+M" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Cats" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Heure" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Montrer les tâches à faire" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Tâche" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Prévu(e)" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarme" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Date :" #. Start date and time #: ../datebook_gui.c:5280 msgid "Start" msgstr "Commence à" #. End date and time #: ../datebook_gui.c:5297 msgid "End" msgstr "Fini à" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "Étiquettes DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Jour" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Année" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Cet évènement ne se répètera pas" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "La fréquence est chaque" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "jour(s)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Fin le" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "semaine(s)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "mois" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Répété tous les :" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Jour de la semaine" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Date" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "année(s)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Composition des numéros" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Préfixe 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Préfixe 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "préfixe 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Numéro de téléphone :" #: ../dialer.c:319 msgid "Extension" msgstr "Extension" #: ../dialer.c:341 msgid "Dial Command" msgstr "commande de numérotation" #: ../export_gui.c:121 msgid "File Browser" msgstr "Parcourir les fichiers" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Sélectionnez les enregistrements à exporter" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Utilisez les touches Ctrl et Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importer" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "L'enregistrement était privé" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "L'enregistrement n'était pas privé" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "La catégorie avant l'import était : [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Les enregistrements seront rangés dans la catégorie [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importer tout" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Sauter" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Pour aller dans un répertoire caché tapez son nom et pressez " #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importer Fichier" #: ../install_gui.c:364 msgid "Files to install" msgstr "Fichiers à installer" #: ../install_gui.c:372 msgid "Install" msgstr "Installer" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Installer un utilisateur" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" "Un PDA PalmOS(c) a besoin d'un ID d'utilisateur pour fonctionner " "correctement." #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" "Si vous voulez synchroniser plus d'un PDA, chaque PDA doit avoir un ID " "différent et, de préférence, un nom d'utilisateur différent." #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" "La plupart des utilisateurs utilisent leur nom ou surnom comme nom " "d'utilisateur." #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Nom d'utilisateur" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "L'ID devrait être un nombre aléatoire." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID utilisateur" #: ../jpilot.c:317 msgid "Print" msgstr "Imprimer" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Pas de support d'impression pour ce conduit" #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Pas d'import pour ce conduit" #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Pas d'export pour ce conduit" #: ../jpilot.c:657 msgid " Cancelling HotSync\n" msgstr "Annuler HotSync\n" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Ce palm n'a pas le même nom d'utilisateur ou de user ID\n" "que celui lors de la dernière synchronisation.\n" "Synchroniser peut avoir des effets non désirés incluant des pertes de " "données.\n" "\n" "Lisez le manuel utilisateur en cas de doute." #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Ce PDA a un user ID NULL.\n" "Chaque PDA doit avoir un user ID unique pour un synchronisation correcte.\n" "Si il a été remis à zéro, \n" " utilisez le menu restauration manuelle.\n" "Sinon, pour ajouter un nom d'utilisateur et ID\n" " utilisez le menu Installer un utilisateur.\n" "ou utilisez 'Installer un utilisateur' depuis le menu\n" "\n" "Lisez le manuel utilisateur en cas de doute." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Annuler Sync" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Sync quand même" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Problème de synchronisation" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Utilisateur : " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Commande inconnue du processus de synchronisation\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "À propos de %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Fichier" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Fichier/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Fichier/Rechercher" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Fichier/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Fichier/_Installer" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Fichier/Importer" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Fichier/Exporter" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Fichier/Préférences" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Fichier/Im_primer" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Fichier/Installer un utilisateur" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Fichier/Restauration manuelle" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Fichier/_Quitter" #: ../jpilot.c:1121 msgid "/_View" msgstr "/Affichage" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Affichage/Cacher les enregistrements privés" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Affichage/Montrer les enregistrements privés" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Affichage/Masquer les enregistrements privés" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Affichage/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Affichage/Agenda" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Affichage/Carnet d'adresses" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Affichage/Tâches" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Affichage/Bloc-notes" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Greffons" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Aide" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Aide/À propos de J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Greffons/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Aide/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Non chargement des plugins.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Ignore toutes les alarmes.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Ignore les alarmes échues.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Impossible d'ouvrir le pipe\n" #: ../jpilot.c:1949 msgid "Show private records Ctrl+Z" msgstr "Montrer les enregistrements privés Ctrl+Z" #: ../jpilot.c:1954 msgid "Hide private records Ctrl+Z" msgstr "Cacher les enregistrements privés Ctrl+Z" #: ../jpilot.c:1959 msgid "Mask private records Ctrl+Z" msgstr "Masquer les enregistrements privés Ctrl+Z" #: ../jpilot.c:1971 msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synchronise le Palm avec l'ordinateur Ctrl+Y" #: ../jpilot.c:1983 msgid "Stop Sync process" msgstr "Arrêter la synchronisation" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synchronise le palm au bureau\n" "et fait une sauvegarde" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Agenda/Aller à Aujourd'hui" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Carnet d'adresses" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Liste de tâches" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Bloc notes" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Le faire maintenant" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Me le rappeler plus tard" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Ne plus me le rapeller !" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot utilise la boîte à outils graphique GTK2. Cette version de la boîte " "à outils utilise UTF-8 pour encoder les caractères.\n" "Vous devriez selectionner un encodage UTF-8 pour pouvoir voir les caractères " "non-ASCII (comme les accents par exemple).\n" "\n" "Allez dans le menu \"%s\" et changez le \"%s\"." #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 msgid "Character Set" msgstr "Jeu de caractères" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Selectionnez un encodage UTF-8" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +D +A +T +M format comme date +format.\n" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr " -v affiche la version et sort\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr " -h affiche l'aide et sort\n" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr " -h affiche l'aide des codes de formatage\n" #: ../jpilot-dump.c:96 #, c-format msgid " -D dump DateBook\n" msgstr " -D dump agenda\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr " -i affiche l'agenda au format iCalendar\n" #: ../jpilot-dump.c:98 #, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N affiche les rendez-vous d'aujourd'hui\n" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD affiche les rendez-vous du YYYY/MM/DD\n" #: ../jpilot-dump.c:100 #, c-format msgid " -A dump Address book\n" msgstr " -A dump le carnet d'adresse\n" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T affiche les tâches au format CSV\n" #: ../jpilot-dump.c:102 #, c-format msgid " -M dump Memos\n" msgstr " -M dump mémos\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, c-format msgid "%s: Unable to open file:%s\n" msgstr "%s: Impossible d'ouvrir: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " Les préférences J-Pilot sont lus pour connaître le port, la vitesse, le " "nombre de sauvegardes, etc.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr " -v affiche la version, les options de compilation et sort\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr " -d affiche les information de debug sur stdout\n" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr " -P ne charge pas les plugins\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr " -b synchroniser et faire une sauvegarde\n" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l boucle, sinon synchronise une fois et sort\n" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p {port} utilise ce port pour synchroniser plutôt que celui par défaut\n" #: ../jpilot-sync.c:219 #, c-format msgid "Error: connecting to port %s\n" msgstr "Erreur de connexion au port %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, c-format msgid "Error: opening conduit to handheld\n" msgstr "Erreur d'ouverture du conduit vers le palm\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, c-format msgid "Error: " msgstr "Erreur : " #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" "Un palm a besoin d'un ID d'utilisateur pour fonctionner correctement.\n" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Cet enregistrement est déjà efface.\n" "Il sera effacé du Palm lors de la prochaine synchronisation.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Impossible d'ouvrir le fichiers des enregistrements\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Impossible de trouver l'enregistrement à effacer\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "version d'entête inconnue %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Erreur à l'ouverture du fichier %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Erreur en lisant le fichier %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Erreur d'ouverture du fichier : %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Erreur en lecture %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Erreur en lecture fichier PC 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Erreur en lecture fichier PC 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Version PC header inconnue =%d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Impossible d'ouvrir le journal de bord, abandon.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Impossible d'ouvrir le journal de bord\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Texte du mémo > 65535, troncation\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Mémo importé %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Le fichier n'est pas au format bloc-notes\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" "Memo exporté de %s %s le %s\n" "\n" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" "Memos exporté de %s %s le %s\n" "\n" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Imposible d'exporter le mémo %d\n" #: ../memo_gui.c:641 #, c-format msgid "Memo: %ld\n" msgstr "Note : %ld\n" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "----- Début de la Note ----\n" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" "\n" "----- Fin de la Note -----\n" "\n" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Vue mensuelle" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "dernier caractère tronqué" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Mot de passe Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Erreur, Re-entrez le mot de passe PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Entrez le mot de passe PalmOS" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "effacement du fichier de pid inutile\n" #: ../pidfile.c:95 #, c-format msgid "create pidfile failed: %s\n" msgstr "echec de creation du fichier de pid: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "Attention: synchronisation hotplug désactivée.\n" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "boucle infinie" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "En lisant %s%s ligne 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Mauvaise version\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Verifiez préférences->conduits\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Échec d'ouverture du greffon [%s]\n" " erreur [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " greffon invalide : [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Greffon:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Ce greffon est version (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "Il est trop ancien pour fonctionner avec cette version de J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Préférences" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Locale" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Réglages" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Agenda" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Liste de tâches" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Bloc-notes" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarmes" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Conduits" #. Shortdate #: ../prefs_gui.c:522 msgid "Short date format" msgstr "Date format court" #. Longdate #: ../prefs_gui.c:535 msgid "Long date format" msgstr "Date format long" #. Time #: ../prefs_gui.c:548 msgid "Time format" msgstr "Format de l'heure" #. GTK colors file #: ../prefs_gui.c:568 msgid "GTK color theme file" msgstr "Mon fichier couleurs GTK est" #. Port #: ../prefs_gui.c:581 msgid "Sync Port" msgstr "Port de synchronisation" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "Vitesse série" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Nombre de sauvegardes à archiver" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Montrer les enregistrements effacés (NON par défaut)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Montrer les enregistrements modifiés (NON par défaut)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" "Demande confirmation pour l'installation de fichier (J-Pilot -> PDA) (OUI " "par défaut)" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Montre les bulles d'aide (défaut OUI) (nécessite un redémarrage)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "Utiliser la base de donnée Datebook (Palm OS < 5.2.1)" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "Utiliser la base de donnée Calendar (Palm OS > 5.2)" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Surligner les jours avec rendez-vous" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Signaler aujourd'hui dans les vues jour, semaine et mois" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" "Ajoute le nombre d'années pour les anniversaires dans les vues jour, semaine " "et mois" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Utilise DateBk note tags" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Le support pour DateBk est désactivé pour cet exécutable" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "Utiliser la base de donnée Address (Palm OS < 5.2.1)" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "Utiliser la base de donnée Contacts (Palm OS > 5.2)" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Commande d'envoi de mél" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s est remplacé par l'adresse mél" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "Utiliser la base ToDo (Palm OS < 5.2.1)" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "Utiliser la base Task (Palm OS > 5.2)" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Masquer les tâches terminées" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Cacher les tâches à date non échue" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Date de fin de l'enregistrement" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Utiliser la base de données Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Utilise le nombre de jours à 'échéance par défaut" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Utiliser la base Memo (Palm OS < 5.2.1)" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "Utiliser la base Memos (Palm OS > 5.2)" #: ../prefs_gui.c:862 msgid "Use Memo32 database (pedit32)" msgstr "Utiliser la base Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Ouvrir une fenêtre de rappel pour les rendez vous" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Exécuter la commande" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "ATTENTION : exécuter des commandes shell peut être dangereux !!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Commande d'alarme" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t est remplacé par l'heure de l'alarme" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d est remplace par la date de l'alarme" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D est remplacé par la description de l'alarme" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N est remplacé par le note associée à l'alarme" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (description substitution) est désactivé pour cet exécutable" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (note substitution) est désactivé pour cet exécutable" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Sync agenda" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Sync carnet d'adresses" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Sync tâches" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Sync bloc-notes" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Sync Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Utilise J-OS (Sauf PalmOS:WorkPad/CLIE japonais)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Synchronise %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Options d'impression" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Taille papier" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Impression quotidienne" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Impression hebdomadaire" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Impression mensuelle" #: ../print_gui.c:264 msgid "Selected record" msgstr "Enregistrement selectionné" #: ../print_gui.c:268 msgid "All records in this category" msgstr "Tous les enregistrements de cette catégorie" #: ../print_gui.c:272 msgid "Print all records" msgstr "Imprimer tous les enregistrements" #: ../print_gui.c:294 msgid "One record per page" msgstr "Un enregistrement par page" #: ../print_gui.c:310 msgid "Blank lines between each record" msgstr "Lignes blanches entre les enregistrements" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Commande d'impression (e.g. lpr ou cat > fichier.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Restaure le PDA" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "Impossible de convertir le fichier en affichage GTK\n" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" "Regardez la console de log pour savoir quel fichier ne sera pas restauré\n" #: ../restore_gui.c:177 #, c-format msgid "File %s will not be restored\n" msgstr "Le fichier %s ne sera pas restauré\n" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Restaurer votre PDA :" #: ../restore_gui.c:247 msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. Choisir toutes les applications à restaurer. Toutes par défaut." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Entrez le nom d'utilisateur et l'identifiant (user ID)." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Appuyez sur OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Cette opération écrase les données sur le PDA." #: ../search_gui.c:142 msgid "datebook" msgstr "agenda" #: ../search_gui.c:144 msgid "calendar" msgstr "calendar" #: ../search_gui.c:231 msgid "address" msgstr "adresse" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "tâches" #: ../search_gui.c:359 msgid "memo" msgstr "bloc-notes" #: ../search_gui.c:361 msgid "memos" msgstr "bloc-notes" #: ../search_gui.c:419 msgid "plugin ?" msgstr "Greffons ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Aucun enregistrement trouvé" #: ../search_gui.c:598 msgid "Search" msgstr "Recherche" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Chercher : " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Tiens compte de MAJ/min" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "Échec à l'ouverture du fichier verrou\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "echec du verrouillage\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "fichier de synchro verrouillé par pid %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "echec du déverrouillage\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "synchro verrouillée par pid %d\n" #: ../sync.c:418 msgid "Check your sync port and settings\n" msgstr "Vérifier le port de synchronisation et ses réglages\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Impossible d'ouvrir le home dir\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (Creator ID '%s') est à jour, récupération sautée\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Récupère '%s' (Creator ID '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Échoué, ne peut créer le fichier %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Échoué, ne peut sauvegarder la base de données %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Saute %s (Creator ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installe %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Ne peut pas ouvrir '%s' : %s !\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Ne peut pas synchroniser '%s' : fichier corrompu ?\n" #: ../sync.c:1524 #, c-format msgid "(Creator ID '%s')... " msgstr "(Creator ID est '%s')... " #: ../sync.c:1528 #, c-format msgid "(Creator ID '%s') " msgstr "(Creator ID est '%s') " #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "(répertoire CDcard est '%s')... " #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Impossible d'ouvrir le fichier %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installation de %s echouée" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Échoué.\n" #: ../sync.c:1625 #, c-format msgid "Installed %s" msgstr "Installé %s" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Erreur de lecture app info %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Erreur décompactage app info %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Erreur en lecture bloc appinfo pour %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Impossible d'ajouter la catégorie %s au distant.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Trop de catégories sur le distant.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Tous les enregistrements dans %s seront déplacés vers %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synchronise %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Écrit un enregistrement %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "L'écriture d'un enregistrement %s a échoué." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "La suppression d'un enregistrement %s a échoué." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Supprime un enregistrement %s." #: ../sync.c:2122 ../sync.c:2475 #, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Conflit de synchronisation : duplication de l'enregistrement %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Écrit un enregistrement %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "L'écriture d'un enregistrement %s a échoué." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "La suppression d'un enregistrement %s a échoué." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Supprime un enregistrement %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "Conflit de synchronisation : duplication de l'enregistrement %s." #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" "Conflit de synchronisation : un enregistrement %s doit être fusionné à la " "main\n" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord failed\n" "l'enregistrement est peut-être déjà supprimé sur le Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Fin de l'installation des informations utilisateur.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Synchronisation sur %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Appuyez sur le bouton HotSync maintenant\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Dernière Sync Username-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Dernière Sync UserID-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Ce Username-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Ce User ID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Le nom d'utilisateur est \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "L'ID utilisateur est %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Ce PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Sync annulé\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Restauration manuelle terminée.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Vous pouvez avoir besoin de synchroniser pour mettre à jour J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Effectue une synchronisation rapide.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Effectue une synchronisation lente.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Merci d'utiliser J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Terminé.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" "%s : appuyez sur le bouton hotsync\n" " ou arrêtez la synchronisaton avec le bouton d'annulation\n" " ou arrétez la synchronisation en tapant \"kill %d\" sur la ligne de " "comande\n" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Fin avec l'état %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Description de la tâche trop longue > %d, coupée à %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Note de la tâche trop longue > %d, coupée à %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Date prévue" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Le fichier ne semble pas au bon format (todo.dat)\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" "ToDo exporté de %s %s le %s\n" "\n" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Ne peut exporter tâche %d\n" #: ../todo_gui.c:766 #, c-format msgid "Due Date: None\n" msgstr "Date prévue : Aucune\n" #: ../todo_gui.c:769 #, c-format msgid "Due Date: %s\n" msgstr "Date prévue : %s\n" #: ../todo_gui.c:771 #, c-format msgid "Priority: %d\n" msgstr "Priorité : %d\n" #: ../todo_gui.c:772 #, c-format msgid "Completed: %s\n" msgstr "Terminé : %s\n" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "Description : %s\n" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" "Note : %s\n" "\n" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Priorité hors limite\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Sans date" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Terminé" #: ../todo_gui.c:2418 msgid "Priority:" msgstr "Priorité : " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Date prévue : " #: ../utils.c:330 msgid "Today" msgstr "Aujourd'hui" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Ne peut pas trouver la base vide %s : %s.\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " peut ne pas être installé.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Ne peut créer le répertoire %s\n" #: ../utils.c:623 #, c-format msgid "%s is not a directory\n" msgstr "%s n'est pas un répertoire.\n" #: ../utils.c:628 #, c-format msgid "Unable to get write permission for directory %s\n" msgstr "N'a pas le droit d'écrire dans le répertoire %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Sauver les enregistrements modifiés ?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Voulez vous sauvegarder les modifications de cet enregistrement ?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Sauver nouvel enregistrement ?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Voulez vous sauvegarder ce nouvel enregistrement ?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "boucle infinie, annulation\n" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr " -p ne charge pas des plugins\n" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ignore les alarmes échues depuis la dernière exécution\n" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignore toutes les alarmes; passées et futures\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " Les variables d'environnement PILOTPORT et PILOTRATE sont utilisées\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " pour spécifier quel port utiliser et quelle vitesse.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Si PILOTPORT n'est pas défini alors /dev/pilot est utilisé.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Erreur en lisant le fichier" #: ../utils.c:1973 msgid "Date compiled" msgstr "Date de compilation" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Compilé avec ces options :" #: ../utils.c:1976 msgid "Installed Path" msgstr "Chemin d'installation" #: ../utils.c:1978 msgid "pilot-link version" msgstr "version de pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Support USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "oui" #: ../utils.c:1984 msgid "Private record support" msgstr "Support des enregistrements privés" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "non" #: ../utils.c:1990 msgid "Datebk support" msgstr "Support Datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Support des greffons" #: ../utils.c:2002 msgid "Manana support" msgstr "Support Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Support NLS (autres langages)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "support GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Ne peut pas récupérer la variable d'environnement HOME\n" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "Votre variable d'environnement HOME est trop longue\n" #: ../utils.c:2567 msgid "Edit Categories..." msgstr "Edition des Catégories..." #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID est 0.\n" #: ../utils.c:3234 #, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Génération d'un nouveau PC ID. C'est %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Aujourd'hui %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Aujourd'hui %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Erreur d'écriture de l'entête de version dans le fichier : %s%s\n" #: ../utils.c:3810 #, c-format msgid "Error writing next id to file: %s%s" msgstr "Erreur d'écriture de next id dans le fichier : %s%s" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Vue hebdo" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australie" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Autriche" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belgique" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brésil" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Danemark" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finlande" #: ../Expense/expense.c:103 msgid "France" msgstr "France" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Allemagne" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Islande" #: ../Expense/expense.c:107 msgid "India" msgstr "Inde" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonésie" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irlande" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italie" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japon" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Corée" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxembourg" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malaysie" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mexique" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Pays Bas" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nouvelle-Zélande" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norvège" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "Chine" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Philippines" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapour" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Espagne" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Suède" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Suisse" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taïwan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Thailand" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Royaume Uni" #: ../Expense/expense.c:128 msgid "United States" msgstr "USA" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Dépenses" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Transport aérien" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "petit déjeuner" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Bus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "repas d'affaire" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Location de voiture" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Diner" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Distraction" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Télécopie" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Essence" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Cadeaux" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hôtel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Faux-frais" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Blanchisserie" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Voiture" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Pension" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Déjeuner" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Kilométrage" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parking" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "frais d'envois" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Snack" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Métro" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Subsistance" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Téléphone" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Pourboires" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Péages" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Train" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Expense : type de dépense inconnu\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Expense : type de paiement inconnu\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Espèces" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Chèque" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Carte de crédit" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "MasterCard/Eurocard" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Prépayé" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA / CB" #: ../Expense/expense.c:1617 msgid "Type" msgstr "Type" #: ../Expense/expense.c:1618 msgid "Amount" msgstr "Montant" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Catégorie :" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Type :" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Paiement :" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Monnaie :" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Mois :" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Jour :" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Année :" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Montant :" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Vendeur :" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Ville :" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Invités" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing : pack_KeyRing() : buf_size trop petite\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Erreur, Re-entrez le mot de passe KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Tapez le NOUVEAU mot de passe KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Tapez le mot de passe KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing : fichier %s non trouvé.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing : Essayez de synchroniser.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" "Clés exportés de %s %s le %s\n" "\n" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, c-format msgid "Can't export key %d\n" msgstr "Imposible d'exporter la clé %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Changer\n" "KeyRing\n" "Mot de passe" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Modifié" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Compte" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "nom : " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "compte : " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "Mot de passe : " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "dernier changement : " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Génération d'un mot de passe" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "SyncTime" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "synctime: Palm OS versions 3.25 et 3.30 ne supportent pas SyncTime\n" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "synctime: PAS de mise à l'heure du pilot\n" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "synctime: Mise à l'heure du pilot..." #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Fait\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Écrase le fichier" #~ msgid "Serial Port" #~ msgstr "Port série" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i iconifie jpilot au lancement.\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Votre variable d'environnement HOME est trop longue (>1024)\n" #~ msgid "W" #~ msgstr "S" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "Cet évènement n'a pas d'heure définie" #~ msgid "Start Time" #~ msgstr "Heure de début" #~ msgid "End Time" #~ msgstr "Heure de fin" #~ msgid "email command empty\n" #~ msgstr "Commande d'envoi de mél vide\n" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Impossible d'ouvrir le fichier %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Impossible d'ouvrir le fichier %s.alarms\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Impossible de modifier la catégorie %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "La catégorie %s ne peut pas être supprimée.\n" #~ msgid "category name" #~ msgstr "Catégorie" #~ msgid "debug" #~ msgstr "debug" #~ msgid "End Date: Never\n" #~ msgstr "Date de fin : jamais\n" #, fuzzy #~ msgid "Repeat Days: " #~ msgstr "Répété les jours :" #~ msgid "Close" #~ msgstr "Fermer" #~ msgid "none" #~ msgstr "aucun" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "repeatType inconnu trouvé dans DatebookDB\n" #~ msgid "Dismiss" #~ msgstr "Annuler" #~ msgid "Done" #~ msgstr "Valider" #~ msgid "Add" #~ msgstr "Ajouter" #~ msgid "Remove" #~ msgstr "Supprimer" #~ msgid "User name" #~ msgstr "Nom d'utilisateur" #~ msgid " -v = version\n" #~ msgstr " -v = version\n" #~ msgid " -h = help\n" #~ msgstr " -h = aide\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = mode débug\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = ne pas charger les plugins\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = synchroniser et faire une sauveragde, sinon juste synchroniser.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Spécification de géométrie invalide : \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Aide/PayBack program" #~ msgid "Font Selection Dialog" #~ msgstr "Boîte de choix de police" #~ msgid "Show private records" #~ msgstr "Montrer les enregistrements privés" #~ msgid "Hide private records" #~ msgstr "Cacher les enregistrements privés" #~ msgid "Mask private records" #~ msgstr "Masquer les enregistrements privés" #~ msgid "Font" #~ msgstr "Police" #~ msgid "Go to the menu \"" #~ msgstr "Allez dans le menu \"" #~ msgid "\" and change the \"" #~ msgstr "\" et changez le \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "Ne peut pas ouvrir le fichier des enregistrements\n" #~ msgid "The first day of the week is " #~ msgstr "Le premier jour de la semaine est " #~ msgid "One record" #~ msgstr "Un enregistement" #~ msgid "Finished\n" #~ msgstr "Terminé\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Dernier Username = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "dernier UserID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Username = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "userID = %d\n" #~ msgid "number of records = %d\n" #~ msgstr "Nombre d'enregistrements = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm : nombre d'enregistrements = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disque : nombre d'enregistrements = %d\n" #, fuzzy #~ msgid "Your HOME environment variable is too long for me\n" #~ msgstr "Votre variable d'environnement HOME est trop longue (>1024)\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s n'est pas un répertoire.\n" #~ "Il devrait l'être.\n" #, fuzzy #~ msgid "I can't write files in directory %s\n" #~ msgstr "Ne peut créer le répertoire %s\n" #~ msgid "Expense: Unknown category\n" #~ msgstr "Expense : catégorie inconnue\n" #~ msgid "Field" #~ msgstr "Champ" #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "port série (/dev/ttyS0, /dev/pilot)" #~ msgid "My Palm has the Address application" #~ msgstr "Mon Palm a l'application Address" #~ msgid "My Palm has the Contacts application" #~ msgstr "Mon Palm a l'application Contacts" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Sync memo32 (pedit32)" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Affichage rapide" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Vitesse port série (sans effet pour USB)" #~ msgid "AmEx" #~ msgstr "Amex" #~ msgid "CreditCard" #~ msgstr "Carte de crédit" #~ msgid "MasterCard" #~ msgstr "MasterCard/Eurocard" #~ msgid "Quit" #~ msgstr "Quitter" #~ msgid "Help" #~ msgstr "Aide" #~ msgid "Directory" #~ msgstr "Répertoire" #~ msgid "Filename" #~ msgstr "Nom de fichier" #~ msgid "Answer: " #~ msgstr "Réponse : " #~ msgid "Sync" #~ msgstr "Sync" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p ne charge pas les greffons.\n" #~ msgid "Copy the record Ctrl+O" #~ msgstr "Copie l'enregistrement Ctrl+O" #~ msgid "Add a new record Ctrl+N" #~ msgstr "Ajouter un nouvel enregistrement Ctrl+N" #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "Ajouter le nouvel enregistrement Ctrl+Enter" #~ msgid "Commit the modifications Ctrl+Enter" #~ msgstr "Appliquer les modifications Ctrl+Entrée" #~ msgid "Backup" #~ msgstr "Sauver" jpilot-1.8.2/po/de.po0000664000175000017500000025567312340261240011330 00000000000000# German translation for jpilot. # # Henrik Becker , 2001. # Felix Knecht , 2003. # Peter Mukunda Pasedach , 2006. msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.6\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2006-03-26 04:07+0100\n" "Last-Translator: Peter Mukunda Pasedach \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0.1\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Fehler beim Lesen der Kategorieinfo %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Fehler beim lesen von %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "Fehler" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "Kann %s nicht öffnen\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kann %s nicht öffnen\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Diese Datei scheint nicht im address.dat Format zu sein\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Nicht abgelegt" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "Ok" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Nein" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Ja" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s ist ein Verzeichnis" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Fehler beim Öffnen der Datei" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Wollen Sie die Datei %s überschreiben?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Datei überschreiben?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Fehler beim Öffnen der Datei" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Kategorie:" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privat" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-Mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Name/Firma" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Name/Firma" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Firma/Name" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Diesen Befehl ausführen" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Fehlgeschlagen.\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Kategorie:" #: ../address_gui.c:2902 ../address_gui.c:4237 #, fuzzy msgid "Mail" msgstr "Brasilien" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Wählen" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Unbenannt-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 Einträge" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d von %d Einträgen" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Name" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adresse" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Sonstige" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Notiz" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Schnellsuche : " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Abbrechen" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 #, fuzzy msgid "Cancel the modifications" msgstr "Kompiliert mit folgenden Optionen:" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Löschen" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "Einen %s-Eintrag gelöscht." #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Löschen" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "Einen %s-Eintrag gelöscht." #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopieren" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "Eintrag hinzufügen" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Neuer Eintrag" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "Eintrag hinzufügen" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Eintrag hinzufügen" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "Eintrag hinzufügen" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Änderungen übernehmen" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 #, fuzzy msgid "Commit the modifications" msgstr "Kompiliert mit folgenden Optionen:" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privat" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Abbrechen" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Entfernen" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Zeige\n" "In Liste" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Erinnere mich in" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Tage" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Alle" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minuten" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Stunden" #: ../alarms.c:253 msgid "Remind me" msgstr "Erinnere mich in" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "Kann %s nicht öffnen\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Terminerinnerung" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Verstrichener Termin" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Verschobener Termin" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Termin" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC-Datei beschädigt?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek fehlgeschlagen - schwerer Fehler\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "Installation von %s fehlgeschlagen" #: ../category.c:407 msgid "Move" msgstr "Verschiebe" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Kategorien editieren" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Die maximal Katergorienzahl (16) wird schon verwendet" #: ../category.c:440 msgid "Enter New Category" msgstr "Neue Kategorie eingeben" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Kategorien editieren" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Zum Umbenennen muss eine Katergorie selektiert sein" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Neuer Kategoriename" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Zum Löschen muss eine Katergorie selektiert sein" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%d Einträge in %s.\n" "Möchten sie die Einträge nach %s verschieben oder löschen?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Die Kategorie %s kann nur einmal verwendet werden" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Kategorie:" #: ../category.c:834 msgid "New" msgstr "Neu" #: ../category.c:841 msgid "Rename" msgstr "Umbenennen" #: ../dat.c:512 msgid "unknown type =" msgstr "" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "" #: ../dat.c:636 msgid "File schema is:" msgstr "" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Wiederholung an:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Wochentage für Wiederholung:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Wiederholung an:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Wochentage für Wiederholung:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Wochentage für Wiederholung:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Wochentage für Wiederholung:" # These days of the week are put in the buttons above the calendar and # the little buttons in the repeat weekly window. # They should be one letter if possible. The English ones get truncated to # one letter. #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "So" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Mo" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Di" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Mi" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Do" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Fr" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Sa" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Enddatum" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Wochentage für Wiederholung:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "Anzahl der Einträge: %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Notiz" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarm" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Wiederholung an:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Wochentag" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Termin-Beschreibung ist zu lang, %d wurde auf %d abgeschnitten.\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Fehler" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Diese Datei scheint nicht im datebook.dat Format zu sein.\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportieren" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Alle Terminplanereinträge exportieren" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Speichern unter" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Durchsuchen" #: ../datebook_gui.c:1432 #, fuzzy msgid "Datebook Categories" msgstr "Kategorien editieren" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Keine" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Startdatum" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Enddatum" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Sonntag" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Montag" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Dienstag" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Mittwoch" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Donnerstag" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Freitag" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Samstag" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4." #: ../datebook_gui.c:1760 msgid "Last" msgstr "Letzter" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Dies ist ein sich wiederholender\n" "Termin. Sollen sich die Änderungen\n" "nur auf den AKTUELLEN oder auf\n" "ALLE Terminsereignisse beziehen?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Aktueller" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "Tag" #: ../datebook_gui.c:2028 msgid "week" msgstr "Woche" #: ../datebook_gui.c:2029 msgid "month" msgstr "Monat" #: ../datebook_gui.c:2030 msgid "year" msgstr "Jahr" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Eine Wiederholung alle %d %s(e) ist nicht möglich \n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "Wöchentliche Wiederholung nicht möglich, wenn kein Tag gewählt ist." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Keine Uhrzeit" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Ungültiger Termin" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Das Enddatum dieses Termins\n" "liegt vor den Startdatum." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Kein Fälligkeitsdatum" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Woche" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Monat" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Kategorien" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Zeit" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Zeige Aufgaben" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Aufgabe" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Fälligkeit" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 #, fuzzy msgid "Date:" msgstr "Datum" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Beginn" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Endet am" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk Felder" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Tag" # msgid "WeekView" # msgstr "Woche" # msgid "MonthView" # msgstr "Monat" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Jahr" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Keine Wiederholung des Termins" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Wiederholung alle/jeden" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Tag(e)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Endet am" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Woche(n)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Monat(e)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Wiederholung an:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Wochentag" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Datum" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Jahr(e)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Wählprogramm" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Prefix 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Prefix 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Prefix 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Telefonnummer" #: ../dialer.c:319 msgid "Extension" msgstr "Erweiterung" #: ../dialer.c:341 msgid "Dial Command" msgstr "Wähl-Befehl" #: ../export_gui.c:121 msgid "File Browser" msgstr "Dateibrowser" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Zu exportierende Einträge auswählen" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Benutzen Sie die Strg- und Shift-Tasten" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importieren" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Dieser Eintrag ist als privater markiert" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Dieser Eintrag ist nicht als privater markiert" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Alle Einträge in dieser Kategorie" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Alle importieren" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Überspringen" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "" "Um ein verstecktes Verzeichnis aufzurufen, Namen eintippen und Tabulator-" "Taste drücken." #: ../import_gui.c:484 msgid "Import File Type" msgstr "Import-Dateiformat" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Zu installierende Dateien" #: ../install_gui.c:372 msgid "Install" msgstr "Installieren" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Datei/Benutzer Installieren" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Benutzername" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "BenutzerID" #: ../jpilot.c:317 msgid "Print" msgstr "Drucken" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Drucken aus diesem Conduit nicht möglich." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Importieren in dieses Conduit nicht möglich." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Exportieren aus diesem Conduit nicht möglich." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Abgleich abbrechen" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Abgleich abbrechen" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Trotzdem synchronisieren" #: ../jpilot.c:697 ../jpilot.c:701 #, fuzzy msgid "Sync Problem" msgstr "Merkzettel synchronisieren" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "BenutzerID" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Über %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Datei" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Datei/Abreissen" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Datei/_Suchen" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Datei/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Datei/_Installieren" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Datei/I_mportieren" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Datei/_Exportieren" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Datei/Ei_nstellungen" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Datei/_Drucken" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Datei/Benutzer Installieren" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Datei/Pilot _wiederherstellen" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Datei/_Beenden" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Ansicht" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Ansicht/Private Einträge verbergen" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Ansicht/Private Einträge anzeigen" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Ansicht/Private Einträge maskieren" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Ansicht/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Ansicht/_Terminplaner" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Ansicht/A_dressen" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Ansicht/A_ufgaben" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Ansicht/_Merkzettel" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Plugins" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/_Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/_Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/_Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/_Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/Gnome_Url" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/_Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/L_inks" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W_3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/_Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Hilfe" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Hilfe/über J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/Plugins/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Hilfe/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "Kann %s nicht öffnen\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Private Einträge anzeigen" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Private Einträge verbergen" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Private Einträge maskieren (---)" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Palm mit Desktop synchronisieren" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Adressen synchronisieren" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Palm mit Desktop synchronisieren\n" "und dann Backup erstellen" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Terminplaner/Heute" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adressbuch" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Aufgaben" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Merkzettel" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 #, fuzzy msgid "Remind me later" msgstr "Erinnere mich in" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Zeichensatz " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "Adressbuch" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "Adressbuch" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Adressbuch" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "Adressbuch" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kann %s nicht öffnen\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Fehler beim Öffnen der Datei" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Fehler beim Öffnen der Datei" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Fehler" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "Kann %s nicht öffnen\n" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Kann Kategorie %s auf Gerät nicht hinzufügen.\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Fehler beim Lesen von %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Fehler beim Lesen von %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Fehler beim Öffnen der Datei" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Fehler beim lesen von %s\n" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Fehler beim lesen von %s\n" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Fehler beim lesen von %s\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kann Log-File nicht öffnen, gebe auf.\n" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "Kann %s nicht öffnen\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Diese Datei scheint nicht im memopad.dat Format zu sein\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Merkzettel" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Monatsübersicht" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm Passwort" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Falsches PalmOS-Passwort. Bitte erneut eingeben" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "PalmOS-Passwort eingeben" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "Kann jpilot_to_install Datei nicht öffnen\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Fehler beim lesen von %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, fuzzy, c-format msgid "Plugin:[%s]\n" msgstr "/Plugins/%s" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Einstellungen" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Lokales" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Einstellungen" #: ../prefs_gui.c:487 #, fuzzy msgid "Datebook" msgstr "Termin" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Aufgabe" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "Merkzettel" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarm" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Conduits" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Datumsformat (kurz) " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Datumsformat (lang) " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Zeitformat " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "GTK-Farbdatei" #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Merkzettel synchronisieren" #. Serial Rate #: ../prefs_gui.c:605 #, fuzzy msgid "Serial Rate" msgstr "Schnittstellengeschwindigkeit" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Wieviele Backups sollen archiviert werden?" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Gelöschte Einträge anzeigen? (Standard: Nein)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Veränderte gelöschte Einträge anzeigen? (Standard: Nein)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Tage mit Terminen farblich kennzeichnen?" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "DateBk Felder unterstützen" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "DateBk Unterstützung wurde beim kompilieren deaktiviert" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 #, fuzzy msgid "Mail Command" msgstr "Wähl-Befehl" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%t wird durch die Alarmzeit ersetzt" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Erledigte Aufgaben ausblenden" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Verstecke Aufgaben die noch nicht fällig sind" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Fertigstellungsdatum aufzeichnen" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Verwende Manana Datenbank" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Memo32 (pedit32) nutzen" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Meldungsfenster für Terminerinnerungen anzeigen" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Diesen Befehl ausführen" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "ACHTUNG: Einen Shell-Befehl auszuführen kann GEFÄHRLICH sein!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarm-Befehl" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t wird durch die Alarmzeit ersetzt" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d wird durch das Alarmdatum ersetzt" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D wird durch die Alarmbeschreibung ersetzt" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N wird durch die Alarmnotiz ersetzt" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (Ersetzen der Beschreibung) in diesem Build deaktiviert" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%D (Ersetzen der Notiz) in diesem Build deaktiviert" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Terminkalender synchronisieren" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Adressen synchronisieren" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Aufgaben synchronisieren" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Merkzettel synchronisieren" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Manana synchronisieren" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Verwende J-OS (Nicht japanisches PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Synce %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Druckoptionen" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Papiergröße" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Tagesplan drucken" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Wochenplan drucken" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Monatsplan drucken" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Einen %s-Eintrag gelöscht." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Alle Einträge in dieser Kategorie" #: ../print_gui.c:272 msgid "Print all records" msgstr "Alle Einträge drucken" #: ../print_gui.c:294 msgid "One record per page" msgstr "Einen Eintrag pro Seite" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Leerzeilen zwischen Einträgen" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Druckbefehl (z.B. lpr oder cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Pilot wiederherstellen" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Zu installierende Dateien" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Um den Pilot wiederherzustellen:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Wählen Sie alle die Anwendungen/Dateien aus, die Sie wiederherstellen " "wollen. (Standard: Alle)" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Benutzernamen und BenutzerID eingeben." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. OK-Button drücken." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Das überschreibt alle Daten, die sich derzeit auf dem Pilot befinden." #: ../search_gui.c:142 msgid "datebook" msgstr "Termin" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "Adresse" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 #, fuzzy msgid "todo" msgstr "Aufgaben synchronisieren" #: ../search_gui.c:359 msgid "memo" msgstr "Merkzettel" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Merkzettel" #: ../search_gui.c:419 msgid "plugin ?" msgstr "Plugin ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Keine Einträge gefunden" #: ../search_gui.c:598 msgid "Search" msgstr "Suchen" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Suchen nach: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Groß- u. Kleinschreibung beachten?" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "Kann Log-File nicht öffnen\n" #: ../sync.c:131 #, fuzzy msgid "lock failed\n" msgstr "Fehlgeschlagen.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Überprüfen Sie die serielle Schnittstelle und die Einstellungen\n" #: ../sync.c:677 #, fuzzy msgid "Unable to read home dir\n" msgstr "Kann %s nicht öffnen\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ErstellerID '%s') ist aktuell und wurde nicht abgeglichen.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Abgleich mit '%s' ... (ErstellerID '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Kann Datei %s nicht erzeugen\n" #: ../sync.c:1100 ../sync.c:1438 #, fuzzy, c-format msgid "Failed, unable to back up database %s\n" msgstr "Kann Backup der Datenbank nicht durchführen\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "Ok\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Überspringe %s (ErstellerID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installiere %s" #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Kann '%s' nicht öffnen!\n" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Kann '%s' nicht öffnen!\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ErstellerID ist '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ErstellerID ist '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "Kann %s nicht öffnen\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installation von %s fehlgeschlagen" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Fehlgeschlagen.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s wurde installiert" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Fehler beim Holen der Applikationsinfo %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Fehler beim Entpacken der Applikationsinfo %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Fehler beim Lesen des Applikationsinfoblocks für %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Kann Kategorie %s auf Gerät nicht hinzufügen.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Zu viele Kategorieen auf Gerät.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Alle Datensätze auf dem Desktop in %s werden nach %s verschoben.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synce %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Habe einen %s-Eintrag geschrieben." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Das Schreiben eines %s Eintrages ist fehlgeschlagen." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Löschen eines %s-Eintrages ist fehlgeschlagen." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Ein %s-Eintrag gelöscht." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Ein %s-Eintrag gelöscht." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Einen %s-Eintrag geschrieben." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Das Schreiben eines %s-Eintrages ist fehlgeschlagen." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Das Löschen eines %s-Eintrages ist fehlgeschlagen." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Einen %s-Eintrag gelöscht." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord schlug fehl\n" "Das kann daran liegen, daß der Eintrag bereits auf dem Palm gelöscht wurde\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Abgleich mit %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Hot-Sync Knopf jetzt drücken\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Letzter synchronisierter Benutzername -->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Letzte synchronisierte BenutzerID -->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "Lokaler Benutzername -->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "Lokale BenutzerID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Benutzername -->\"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "BenutzerID -->%d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "Letzter SyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Dieser PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Abgleich abgebrochen\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Pilot wurde wiederherstellen.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "" "Möglicherweise müssen Sie einen Abgleich (Sync) vornehmen, wenn Sie JPilot " "auf den neuesten Stand bringen wollen.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Schneller Abgleich\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Langsamer Abgleich\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Danke, daß Sie JPilot benutzt haben." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Fertig.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Exit-Status: %s\n" #: ../todo.c:264 #, fuzzy, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Termin-Beschreibung ist zu lang, %d wurde auf %d abgeschnitten.\n" #: ../todo.c:270 #, fuzzy, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Warnung: Aufgaben-Notiz ist zu lang, wurde auf %d abgeschnitten.\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Fälligkeitsdatum" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Diese Datei scheint nicht im todo.dat Format zu sein.\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Fälligkeitsdatum" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Fälligkeitsdatum" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Priorität: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Erledigt" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Kein Fälligkeitsdatum" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Erledigt" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Priorität: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Fälligkeitsdatum:" #: ../utils.c:330 msgid "Today" msgstr "Heute" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Kann keine leere DB-Datei finden.\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " ist evtl. nicht installiert.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, fuzzy, c-format msgid "Can't create directory %s\n" msgstr "Kann Kategorie %s nicht löschen.\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s ist ein Verzeichnis" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Kann Kategorie %s nicht löschen.\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Geänderten Eintrag speichern?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Wollen Sie die Änderungen speichern?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Neuen Eintrag speichern?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Wollen Sie den neuen Eintrag speichern?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Fehler beim lesen von %s\n" #: ../utils.c:1973 msgid "Date compiled" msgstr "Datum der Kompilierung" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Kompiliert mit folgenden Optionen:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Installiert in Pfad" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link Version" #: ../utils.c:1982 msgid "USB support" msgstr "USB Unterstützung" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "Ja" #: ../utils.c:1984 msgid "Private record support" msgstr "Unterstützung für private Einträge" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "Nein" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk Unterstützung" #: ../utils.c:1996 msgid "Plugin support" msgstr "Plugin Unterstützung" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana Unterstützung" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS Unterstützung (Fremdsprachen)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 Unterstützung" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Kategorien editieren" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID ist 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Ich habe eine neue PC ID angelegt: %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Heute ist %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Heute ist %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Fehler beim lesen von %s\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Fehler beim lesen von %s\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Wochenansicht" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australien" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Österreich" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belgien" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brasilien" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Kanada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Dänemark" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finnland" #: ../Expense/expense.c:103 msgid "France" msgstr "Frankreich" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Deutschland" #: ../Expense/expense.c:105 #, fuzzy msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Island" #: ../Expense/expense.c:107 msgid "India" msgstr "" #: ../Expense/expense.c:108 #, fuzzy msgid "Indonesia" msgstr "Keiner" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irland" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italien" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japan" #: ../Expense/expense.c:112 msgid "Korea" msgstr "" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxemburg" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mexiko" #: ../Expense/expense.c:116 #, fuzzy msgid "Netherlands" msgstr "Schweiz" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Neuseeland" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norwegen" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Spanien" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Schweden" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Schweiz" #: ../Expense/expense.c:125 #, fuzzy msgid "Taiwan" msgstr "Eisenbahn" #: ../Expense/expense.c:126 #, fuzzy msgid "Thailand" msgstr "Finnland" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "" #: ../Expense/expense.c:128 msgid "United States" msgstr "" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Kosten" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Flugkosten" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Frühstück" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Bus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Geschäftsessen" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Autoverleih" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Abendessen" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Unterhaltung" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Benzin" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Geschenke" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Nebenkosten" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Wäscherei" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limousine" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Unterkunft" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Mittagessen" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Kilometergeld" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parken" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Porto" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Imbiss" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "U-Bahn" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Zubehör" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Trinkgeld" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Maut" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Eisenbahn" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Bar" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Scheck" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Kreditkarte" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Vorausbezahlt" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Typ: " #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Betrag: " #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "Kategorie:" #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Typ: " #. Payment Menu #: ../Expense/expense.c:1718 #, fuzzy msgid "Payment:" msgstr "Bezahlung: " #. Currency Menu #: ../Expense/expense.c:1726 #, fuzzy msgid "Currency:" msgstr "Währung: " #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Monat:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Tag:" # msgid "WeekView" # msgstr "Woche" # msgid "MonthView" # msgstr "Monat" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Jahr:" #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Betrag: " #. Vendor Entry #: ../Expense/expense.c:1797 #, fuzzy msgid "Vendor:" msgstr "Verkäufer: " #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Stadt:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Teilnehmer" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s wurde geschrieben von \n" "Judd Montgomery (c) 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Falsches KeyRing Passwort. Bitte erneut eingeben" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Bitte NEUES KeyRing Passwort eingeben" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Bitte KeyRing Passwort eingeben" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Kann Kategorie %s nicht löschen.\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Ändere\n" "KeyRing}\n" "Passwort" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Abbrechen" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Konto" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "Name: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "Konto: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "Passwort: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Passwort erzeugen" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Merkzettel synchronisieren" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s wurde geschrieben von \n" "Judd Montgomery (c) 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Fertig" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Datei überschreiben" #, fuzzy #~ msgid "Field" #~ msgstr "Finnland" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Kurzansicht" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "Kann %s nicht öffnen\n" #, fuzzy #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Kann %s nicht öffnen\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Kann Kategorie %s nicht editieren.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Kann Kategorie %s nicht löschen.\n" #, fuzzy #~ msgid "category name" #~ msgstr "Kategorie:" #~ msgid "debug" #~ msgstr "debug" #~ msgid "Close" #~ msgstr "Schließen" #~ msgid "none" #~ msgstr "Keiner" #, fuzzy #~ msgid "W" #~ msgstr "Mi" #, fuzzy #~ msgid "M" #~ msgstr "Mo" #~ msgid "This Event has no particular time" #~ msgstr "Keine Zeitangabe" #~ msgid "Start Time" #~ msgstr "Startzeit" #~ msgid "End Time" #~ msgstr "Endzeit" #~ msgid "Dismiss" #~ msgstr "Verlassen" #~ msgid "Done" #~ msgstr "Fertig" #~ msgid "Add" #~ msgstr "Hinzufügen" #, fuzzy #~ msgid "User name" #~ msgstr "Benutzername" #~ msgid "/Help/PayBack program" #~ msgstr "/Hilfe/PayBack program" #~ msgid "Clear" #~ msgstr "Löschen" #, fuzzy #~ msgid "Show private records" #~ msgstr "Private Einträge anzeigen" #, fuzzy #~ msgid "Hide private records" #~ msgstr "Private Einträge verbergen" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Private Einträge maskieren (---)" #~ msgid "Font" #~ msgstr "Schrift" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Kann Datei %s nicht öffnen.\n" #~ msgid "The first day of the week is " #~ msgstr "Erster Wochentag ist " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Serielle Schnittstelle (/dev/ttyS0, /dev/pilot)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Memo32 (pedit32) synchronisieren" #~ msgid "One record" #~ msgstr "Einen Eintrag" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr " Hot-Sync Knopf jetzt drücken\n" #~ msgid "Finished\n" #~ msgstr "Fertig!\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Letzter Username = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Letzte BenutzerID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Benutzername = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "BenutzerID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "Palm: Anzahl der Einträge: %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "Disk: Anzahl der Einträge: %d\n" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "Diese Datei scheint nicht im address.dat Format zu sein\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Kreditkarte" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Quit" #~ msgstr "Beenden" #~ msgid "Help" #~ msgstr "Hilfe" #, fuzzy #~ msgid "Directory" #~ msgstr "%s ist ein Verzeichnis" #, fuzzy #~ msgid "Filename" #~ msgstr "Umbenennen" #~ msgid "Sync" #~ msgstr "Sync" #, fuzzy #~ msgid "Cancel the modifications ESC" #~ msgstr "Kompiliert mit folgenden Optionen:" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "Private Einträge verbergen" #~ msgid "Backup" #~ msgstr "Backup" #~ msgid "Quit!" #~ msgstr "Beenden!" #, fuzzy #~ msgid "Show Preferences" #~ msgstr "Einstellungen" #~ msgid "About Expense" #~ msgstr "Über Kosten" #, fuzzy #~ msgid "About KeyRing" #~ msgstr "Über Kosten" #~ msgid "\n" #~ msgstr "\n" #, fuzzy #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ " [ [-v] || [-h] || [-d] || [-a] || [-A]\n" #~ " -v zeigt die Version an und beendet das Programm.\n" #~ " -h zeigt Hilfetexte an und beendet das Programm.\n" #~ " -d gibt debugging Informationen nach stdout aus.\n" #~ " -p keine plugins laden.\n" #~ " -a ignoriere abgelaufene Alarmmeldungen seit dem letzten " #~ "Programmaufruf.\n" #~ " -A Alle Alarmmeldungen ignorieren, abgelaufene und zukünftige.\n" #~ " Die Umgebungsvariablen PILOTPORT und PILOTRATE werden genutzt,\n" #~ " um zu bestimmen, an welchem Port mit welcher Geschwindigkeit der " #~ "HotSync\n" #~ " durchgeführt wird.\n" #~ " Wenn PILOTPORT nicht gesetzt ist, dann wird /dev/pilot angenommen.\n" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): Nicht genug Speicher\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "dlp_EintragSchreiben fehlgeschlagen\n" #~ msgid "" #~ "\n" #~ "Unable to open '%s'!\n" #~ msgstr "" #~ "\n" #~ "Kann '%s' nicht öffnen!\n" #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "Kann Datei %s_to_install nicht öffnen\n" #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "Kann Datei %s_to_install.tmp nicht öffnen\n" #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): Nicht genügend Speicher\n" #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Fehler beim Lesen von %s : %s %d\n" #~ msgid "Warning ToDo description too long, truncating to %d\n" #~ msgstr "" #~ "Warnung: Aufgaben-Beschreibung ist zu lang, wurde auf %d abgeschnitten.\n" #~ msgid "/Web/Netscape/%s" #~ msgstr "/Web/Netscape/%s" #~ msgid "/Web/Mozilla/%s" #~ msgstr "/Web/Mozilla/%s" #~ msgid "/Web/Galeon/%s" #~ msgstr "/Web/Galeon/%s" #~ msgid "/Web/Opera/%s" #~ msgstr "/Web/Opera/%s" #~ msgid "/Web/GnomeUrl/%s" #~ msgstr "/Web/GnomeUrl/%s" #~ msgid "/Web/Lynx/%s" #~ msgstr "/Web/Lynx/%s" #~ msgid "/Web/Links/%s" #~ msgstr "/Web/Links/%s" #~ msgid "/Web/W3M/%s" #~ msgstr "/Web/W3M/%s" #~ msgid "/Web/Konqueror/%s" #~ msgstr "/Web/Konqueror/%s" #~ msgid "Holland" #~ msgstr "Holland" #~ msgid "U.K." #~ msgstr "Großbritannien" #~ msgid "U.S.A." #~ msgstr "U.S.A." #, fuzzy #~ msgid "Cannot open " #~ msgstr "Kann Log-File nicht öffnen\n" #~ msgid "Time:" #~ msgstr "Zeit:" #~ msgid "RTh" #~ msgstr "Do" #, fuzzy #~ msgid "Last Syned UserID-->\"%d\"\n" #~ msgstr "Letzte BenutzerID -->\"%d\"\n" jpilot-1.8.2/po/ChangeLog0000664000175000017500000000150712320101153012125 000000000000002008-06-01 gettextize * Makefile.in.in: Upgrade to gettext-0.16.1. 2005-12-11 gettextize * Makefile.in.in: Upgrade to gettext-0.14.5. 2004-02-22 gettextize * Makefile.in.in: Upgrade to gettext-0.14.1. 2003-04-20 gettextize * Makefile.in.in: Upgrade to gettext-0.11.5. * Rules-quot: New file, from gettext-0.11.5. * boldquot.sed: New file, from gettext-0.11.5. * en@boldquot.header: New file, from gettext-0.11.5. * en@quot.header: New file, from gettext-0.11.5. * insert-header.sin: New file, from gettext-0.11.5. * quot.sed: New file, from gettext-0.11.5. * remove-potcdate.sin: New file, from gettext-0.11.5. 2003-01-13 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. jpilot-1.8.2/po/ja.po0000664000175000017500000025631312340261240011322 00000000000000# Japanese translations for jpilot. # # Hiroshi Kawashima , 2000 # Hiroshi Miura , 2001 msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.9-pre1\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2006-01-29 01:43+0900\n" "Last-Translator: Hiroshi Miura \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-jp\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "¥á¥â¥êÉÔ­¤Ç¤¹¡£" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d ¥«¥Æ¥´¥ê¾ðÊó %s¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "¥Õ¥¡¥¤¥ë %s¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "¥¨¥é¡¼" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "¤³¤Î¥ì¥³¡¼¥É¤Ïºï½ü¤µ¤ì¤Þ¤·¤¿¡£\n" "Êѹ¹¤¹¤ë¾ì¹ç¤Ï¡¢ºï½ü¤Î¼è¤ê¾Ã¤·¤Þ¤¿¤Ï¥³¥Ô¡¼¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "¥Õ¥¡¥¤¥ë %s¤ò³«¤±¤Þ¤»¤ó\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "¥Õ¥¡¥¤¥ë %s¤ò³«¤±¤Þ¤»¤ó\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "¥Õ¥¡¥¤¥ë¤Ïaddress.dat¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï̵¤¤¤è¤¦¤Ç¤¹\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "ʬÎà̵¤·" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "No" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Yes" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È¤­¤Î¥¨¥é¡¼" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "¥Õ¥¡¥¤¥ë %s ¤ò¾å½ñ¤­¤·¤Þ¤¹¤«¡©" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¤«¡©" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "¥Õ¥¡¥¤¥ë %s ¤ò³«¤¯¤È¤­¤Î¥¨¥é¡¼" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "%d ¤Î¥¢¥É¥ì¥¹¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "¥«¥Æ¥´¥ê¡§" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "¥×¥é¥¤¥Ù¡¼¥È" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "ÉÔÌÀ¤Ê¥¨¥¯¥¹¥Ý¡¼¥È¥¿¥¤¥×\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "̾Á°/²ñ¼Ò̾" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "̾Á°/²ñ¼Ò̾" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "²ñ¼Ò̾/̾Á°" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "ºï½üºÑ¤ß¤Î¥ì¥³¡¼¥É¤ÏÊѹ¹¤Ç¤­¤Þ¤»¤ó¡£\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "¥«¥Æ¥´¥ê¤¬Í­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "¥í¥Ã¥¯¤Î¼ºÇÔ\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "¥«¥Æ¥´¥ê¡§" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "¥á¡¼¥ë" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "¥À¥¤¥¢¥ë" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "̤ÀßÄê" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 ¥ì¥³¡¼¥É" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d/%d¥ì¥³¡¼¥É" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "̾Á°" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "¥¢¥É¥ì¥¹Ä¢" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "¤½¤Î¾" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "¥Î¡¼¥È" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "ÅÅÏÃÈÖ¹æ" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "¥¯¥¤¥Ã¥¯¸¡º÷: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "¥­¥ã¥ó¥»¥ë" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Êѹ¹¤ò¥­¥ã¥ó¥»¥ë" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "ºï½ü" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "ÁªÂò¤·¤¿¥ì¥³¡¼¥É¤òºï½ü" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "ºï½ü¤òÌ᤹" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "ÁªÂò¤·¤¿¥ì¥³¡¼¥É¤Îºï½ü¤ò¼è¤ê¾Ã¤¹" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "¥³¥Ô¡¼" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "ÁªÂò¤·¤¿¥ì¥³¡¼¥É¤ò¥³¥Ô¡¼" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "¿·µ¬¥ì¥³¡¼¥É" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲÃ" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "¥ì¥³¡¼¥É¤ÎÄɲÃ" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲÃ" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Êѹ¹¤òŬÍÑ" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Êѹ¹¤òÈ¿±Ç" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "¥×¥é¥¤¥Ù¡¼¥È" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "¥­¥ã¥ó¥»¥ë" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "ºï½ü" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "¥ê¥¹¥È¤Ç\n" "ɽ¼¨" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "¥¢¥é¡¼¥à" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Æü" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Á´¤Æ" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "ʬ" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "»þ" #: ../alarms.c:253 msgid "Remind me" msgstr "¥¢¥é¡¼¥à" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "%s/%s ¤ò³«¤±¤Þ¤»¤ó\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "ͽÄê¤ÎÄÌÃÎ" #: ../alarms.c:513 msgid "Past Appointment" msgstr "´°Î»¤·¤¿Í½Äê" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "ÊÝᤵ¤ì¤¿Í½Äê" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "ͽÄê" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot ¥¢¥é¡¼¥à" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC¥Õ¥¡¥¤¥ë¤¬½ñ¤­ÂؤäƤ¤¤Þ¤¹¡£\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek¤¬¼ºÇÔ¤·¤Þ¤·¤¿ - ²óÉüÉÔǽ¤Ê¥¨¥é¡¼¤Ç¤¹\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "̾Á°¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿" #: ../category.c:407 msgid "Move" msgstr "°Üư" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "¥«¥Æ¥´¥êÊÔ½¸" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "¥«¥Æ¥´¥ê¤ÎºÇÂç¿ô(16)¤ò´û¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¡£" #: ../category.c:440 msgid "Enter New Category" msgstr "¿·¤·¤¤¥«¥Æ¥´¥ê¤ÎÆþÎÏ" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "¥«¥Æ¥´¥ê¥¨¥é¡¼ÊÔ½¸" #: ../category.c:452 msgid "You must select a category to rename" msgstr "̾Á°¤òÊѹ¹¤¹¤ë¥«¥Æ¥´¥ê¤ÎÁªÂò¤¬É¬ÍפǤ¹" #: ../category.c:461 msgid "Enter New Category Name" msgstr "¿·¤·¤¤¥«¥Æ¥´¥ê̾¤ÎÆþÎÏ" #: ../category.c:476 msgid "You must select a category to delete" msgstr "ºï½ü¤¹¤ë¥«¥Æ¥´¥ê¤ÎÁªÂò¤¬É¬ÍפǤ¹" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%d ¥ì¥³¡¼¥É¤¬ %s Ãæ¤Ë¤¢¤ê¤Þ¤¹¡£\n" "%s ¤Ë°Üư¤·¤Þ¤¹¤«¡¢¤½¤ì¤È¤âºï½ü¤·¤Þ¤¹¤«¡©" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "¥Õ¥¡¥¤¥ë %s ¹Ô %d ¤Ï̵¸ú¤Ç¤¹¡£\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "¥«¥Æ¥´¥ê̾ %s ¤Ï°ì²ó°Ê¾å»È¤¨¤Þ¤»¤ó¡£" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "¥«¥Æ¥´¥ê¡§" #: ../category.c:834 msgid "New" msgstr "¿·µ¬" #: ../category.c:841 msgid "Rename" msgstr "̾Á°¤ÎÊѹ¹" #: ../dat.c:512 msgid "unknown type =" msgstr "ÉÔÌÀ¤Ê¥¿¥¤¥× =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" "ÎóÅö¤ê¤Î¥Õ¥£¡¼¥ë¥É¿ô¤¬ %d ¤ÈÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ÉÔÌÀ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "¥Õ¥£¡¼¥ë¥É¿ô¤¬ %d ¤ÈÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ÉÔÌÀ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "ÉÔÌÀ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£¥Õ¥¡¥¤¥ë¤Î¥¹¥­¡¼¥Þ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹¡£\n" #: ../dat.c:636 msgid "File schema is:" msgstr "¥Õ¥¡¥¤¥ë¥¹¥­¡¼¥Þ¡§" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "¤³¤¦¤¢¤ë¤Ù¤­¤Ç¤¹¡§ " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%s:%d %d¥ì¥³¡¼¥É¤Î %d ¥Õ¥£¡¼¥ë¥É¡§ÉÔÌÀ¤Ê¥¿¥¤¥×¡£¶²¤é¤¯ %d, ¸«¤Ä¤«¤Ã¤¿¤Î¤Ï " "%d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß¤¬´°Î»¤·¤Þ¤·¤¿¡£\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "DatebookDB Æâ¤ËÉÔÌÀ¤Ê·«¤êÊÖ¤·¥¿¥¤¥× (%d) ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¡£\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "·«¤êÊÖ¤·ÀßÄê¡§" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "·«¤êÊÖ¤·ÍËÆü¡§" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "·«¤êÊÖ¤·ÀßÄê¡§" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "·«¤êÊÖ¤·ÍËÆü¡§" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "·«¤êÊÖ¤·ÍËÆü¡§" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "·«¤êÊÖ¤·ÍËÆü¡§" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Æü" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "·î" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "²Ð" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "¿å" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "ÌÚ" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "¶â" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "ÅÚ" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "1Æü¤Î½ª¤ê" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "·«¤êÊÖ¤·ÍËÆü¡§" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "¥ì¥³¡¼¥É¿ô = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "¥Î¡¼¥È" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "¥¢¥é¡¼¥à" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "·«¤êÊÖ¤·ÀßÄê¡§" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "ÍËÆü" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "ToDoɽµ­¤¬ %d ¤è¤êŤ¹¤®¤Þ¤¹¡£ %d ¤ØÀÚ¤êµÍ¤á¤Þ¤¹¡£\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "¥¨¥é¡¼" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "¥Õ¥¡¥¤¥ë¤Ïdatebook.dat¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï̵¤¤¤è¤¦¤Ç¤¹\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "ÉÔÌÀ¤Ê¥¨¥¯¥¹¥Ý¡¼¥È¥¿¥¤¥×" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "¥¨¥¯¥¹¥Ý¡¼¥È" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Á´¤Æ¤ÎͽÄê¥ì¥³¡¼¥É¤ò½ÐÎÏ" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "̾Á°¤ò¤Ä¤±¤ÆÊݸ" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "¥Õ¥¡¥¤¥ë°ìÍ÷" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "ͽÄê¤Î¥«¥Æ¥´¥ê" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "¤Ê¤·" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "1Æü¤Î»Ï¤Þ¤ê" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "1Æü¤Î½ª¤ê" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "ÆüÍËÆü" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "·îÍËÆü" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "²ÐÍËÆü" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "¿åÍËÆü" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "ÌÚÍËÆü" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "¶âÍËÆü" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "ÅÚÍËÆü" #: ../datebook_gui.c:1760 msgid "4th" msgstr "Âè4" #: ../datebook_gui.c:1760 msgid "Last" msgstr "ºÇ½ª" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "¤³¤ÎͽÄê¤ÏËè·î¤ÎÂè4 %s ¤Þ¤¿¤Ï\n" "ºÇ½ª %s ¤Î¤É¤Á¤é¤Ç¤â·«¤êÊÖ¤¹\n" "»ö¤¬¤Ç¤­¤Þ¤¹¡£\n" "¤É¤Á¤é¤ò´õ˾¤·¤Þ¤¹¤«?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "¼ÁÌä¤Ï?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "¤³¤ì¤ÏÄê´üŪ¤ÊͽÄê¤Ç¤¹¡£\n" "¤³¤ÎÊѹ¹¤ò¡Ö¸½ºß¡×¤ÎͽÄê¤À¤±\n" "¤ËŬÍѤ·¤Þ¤¹¤«¡©¤½¤ì¤È¤â¡¢\n" "Á´¤Æ¤ÎÄê´üŪ¤ÊͽÄê¤ØÅ¬ÍÑ\n" "¤·¤Þ¤¹¤«¡©" #: ../datebook_gui.c:1782 msgid "Current" msgstr "¸½ºß" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "Æü" #: ../datebook_gui.c:2028 msgid "week" msgstr "½µ" #: ../datebook_gui.c:2029 msgid "month" msgstr "·î" #: ../datebook_gui.c:2030 msgid "year" msgstr "ǯ" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "%dÆü¤´¤È¤Î%s¤È¤¤¤¦Í½Äê¤òÀßÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "½µ¤Î¤É¤ÎÆü¤Ë¤ª¤¤¤Æ¤â·«¤êÂØ¤¨¤µ¤ìͽÄê¤Ç¤Ï¡¢½µËè¤Ë·«¤êÊÖ¤¹Í½Äê¤òºîÀ®¤Ç¤­¤Þ¤»" "¤ó¡£" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "»þ¹ï¤Ê¤·" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "ÉÔÀµ¤ÊͽÄê" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "¤³¤ÎͽÄê¤Î½ªÎ»Æü¤Ï¡¢³«»ÏÆü\n" "°ÊÁ°¤Ç¤Ê¤±¤Ð¤Ê¤ê¤Þ¤»¤ó¡£" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "ÆüÉÕÀßÄê¤Ê¤·" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "DateBookDB Æâ¤Î ·«¤êÊÖ¤·Ã±°Ì¤Ë¥¨¥é¡¼ = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%A., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (º£Æü)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "½µ" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "ͽÄê¤ò½µÉ½¼¨" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "·î" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "ͽÄê¤ò·îɽ¼¨" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "¥«¥Æ¥´¥ê" #: ../datebook_gui.c:5021 msgid "Time" msgstr "»þ¹ï" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "ToDo¤Îɽ¼¨" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "¥¿¥¹¥¯" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "ÄùÀÚ" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "¥¢¥é¡¼¥à" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "ÆüÉÕ" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "³«»ÏÆü" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "½ª¤ï¤ê¤Ï" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk¥¿¥°" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Æü" #: ../datebook_gui.c:5450 msgid "Year" msgstr "ǯ" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "·«¤êÊÖ¤·¤Ê¤·" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "·«¤êÊÖ¤·¼þ´ü" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "ÆüËè" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "½ª¤ï¤ê¤Ï" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "½µËè" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "·îËè" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "·«¤êÊÖ¤·ÀßÄê¡§" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "ÍËÆü" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "ÆüÉÕ" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "ǯËè" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "ÅÅÏäΥÀ¥¤¥ä¥ë" #: ../dialer.c:230 msgid "Prefix 1" msgstr "¥×¥ì¥Õ¥£¥Ã¥¯¥¹ 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "¥×¥ì¥Õ¥£¥Ã¥¯¥¹ 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "¥×¥ì¥Õ¥£¥Ã¥¯¥¹ 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "ÅÅÏÃÈֹ桧" #: ../dialer.c:319 msgid "Extension" msgstr "ÆâÀþ" #: ../dialer.c:341 msgid "Dial Command" msgstr "¥À¥¤¥ä¥ë¥³¥Þ¥ó¥É" #: ../export_gui.c:121 msgid "File Browser" msgstr "¥Õ¥¡¥¤¥ë¥Ö¥é¥¦¥¶" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¥ì¥³¡¼¥É¤ÎÁªÂò" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "¥³¥ó¥È¥í¡¼¥ë¤È¥·¥Õ¥È¥­¡¼¤ò»ÈÍÑ" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "¥¤¥ó¥Ý¡¼¥È" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "¥ì¥³¡¼¥É¤Ï¥×¥é¥¤¥Ù¡¼¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "¥ì¥³¡¼¥É¤Ï¥×¥é¥¤¥Ù¡¼¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "¥¤¥ó¥Ý¡¼¥ÈÁ°¤Î¥«¥Æ¥´¥ê¡§[%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "¥ì¥³¡¼¥É¤Ï¥«¥Æ¥´¥ê [%s] ¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Á´¤Æ¤ò¥¤¥ó¥Ý¡¼¥È" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "¥¹¥­¥Ã¥×" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "±£¤·¥Õ¥¡¥¤¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤òÆþÎϤ·¤Æ TAB ¥­¡¼¤Çɽ¼¨" #: ../import_gui.c:484 msgid "Import File Type" msgstr "¥¤¥ó¥Ý¡¼¥È¥Õ¥¡¥¤¥ë¥¿¥¤¥×" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Õ¥¡¥¤¥ë" #: ../install_gui.c:372 msgid "Install" msgstr "¥¤¥ó¥¹¥È¡¼¥ë" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥æ¡¼¥¶¡¼¤Î¥¤¥ó¥¹¥È¡¼¥ë(_U)" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "¥æ¡¼¥¶¡¼Ì¾" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "¥æ¡¼¥¶¡¼ID" #: ../jpilot.c:317 msgid "Print" msgstr "°õºþ" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "¤³¤Î¥³¥ó¥¸¥Ã¥È¤Ç¤Ï°õºþ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£" #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "¤³¤Î¥³¥ó¥¸¥Ã¥È¤Ç¤Ï¥¤¥ó¥Ý¡¼¥È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£" #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "¤³¤Î¥³¥ó¥¸¥Ã¥È¤Ç¤Ï¥¨¥¯¥¹¥Ý¡¼¥È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£" #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Ʊ´ü¤Î¥­¥ã¥ó¥»¥ë" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "¤³¤Î Palm ¥Ç¥Ð¥¤¥¹¤Ï¡¢Á°²ó¤ÎƱ´ü»þ¤È¤Ï°Û¤Ê¤ë\n" "¥æ¡¼¥¶¡¼Ì¾¤Þ¤¿¤Ï¥æ¡¼¥¶¡¼ID¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£\n" "¤³¤Î¤Þ¤ÞƱ´ü¤·¤¿¾ì¹ç¡¢Ë¾¤Þ¤·¤¯¤Ê¤¤±Æ¶Á¤¬½Ð¤Þ¤¹¡£\n" "¤è¤¯Ê¬¤«¤é¤Ê¤¤»þ¤Ï¥æ¡¼¥¶¡¼¥Þ¥Ë¥å¥¢¥ë¤òÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£" #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "¤³¤Î Palm ¥Ç¥Ð¥¤¥¹¤Ë¤Ï¥æ¡¼¥¶¡¼ ID ¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" "Ʊ´ü¤òŬÀڤ˹Ԥ¦¤Ë¤Ï¡¢Á´¤Æ¤Î Palm ¥Ç¥Ð¥¤¥¹¤Ï¸ÄÊ̤Υ桼¥¶¡¼ ID ¤ò\n" "»ý¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£.\n" "¤â¤·¥Ï¡¼¥É¥ê¥»¥Ã¥È¤ò¤·¤¿¾ì¹ç¤Ï¡¢¥á¥Ë¥å¡¼¤«¤é ¥ê¥¹¥È¥¢¤ò¼Â¹Ô¤¹¤ë¤«¡¢\n" "pilot-xfer¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£\n" "install-user ¤Ç¥æ¡¼¥¶¡¼Ì¾¤È¥æ¡¼¥¶¡¼ ID ¤òÄɲ乤ë¤Ë¤Ï¡¢\n" "install-user \"¥æ¡¼¥¶¡¼Ì¾\" 12345 ¤Î¤è¤¦¤Ë¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£\n" "¤è¤¯Ê¬¤«¤é¤Ê¤¤»þ¤Ï¥æ¡¼¥¶¡¼¥Þ¥Ë¥å¥¢¥ë¤òÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Ʊ´ü¤Î¥­¥ã¥ó¥»¥ë" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "²¿¤È¤«¤·¤ÆÆ±´ü¤¹¤ë" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Ʊ´ü¤ÎÌäÂê" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr "¥æ¡¼¥¶¡¼:" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Unknown command from sync process\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "%s ¤Ë¤Ä¤¤¤Æ" #: ../jpilot.c:1107 msgid "/_File" msgstr "/¥Õ¥¡¥¤¥ë(_F)" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/¥Õ¥¡¥¤¥ë(_F)/ʬΥ(_T)" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¸¡º÷(_F)" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/¥Õ¥¡¥¤¥ë(_F)/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥¤¥ó¥¹¥È¡¼¥ë(_I)" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥¤¥ó¥Ý¡¼¥È(_N)" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥¨¥¯¥¹¥Ý¡¼¥È(_E)" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/¥Õ¥¡¥¤¥ë(_F)/´Ä¶­ÀßÄê(_O)" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/¥Õ¥¡¥¤¥ë(_F)/°õºþ(_P)" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥æ¡¼¥¶¡¼¤Î¥¤¥ó¥¹¥È¡¼¥ë(_U)" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/¥Õ¥¡¥¤¥ë(_F)/¥ê¥¹¥È¥¢(_R)" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/¥Õ¥¡¥¤¥ë(_F)/½ªÎ»(_Q)" #: ../jpilot.c:1121 msgid "/_View" msgstr "/ɽ¼¨(_V)" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/ɽ¼¨(_V)/¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤òÈóɽ¼¨(_H)" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/ɽ¼¨(_V)/¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤òɽ¼¨(_S)" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/ɽ¼¨(_V)/¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤ò¥Þ¥¹¥¯(_U)" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/ɽ¼¨(_V)/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/ɽ¼¨(_V)/ͽÄêɽ(_S)" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/ɽ¼¨(_V)/¥¢¥É¥ì¥¹Ä¢(_A)" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/ɽ¼¨(_V)/Todo¥ê¥¹¥È(_T)" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/ɽ¼¨(_V)/¥á¥âÄ¢(_M)" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/¥×¥é¥°¥¤¥ó(_P)" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/¥¦¥§¥Ö(_W)" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/¥¦¥§¥Ö(_W)/Netscape(_N)" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/¥¦¥§¥Ö(_W)/Mozilla(_M)" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/¥¦¥§¥Ö(_W)/Galeon(_G)" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/¥¦¥§¥Ö(_W)/Opera(_O)" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/¥¦¥§¥Ö(_W)/GnomeUrl(_U)" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/¥¦¥§¥Ö(_W)/Lynx(_X)" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/¥¦¥§¥Ö(_W)/Links(_L)" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/¥¦¥§¥Ö(_W)/W3M(_W)" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/¥¦¥§¥Ö(_W)/Konqueror(_K)" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/¥Ø¥ë¥×(_H)" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/¥Ø¥ë¥×(_H)/J-Pilot¤Ë¤Ä¤¤¤Æ(_A)" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/¥×¥é¥°¥¤¥ó(_P)/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/¥Ø¥ë¥×(_H)/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "¥«¥ì¥ó¥À¡¼:½µ¤Î»Ï¤Þ¤ê:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "¥×¥é¥°¥¤¥ó¤òÆÉ¤ß¹þ¤ó¤Ç¤¤¤Þ¤»¤ó¡£\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Á´¤Æ¤Î¥¢¥é¡¼¥à¤ò̵»ë¤·¤Þ¤¹¡£\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "²áµî¤Î¥¢¥é¡¼¥à¤ò̵»ë¤·¤Þ¤¹¡£\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "pipe¤ò³«¤±¤Þ¤»¤ó\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤òɽ¼¨ Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤ò±£Êà Ctrl-Z" # jpilot.c: old version #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤Î¥Þ¥¹¥¯ Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "¥Ç¥¹¥¯¥È¥Ã¥×¤ËPalm¤òƱ´ü¤µ¤»¤ë Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "¥¢¥É¥ì¥¹Ä¢¤ÎƱ´ü" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "¥Ç¥¹¥¯¥È¥Ã¥×¤Ë Palm ¥Ç¥Ð¥¤¥¹¤òƱ´ü\n" "¤µ¤»¤¿¸å¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "ͽÄêɽ/º£Æü¤òɽ¼¨" #: ../jpilot.c:2144 msgid "Address Book" msgstr "¥¢¥É¥ì¥¹Ä¢" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Todo¥ê¥¹¥È" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "¥á¥âÄ¢" #: ../jpilot.c:2174 msgid "Do it now" msgstr "º£¤¹¤°¼Â¹Ô" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "¸å¤Ç»×¤¤½Ð¤µ¤»¤ë" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "ºÆÉ½¼¨¤·¤Ê¤¤¡£" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot ¤Ï GTK2 ¥Ä¡¼¥ë¥­¥Ã¥È¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤Ç¤Ïʸ»ú¤Î¥¨¥ó" "¥³¡¼¥É¤Ë UTF-8 ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£\n" "ÆüËܸì¤òɽ¼¨¤¹¤ë°Ù¤Ë¤ÏºÇ½é¤Ë UTF-8¤Îʸ»ú¥»¥Ã¥È¤òÁªÂò¤·¤Æ²¼¤µ¤¤¡£\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "ʸ»ú¥»¥Ã¥È " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "UTF-8 ¥¨¥ó¥³¡¼¥É¤òÁªÂò¤·¤Æ²¼¤µ¤¤¡£" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +D +A +T +M¤Ï date +format ¤ÈƱÍÍ¡£\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h ¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f ¥Õ¥©¡¼¥Þ¥Ã¥È¥³¡¼¥É¤Î¥Ø¥ë¥×¤òɽ¼¨¡£\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -D ͽÄêɽ¤ò¥À¥ó¥×¤¹¤ë\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N ͽÄêɽÆâ¤Îº£Æü¤ÎͽÄê¤ò¥À¥ó¥×¤¹¤ë\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD ͽÄêɽÆâ¤Î YYYY/MM/DD ¤ÎͽÄê¤ò¥À¥ó¥×¤¹¤ë\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A ¥¢¥É¥ì¥¹Ä¢¤ò¥À¥ó¥×¤¹¤ë\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T Todo¤òCSV¤È¤·¤Æ¥À¥ó¥×¤¹¤ë¡£\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M ¥á¥âÄ¢¤ò¥À¥ó¥×¤¹¤ë\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "¥Õ¥¡¥¤¥ë %s¤ò³«¤±¤Þ¤»¤ó\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " J-Pilot ¤ÎÀßÄê¤Ï¡¢¥Ý¡¼¥È¤äžÁ÷®ÅÙ¡¢¥Ð¥Ã¥¯¥¢¥Ã¥×¤Î¸Ä¿ô¤Ê¤É¤ò¼èÆÀ¤¹¤ë°Ù¤ËÆÉ¤ß" "¹þ¤Þ¤ì¤Þ¤¹¡£\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤È¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó¤òɽ¼¨¤·¤Æ½ªÎ»¡£\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d ɸ½à½ÐÎϤ˥ǥХå°¾ðÊó¤ò½ÐÎÏ¡£\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "-p ¥×¥é¥°¥¤¥óÆÉ¹þ¤ß¤ò¥¹¥­¥Ã¥×¡£\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = ·«¤êÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð°ìÅÙÆ±´ü¤·¤Æ½ªÎ»\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {port} = ÀßÄꤵ¤ì¤¿¥Ý¡¼¥È¤ÎÂå¤ï¤ê¤Ë¡¢¤³¤Î¥Ý¡¼¥È¤ÇƱ´ü¤¹¤ë\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "%s ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È¤­¤Î¥¨¥é¡¼\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "¥Õ¥¡¥¤¥ë¥ª¡¼¥×¥ó¥¨¥é¡¼: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "¥¨¥é¡¼" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "´Ä¶­ÊÑ¿ô HOME ¤¬Ä¹²á¤®¤Þ¤¹¡£\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "¤³¤Î¥ì¥³¡¼¥É¤Ïºï½üºÑ¤ß¤Ç¤¹¡£\n" "¼¡²ó¤ÎƱ´ü»þ¤Ë Palm ¥Ç¥Ð¥¤¥¹¤«¤éºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¹¡£\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "PC ¤Î¥ì¥³¡¼¥É¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "ºï½ü¤¹¤ë¥ì¥³¡¼¥É¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "ÉÔÌÀ¤Ê¥Ø¥Ã¥À¥Ð¡¼¥¸¥ç¥ó %d ¤Ç¤¹¡£\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d %s¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d %s¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "%s ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤È¤­¤Î¥¨¥é¡¼\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "%s 5 ¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "PC ¥Õ¥¡¥¤¥ë 1 ¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "PC ¥Õ¥¡¥¤¥ë 2 ¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "ÉÔÌÀ¤Ê PC ¥Ø¥Ã¥À¥Ð¡¼¥¸¥ç¥ó = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¤Î¤Ç½ªÎ»¤·¤Þ¤¹¡£\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "¥á¥âÄ¢¤Î¥Æ¥­¥¹¥È¤¬ 65535 ¤ò±Û¤¨¤Þ¤·¤¿¡£¸å¤í¤òÀÚ¤ê¼Î¤Æ¤Þ¤¹¡£\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "¥á¥âÄ¢ %s ¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤·¤¿¡£\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "¥Õ¥¡¥¤¥ë¤Ïmemopad.dat ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï̵¤¤¤è¤¦¤Ç¤¹\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "¥á¥âÄ¢ %d ¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "¥á¥âÄ¢" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" # msgid "WeekView" # msgstr "°ì½µ´Ö¤ÎͽÄê" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "·îɽ¼¨" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "ºÇ½ª¹¹¿·Æü: " #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm¤Î¥Ñ¥¹¥ï¡¼¥É" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£PalmOS ¤Î¥Ñ¥¹¥ï¡¼¥É¤òºÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "PalmOS ¤Î¥Ñ¥¹¥ï¡¼¥ÉÆþÎÏ" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "¥Õ¥¡¥¤¥ë %s¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "̵¸Â¥ë¡¼¥×" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "%s%s ¤ÎÆÉ¤ß¹þ¤ßÃæ line 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "¥Ð¡¼¥¸¥ç¥ó¤¬°ã¤¤¤Þ¤¹¡£\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "ÀßÄê -> ¥³¥ó¥¸¥Ã¥È¤ò³Îǧ¤·¤Æ²¼¤µ¤¤¡£\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "¥×¥é¥°¥¤¥ó [%s] ¤Î¥ª¡¼¥×¥ó¤Ë¼ºÇÔ¡£\n" "¥¨¥é¡¼ [%s] ¡£\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "̵¸ú¤Ê¥×¥é¥°¥¤¥ó: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "¥×¥é¥°¥¤¥ó:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "¤³¤Î¥×¥é¥°¥¤¥ó¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï (%d.%d) ¤Ç¤¹¡£\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î J-Pilot ¤Èưºî¤µ¤»¤ë¤Ë¤Ï¸Å²á¤®¤Þ¤¹¡£\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%Yǯ%m·î%dÆü" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%Yǯ%b%eÆü" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%yǯ%m·î%dÆü" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%yǯ%b%eÆü" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%EY%m·î%dÆü" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%EY%b%eÆü" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "ÀßÄê" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Ãϰè" #: ../prefs_gui.c:485 msgid "Settings" msgstr "ÀßÄê" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "ͽÄêɽ" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Todo¥ê¥¹¥È" #: ../prefs_gui.c:493 msgid "Memo" msgstr "¥á¥âÄ¢" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "¥¢¥é¡¼¥à" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "¥³¥ó¥¸¥Ã¥È" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "û¤¤ÆüÉÕ·Á¼° " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Ť¤ÆüÉÕ·Á¼° " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "»þ¹ï·Á¼° " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "GTK ¥«¥é¡¼¥Õ¥¡¥¤¥ë¤ÎÀßÄê " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Ʊ´ü¤ÎÌäÂê" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Êݸ¤¹¤ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤Î¸Ä¿ô " #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "ºï½ü¤µ¤ì¤¿¥ì¥³¡¼¥É¤òɽ¼¨(¥Ç¥Õ¥©¥ë¥È NO)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "½¤Àµ¤·¤¿¥ì¥³¡¼¥É¤òɽ¼¨(¥Ç¥Õ¥©¥ë¥È NO)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¹¡¼¥ë»þ¤Ë³Îǧ (J-Pilot -> PDA) (¥Ç¥Õ¥©¥ë¥È YES)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "¥Ý¥Ã¥×¥¢¥Ã¥×¡¦¥Ä¡¼¥ë¥Á¥Ã¥×¤òɽ¼¨ (¥Ç¥Õ¥©¥ë¥È YES)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "ͽÄê¤Î¤¢¤ëÆü¤ò¥Ï¥¤¥é¥¤¥Èɽ¼¨¤¹¤ë" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Æü¡¢½µ¡¢·îɽ¼¨¤Ë(º£Æü)¤òɽ¼¨¤¹¤ë" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Æü¡¢½µ¡¢·îɽ¼¨¤Ç¡¢µ­Ç°Æü¤Ëǯ¤òɽ¼¨¤¹¤ë" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "DateBk ¤Î¥Î¡¼¥È¥¿¥°¤ò»È¤¦" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "DataBk¥µ¥Ý¡¼¥È¤Ï¤³¤Î¥Ó¥ë¥É¤Ç¤Ï̵¸ú¤Ç¤¹" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "¥á¡¼¥ë¥³¥Þ¥ó¥É" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s ¤Ïe-mail¥¢¥É¥ì¥¹¤ÇÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "´°Î»¤·¤¿ToDo¤òɽ¼¨¤·¤Ê¤¤" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "´ü¸Â¤ÎÍè¤Æ¤¤¤Ê¤¤ToDo¤ò±£¤¹ " #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "´°Î»Æü¤òµ­Ï¿¤¹¤ë" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Manana ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "´ü¸Â¤ÎÆü¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Memo32(pedit32)¤ò»È¤¦" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "ͽÄê¤ò»×¤¤½Ð¤µ¤»¤ë¤¿¤á¤Ë¥¢¥é¡¼¥à¥¦¥¤¥ó¥É¥¦¤òɽ¼¨¤¹¤ë" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "·Ù¹ð: ¥·¥§¥ë¥³¥Þ¥ó¥É¤Î¼Â¹Ô¤Ë¤ÏÃí°Õ¤¹¤ë¤³¤È¡£" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "¥¢¥é¡¼¥à¥³¥Þ¥ó¥É" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t ¤ò¥¢¥é¡¼¥à»þ¹ï¤ÇÃÖ¤­´¹¤¨¤Þ¤¹" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d ¤ò¥¢¥é¡¼¥àÆü¤ÇÃÖ¤­´¹¤¨¤Þ¤¹" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D ¤ò¥¢¥é¡¼¥à¤Îµ­½Ò¤ÇÃÖ¤­´¹¤¨¤Þ¤¹" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N ¤ò¥¢¥é¡¼¥à¥Î¡¼¥È¤ÇÃÖ¤­´¹¤¨¤Þ¤¹" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D ¡Êµ­½ÒÃÖ¤­´¹¤¨¡Ë¤Ï¤³¤Î¥Ó¥ë¥É¤Ç¤Ï̵¸ú¤Ç¤¹" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (¥Î¡¼¥ÈÃÖ¤­´¹¤¨)¤Ï¤³¤Î¥Ó¥ë¥É¤Ç¤Ï̵¸ú¤Ç¤¹" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "ͽÄêɽ¤ÎƱ´ü" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "¥¢¥É¥ì¥¹Ä¢¤ÎƱ´ü" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Todo¤ÎƱ´ü" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "¥á¥âÄ¢¤ÎƱ´ü" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Manana ¤ÎƱ´ü" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "J-OS (ÆüËܸì OS ¤Î Palm / WorkPad / CLIE °Ê³°) ¤ò»È¤¦" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "%s (%s) ¤òƱ´ü" #: ../print_gui.c:183 msgid "Print Options" msgstr "°õºþ¥ª¥×¥·¥ç¥ó" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Íѻ極¥¤¥º" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Æü¼¡°õºþ" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "½µ´Ö°õºþ" # msgid "WeekView" # msgstr "°ì½µ´Ö¤ÎͽÄê" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "·î´Ö°õºþ" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "%s¤Î¥ì¥³¡¼¥É¤òºï½ü¤·¤Þ¤·¤¿¡£" #: ../print_gui.c:268 msgid "All records in this category" msgstr "¤³¤Î¥«¥Æ¥´¥ê¤ÎÁ´¤Æ¤Î¥ì¥³¡¼¥É" #: ../print_gui.c:272 msgid "Print all records" msgstr "Á´¤Æ¤Î¥ì¥³¡¼¥É¤ò°õºþ¤¹¤ë" #: ../print_gui.c:294 msgid "One record per page" msgstr "1 ¥Ú¡¼¥¸¤Ë 1 ¥ì¥³¡¼¥É" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr "¥ì¥³¡¼¥É´Ö¤Î¶õÇò¹Ô" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "°õºþ¥³¥Þ¥ó¥É(Îã:lpr, cat >file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "¥Ï¥ó¥É¥Ø¥ë¥É¤Ø¥ê¥¹¥È¥¢" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Õ¥¡¥¤¥ë" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "¥Ï¥ó¥É¥Ø¥ë¥É¤Ø¥ê¥¹¥È¥¢¤¹¤ë¤Ë¤Ï" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. ¥ê¥¹¥È¥¢¤·¤¿¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÁ´¤Æ¤ÎÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£´ûÄêÃͤÏÁ´¤Æ¤Ç¤¹¡£" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. ¥æ¡¼¥¶Ì¾¤È¥æ¡¼¥¶ID¤ò¤¤¤ì¤Æ¤¯¤À¤µ¤¤¡£" #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. OK¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "¤³¤ÎÁàºî¤Ï¡¢¸½ºß Palm ¥Ç¥Ð¥¤¥¹¾å¤Ë¤¢¤ë¥Ç¡¼¥¿¤ò¾å½ñ¤­¤·¤Þ¤¹¡£" #: ../search_gui.c:142 msgid "datebook" msgstr "ͽÄêɽ" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "¥¢¥É¥ì¥¹Ä¢" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "Todo" #: ../search_gui.c:359 msgid "memo" msgstr "¥á¥âÄ¢" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "¥á¥âÄ¢" #: ../search_gui.c:419 msgid "plugin ?" msgstr "¥×¥é¥°¥¤¥ó ?" #: ../search_gui.c:499 msgid "No records found" msgstr "¥ì¥³¡¼¥É¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó" #: ../search_gui.c:598 msgid "Search" msgstr "¸¡º÷" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "¸¡º÷ʸ»úÎó: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Âçʸ»ú/¾®Ê¸»ú¤ò¶èÊÌ" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "¥í¥Ã¥¯¤Î¼ºÇÔ\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "sync ¥Õ¥¡¥¤¥ë¤Ï pid %d ¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "¥¢¥ó¥í¥Ã¥¯¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "Ʊ´ü¤Ï pid %d ¤Ë¤è¤ê¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "¥·¥ê¥¢¥ë¥Ý¡¼¥È¤ÎÀßÄê¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤ò³«¤±¤Þ¤»¤ó\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (¥¯¥ê¥¨¡¼¥¿ID '%s')¤ÏºÇ¿·¤Ê¤Î¤Ç¥¹¥­¥Ã¥×¤·¤Þ¤¹¡£\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "'%s'(¥¯¥ê¥¨¡¼¥¿ID '%s') ¤ò¼èÆÀÃæ..." #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "¼ºÇÔ¤·¤Þ¤·¤¿¡£¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "¼ºÇÔ¤·¤Þ¤·¤¿¡£¥Ç¡¼¥¿¥Ù¡¼¥¹ %s ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤¬¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "%s (¥¯¥ê¥¨¡¼¥¿ID '%s')¤Î¥¹¥­¥Ã¥×\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "%s ¤Î¥¤¥ó¥¹¥È¡¼¥ë" #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "'¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "¥Õ¥¡¥¤¥ë¤ÎƱ´ü¤¬¤Ç¤­¤Þ¤»¤ó¡£: '%s': ¥Õ¥¡¥¤¥ë¤ÎÇË»?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(¥¯¥ê¥¨¡¼¥¿ID¤Ï'%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(¥¯¥ê¥¨¡¼¥¿ID¤Ï'%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "%s¤ò³«¤±¤Þ¤»¤ó\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "%s ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¼ºÇÔ¤·¤Þ¤·¤¿" #: ../sync.c:1619 msgid "Failed.\n" msgstr "¼ºÇÔ\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤·¤¿ " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¾ðÊó %s ¼èÆÀ¥¨¥é¡¼\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¾ðÊó %s ¼è¤ê½Ð¤·¥¨¥é¡¼\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "%s ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¾ðÊó¥Ö¥í¥Ã¥¯ÆÉ¤ß¹þ¤ß¥¨¥é¡¼\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "¥ê¥â¡¼¥È¤Î¥«¥Æ¥´¥ê %s ¤òÄɲäǤ­¤Þ¤»¤ó¤Ç¤·¤¿¡£\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "¥ê¥â¡¼¥È¤Ë¤Ï¥«¥Æ¥´¥ê¤¬Â¿¤¹¤®¤Þ¤¹¡£\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "%s ¤Î¥Ç¥¹¥¯¥È¥Ã¥×¤ÎÁ´¤Æ¤Î¥ì¥³¡¼¥É¤Ï¡¢ %s ¤Ø°Üư¤·¤Þ¤¹¡£\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "%s ¤òƱ´ü¤·¤Æ¤¤¤Þ¤¹\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "%s¤Î¥ì¥³¡¼¥É¤ò½ñ¤­¹þ¤ß¤Þ¤·¤¿¡£" #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "%s¤Î¥ì¥³¡¼¥É¤Î½ñ¤­¹þ¤ß¤¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "%s¤Î¥ì¥³¡¼¥É¤Îºï½ü¤¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "%s¤Î¥ì¥³¡¼¥É¤òºï½ü¤·¤Þ¤·¤¿¡£" #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "%s¤Î¥ì¥³¡¼¥É¤òºï½ü¤·¤Þ¤·¤¿¡£" #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "%s¤Î¥ì¥³¡¼¥É¤ò½ñ¤­¹þ¤ß¤Þ¤·¤¿¡£" #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "%s¤Î¥ì¥³¡¼¥É¤Î½ñ¤­¹þ¤ß¤¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "%s¤Î¥ì¥³¡¼¥É¤Îºï½ü¤¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "%s¤Î¥ì¥³¡¼¥É¤òºï½ü¤·¤Þ¤·¤¿¡£" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord¤¬¼ºÇÔ¤·¤Þ¤·¤¿¡£\n" "Palm¾å¤Ç´û¤Ë¥ì¥³¡¼¥É¤¬ºï½ü¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¸¶°ø¤È¤·¤Æ¹Í¤¨¤é¤ì¤Þ¤¹¡£\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "¥æ¡¼¥¶¡¼¾ðÊó¤Î¥¤¥ó¥¹¥È¡¼¥ë¤¬´°Î»¤·¤Þ¤·¤¿¡£\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr "¥Ç¥Ð¥¤¥¹%s¤ÇƱ´ü¤·¤Þ¤¹¡£\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr "HotSync ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "ºÇ¸å¤ËƱ´ü¤·¤¿¥æ¡¼¥¶Ì¾-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ºÇ¸å¤ËƱ´ü¤·¤¿¥æ¡¼¥¶ID-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "¤³¤Î¥æ¡¼¥¶Ì¾-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "¤³¤Î¥æ¡¼¥¶ID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "¥æ¡¼¥¶Ì¾¤Ï\"%s\"¤Ç¤¹\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "¥æ¡¼¥¶ID¤¬%d¤Ç¤¹.\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "ºÇ¸å¤ËƱ´ü¤·¤¿PC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "¤³¤ÎPC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Ʊ´ü¤¬¥­¥ã¥ó¥»¥ë¤µ¤ì¤Þ¤·¤¿\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "¥Ï¥ó¥É¥Ø¥ë¥É¤Ø¤Î¥ê¥¹¥È¥¢´°Î»\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Ʊ´ü¤Ë¤Ï¡¢J-Pilot¤Î¥¢¥Ã¥×¥Ç¡¼¥È¤¬É¬ÍפǤ¹.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "¹â®Ʊ´üÃæ¡£\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Äã®Ʊ´üÃæ¡£\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "J-Pilot¤ò»È¤Ã¤Æ¤¯¤ì¤Æ¤¢¤ê¤¬¤È¤¦!" #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "´°Î»\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "¾õÂÖ %s ¤Ç½ªÎ»¤·¤Þ¤·¤¿\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "ToDoɽµ­¤¬ %d ¤è¤êĹ²á¤®¤Þ¤¹¡£ %d ¤ØÀÚ¤êµÍ¤á¤Þ¤¹¡£\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "ToDo¤Î¥Î¡¼¥È¤¬ %d ¤è¤êŤ¹¤®¤Þ¤¹¡£ %d ¤ØÀÚ¤êµÍ¤á¤Þ¤¹¡£\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Äù¤áÀÚ¤ê" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "¥Õ¥¡¥¤¥ë¤Ï¡¢ todo.dat ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï̵¤¤¤è¤¦¤Ç¤¹\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "todo %d ¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Äù¤áÀÚ¤ê" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Äù¤áÀÚ¤ê" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Í¥ÀèÅÙ¡§" #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "´°Î»" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Í¥Àè½ç°Ì¤¬Èϰϳ°¤Ç¤¹¡£\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Äù¤áÀÚ¤ê¤Ê¤·" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "´°Î»" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Í¥ÀèÅÙ¡§" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "ÄùÀÚÆü¡§" #: ../utils.c:330 msgid "Today" msgstr "º£Æü" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "¶õ¤Î %s DB¥Õ¥¡¥¤¥ë %s ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr "¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤»¤ó¡£\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤á¤Þ¤»¤ó¡£\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Êѹ¹¤µ¤ì¤¿¥ì¥³¡¼¥É¤òÊݸ¤·¤Þ¤¹¤«¡©" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "¤³¤Î¥ì¥³¡¼¥É¤ÎÊѹ¹¤òÊݸ¤·¤Þ¤¹¤«¡©" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "¿·µ¬¥ì¥³¡¼¥É¤òÊݸ¤·¤Þ¤¹¤«¡©" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "¿·¤·¤¤¥ì¥³¡¼¥É¤òÊݸ¤·¤Þ¤¹¤«¡©" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "̵¸Â¥ë¡¼¥×¤òÄä»ßÃæ\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "-p ¥×¥é¥°¥¤¥óÆÉ¹þ¤ß¤ò¥¹¥­¥Ã¥×¡£\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a Á°²óµ¯Æ°»þ¤«¤é¸å¤Î¼ºÇÔ¤·¤¿¥¢¥é¡¼¥à¤ò̵»ë¤¹¤ë¡£\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A Á´¤Æ¤Î¥¢¥é¡¼¥à¤ò̵»ë¤¹¤ë(²áµî¤ª¤è¤Ó̤Íè¤Î)¡£\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " ´Ä¶­ÊÑ¿ô PILOTPORT µÚ¤Ó PILOTRATE ¤ÏƱ´ü¤¹¤ë\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " ¥Ý¡¼¥ÈµÚ¤Ó¥¹¥Ô¡¼¥É¤ò»ØÄꤹ¤ë¤Î¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" " PILOTPORT ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï /dev/pilot ¤¬¥Ç¥Õ¥©¥ë¥È¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß¥¨¥é¡¼" #: ../utils.c:1973 msgid "Date compiled" msgstr "¥³¥ó¥Ñ¥¤¥ëÆü" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "¼¡¤Î¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¡§" #: ../utils.c:1976 msgid "Installed Path" msgstr "¥¤¥ó¥¹¥È¡¼¥ë¥Ñ¥¹" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link ¥Ð¡¼¥¸¥ç¥ó" #: ../utils.c:1982 msgid "USB support" msgstr "USB ¥µ¥Ý¡¼¥È" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "¤Ï¤¤" #: ../utils.c:1984 msgid "Private record support" msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤Î¥µ¥Ý¡¼¥È" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "¤¤¤¤¤¨" #: ../utils.c:1990 msgid "Datebk support" msgstr "Databk ¤Î¥µ¥Ý¡¼¥È" #: ../utils.c:1996 msgid "Plugin support" msgstr "¥×¥é¥°¥¤¥ó¥µ¥Ý¡¼¥È" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana ¥µ¥Ý¡¼¥È" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS ¥µ¥Ý¡¼¥È¡Ê³°¹ñ¸ì¡Ë" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 ¥µ¥Ý¡¼¥È" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "´Ä¶­ÊÑ¿ô HOME ¤¬¼èÆÀ¤Ç¤­¤Þ¤»¤ó¡£\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "´Ä¶­ÊÑ¿ô HOME ¤¬Ä¹²á¤®¤Þ¤¹¡£\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "¥«¥Æ¥´¥êÊÔ½¸" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC¤ÎID¤¬0¤Ç¤¹¡£\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "¿·¤·¤¤ %lu ¤È¤¤¤¦ PC ID ¤òÀ¸À®¤·¤Þ¤·¤¿\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "º£Æü¤Ï %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "º£Æü¤Ï %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "PC ¥Ø¥Ã¥À¤ò¥Õ¥¡¥¤¥ë¤Ë½ñ¤­¹þ¤ßÃæ¤Ë¥¨¥é¡¼ : next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "next id ¤ò¥Õ¥¡¥¤¥ë¤Ë½ñ¤­¹þ¤ßÃæ¤Ë¥¨¥é¡¼ : next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "½µ´Öɽ¼¨" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "¥ª¡¼¥¹¥È¥é¥ê¥¢¥É¥ë" #: ../Expense/expense.c:96 msgid "Austria" msgstr "¥ª¡¼¥¹¥È¥ê¥¢" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "¥Ù¥ë¥®¡¼" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "¥Ö¥é¥¸¥ë" #: ../Expense/expense.c:99 msgid "Canada" msgstr "¥«¥Ê¥À¥É¥ë" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "¥Ç¥ó¥Þ¡¼¥¯" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "¥æ¡¼¥í" #: ../Expense/expense.c:102 msgid "Finland" msgstr "¥Õ¥£¥ó¥é¥ó¥É" #: ../Expense/expense.c:103 msgid "France" msgstr "¥Õ¥é¥ó" #: ../Expense/expense.c:104 msgid "Germany" msgstr "¥É¥¤¥Ä¥Þ¥ë¥¯" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "¹á¹Á¥É¥ë" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "¥¢¥¤¥¹¥é¥ó¥É" #: ../Expense/expense.c:107 msgid "India" msgstr "¥ë¥Ô¡¼" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "¥ë¥Ô¥¢" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "¥¢¥¤¥ë¥é¥ó¥É" #: ../Expense/expense.c:110 msgid "Italy" msgstr "¥¤¥¿¥ê¥¢¥ê¥é" #: ../Expense/expense.c:111 msgid "Japan" msgstr "ÆüËܱß" #: ../Expense/expense.c:112 msgid "Korea" msgstr "¥¦¥©¥ó" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "¥ë¥¯¥»¥ó¥Ö¥ë¥°" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "¥ê¥ó¥®¥Ã¥È" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "¥á¥­¥·¥³" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "¥®¥ë¥À¡¼" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "¥Ë¥å¡¼¥¸¡¼¥é¥ó¥É¥É¥ë" #: ../Expense/expense.c:118 msgid "Norway" msgstr "¥Î¥ë¥¦¥¨¥¤" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "¿Í̱¸µ" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "¥Õ¥£¥ê¥Ô¥ó¡¦¥Ú¥½" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "¥·¥ó¥¬¥Ý¡Ý¥ëŽ¥¥É¥ë" #: ../Expense/expense.c:122 msgid "Spain" msgstr "¥¹¥Ú¥¤¥ó" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "¥¹¥¨¡¼¥Ç¥ó" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "¥¹¥¤¥¹¥Õ¥é¥ó" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "¥Ë¥å¡¼ÂæÏѥɥë" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "¥Ð¡¼¥Ä" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "¥Ý¥ó¥É" #: ../Expense/expense.c:128 msgid "United States" msgstr "ÊÆ¥É¥ë" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "»Ùʧ¤¤Ä¢" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "¹Ò¶õ±¿ÄÂ" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Ä«¿©" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "¥Ð¥¹" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "¥Ó¥¸¥Í¥¹¥é¥ó¥Á" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "¼«Æ°¼Ö¥ì¥ó¥¿¥ë" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "ͼ¿©" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "¥¨¥ó¥¿¡¼¥Æ¥¤¥á¥ó¥È" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "¥Õ¥¡¥Ã¥¯¥¹" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "¥¬¥¹" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "£¤êʪ" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "¥Û¥Æ¥ë" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "¼ýÆþ" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "ÀöÂõ" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "¥ê¥à¥¸¥ó" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "ÆÉ¤ß¹þ¤ßÃæ" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Ãë¿©" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "¥Þ¥¤¥ì¡¼¥¸" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Ãó¼Ö" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Í¹ÊØ" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "²Û»Ò" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Ãϲ¼Å´" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "¾ÃÌ×ÉÊ" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "¥¿¥¯¥·¡¼" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "ÅÅÏÃ" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "¥Á¥Ã¥×" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Ä̹ÔÎÁ" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "ÅżÖ" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Expense: ÉÔÌÀ¤Ê»Ù½Ð¥¿¥¤¥×¤Ç¤¹¡£\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Expense: ÉÔÌÀ¤Ê»Ùʧ¤¤¥¿¥¤¥×¤Ç¤¹¡£\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "¥¢¥á¥ê¥«¥ó¥¨¥¯¥¹¥×¥ì¥¹" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "¸½¶â" #: ../Expense/expense.c:1377 msgid "Check" msgstr "¾®ÀÚ¼ê" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "¥¯¥ì¥¸¥Ã¥È¥«¡¼¥É" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "¥Þ¥¹¥¿¡¼¥«¡¼¥É" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "¥×¥ê¥Ú¥¤¥É¥«¡¼¥É" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "¥¿¥¤¥×¡§" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "¹ç·×¡§" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "¥«¥Æ¥´¥ê¡§" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "¥¿¥¤¥×¡§" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "»Ùʧ¤¤¡§" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Ä̲ߡ§" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "·î¡§" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Æü¡§" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "ǯ¡§" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "¹ç·×¡§" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "¥Ù¥ó¥À¡¼¡§" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "ÅÔ»Ô¡§" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "¿ï¹Ô¼Ô" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size ¤¬¾®¤µ²á¤®¤Þ¤¹¡£\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "¥Ñ¥¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹¡£¤â¤¦°ìÅÙÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "¿·¤·¤¤KeyRing¥Ñ¥¹¥ï¡¼¥É¤òÆþÎÏ" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "KeyRing¥Ñ¥¹¥ï¡¼¥ÉÆþÎÏ" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: ¥Õ¥¡¥¤¥ë %s ¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó¡£\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: Ʊ´ü¤ò»î¹ÔÃæ.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "¥á¥âÄ¢ %d ¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤­¤Þ¤»¤ó¡£\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "KeyRing\n" "¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "¥­¥ã¥ó¥»¥ë" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "¥¢¥«¥¦¥ó¥È" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "̾Á°¡§" #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "¥¢¥«¥¦¥ó¥È¡§" #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "¥Ñ¥¹¥ï¡¼¥É¡§" #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "ºÇ½ª¹¹¿·Æü: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "¥Ñ¥¹¥ï¡¼¥ÉÀ¸À®" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "¥á¥âÄ¢¤ÎƱ´ü" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "´°Î»" #, fuzzy #~ msgid "Overwrite" #~ msgstr "¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¤«¡©" #~ msgid "Field" #~ msgstr "¥Õ¥£¡¼¥ë¥É" #~ msgid "kana(" #~ msgstr "ÆÉ¤ß(" #~ msgid "Quick View" #~ msgstr "ÆâÍÆ" #~ msgid "Unable to open %s%s file\n" #~ msgstr "¥Õ¥¡¥¤¥ë %s%s ¤ò³«¤±¤Þ¤»¤ó\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "%s ¤Î¥¢¥é¡¼¥à¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "¥«¥Æ¥´¥ê %s ¤ÎÊÔ½¸¤Ï¤Ç¤­¤Þ¤»¤ó¡£\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "¥«¥Æ¥´¥ê %s ¤òºï½ü¤Ç¤­¤Þ¤»¤ó¡£\n" #~ msgid "category name" #~ msgstr "¥«¥Æ¥´¥ê̾" #~ msgid "debug" #~ msgstr "¥Ç¥Ð¥Ã¥¯" #~ msgid "Close" #~ msgstr "ÊĤ¸¤ë" #~ msgid "none" #~ msgstr "¤Ê¤·" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "DatebookDB Æâ¤ËÉÔÌÀ¤Ê·«¤êÊÖ¤·¥¿¥¤¥×¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¡£\n" #~ msgid "W" #~ msgstr "¿å" #~ msgid "M" #~ msgstr "·î" #~ msgid "This Event has no particular time" #~ msgstr "»þ¹ï»ØÄê¤Ê¤·" #~ msgid "Start Time" #~ msgstr "³«»Ï»þ¹ï" #~ msgid "End Time" #~ msgstr "½ªÎ»»þ¹ï" #~ msgid "Dismiss" #~ msgstr "λ²ò" #~ msgid "Done" #~ msgstr "´°Î»" #~ msgid "Add" #~ msgstr "ÄɲÃ" #, fuzzy #~ msgid "User name" #~ msgstr "¥æ¡¼¥¶¡¼Ì¾" #~ msgid " -v = version\n" #~ msgstr "-v = ¥Ð¡¼¥¸¥ç¥ó¾ðÊó\n" #~ msgid " -h = help\n" #~ msgstr " -h = ¥Ø¥ë¥×\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = ¥Ç¥Ð¥Ã¥°¥â¡¼¥É¤Ç¼Â¹Ô¤¹¤ë\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = ¥×¥é¥°¥¤¥ó¤òÆÉ¤ß¹þ¤Þ¤Ê¤¤\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = Ʊ´ü¸å¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ðñ¤ËƱ´ü¤À¤±¤¹¤ë¡£\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "̵¸ú¤Ê °ÌÃÖ/¥µ¥¤¥º¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡§ \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/¥Ø¥ë¥×(_H)/¥Ú¥¤¥Ð¥Ã¥¯ ¥×¥í¥°¥é¥à" #~ msgid "Font Selection Dialog" #~ msgstr "¥Õ¥©¥ó¥ÈÁªÂò¥À¥¤¥¢¥í¥°" #~ msgid "Clear" #~ msgstr "¾Ãµî" #~ msgid "Show private records" #~ msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤òɽ¼¨" #~ msgid "Hide private records" #~ msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤ò±£ÊÃ" # jpilot.c: old version #~ msgid "Mask private records" #~ msgstr "¥×¥é¥¤¥Ù¡¼¥È¥ì¥³¡¼¥É¤Î¥Þ¥¹¥¯" #~ msgid "Font" #~ msgstr "¥Õ¥©¥ó¥È" #~ msgid "Go to the menu \"" #~ msgstr "¥á¥Ë¥å¡¼¤Î \"" #~ msgid "\" and change the \"" #~ msgstr "\" ¤Ë°Üư¤·¡¢ \"" #~ msgid "\"." #~ msgstr "\" ¤òÊѹ¹¤·¤Æ²¼¤µ¤¤¡£." #~ msgid "Couldn't open PC records file\n" #~ msgstr "PC¤Î¥ì¥³¡¼¥É¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó\n" #~ msgid "The first day of the week is " #~ msgstr "½µ¤Î»Ï¤Þ¤ê " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "¥Ý¡¼¥È(/dev/ttyS0, /dev/pilot) " #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "¥·¥ê¥¢¥ëÀܳ¤ÎžÁ÷®ÅÙ(USB¤Ë¤Ï̵´Ø·¸) " #~ msgid "Sync memo32 (pedit32)" #~ msgstr "¥á¥âÄ¢ (memo32/pedit32) ¤ÎƱ´ü" #~ msgid "One record" #~ msgstr "1 ¥ì¥³¡¼¥É" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: HotSync¥Ü¥¿¥ó¤ò²¡¤¹¤« \"kill %d\" ¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£\n" #~ msgid "Finished\n" #~ msgstr "´°Î»\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "ºÇ¸å¤Î¥æ¡¼¥¶Ì¾¤Ï[%s]¤Ç¤¹\n" #~ msgid "Last UserID = %d\n" #~ msgstr "ºÇ¸å¤Î¥æ¡¼¥¶ID¤¬%d¤Ç¤¹.\n" #~ msgid "Username = [%s]\n" #~ msgstr "¥æ¡¼¥¶Ì¾¤Ï[%s]¤Ç¤¹\n" #~ msgid "userID = %d\n" #~ msgstr "¥æ¡¼¥¶ID¤¬%d¤Ç¤¹.\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: ¥ì¥³¡¼¥É¿ô = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: ¥ì¥³¡¼¥É¿ô = %d\n" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i µ¯Æ°»þ¤Ëjpilot¤òºÇ¾®²½¤¹¤ë¡£\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï̵¤¤¤è¤¦¤Ç¤¹¡£\n" #~ "¤³¤ì¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£\n" #~ msgid "AmEx" #~ msgstr "AMEX" #~ msgid "CreditCard" #~ msgstr "¥¯¥ì¥¸¥Ã¥È" #~ msgid "MasterCard" #~ msgstr "¥Þ¥¹¥¿¡¼¥«¡¼¥É" #~ msgid "Expense: Unknown category\n" #~ msgstr "Expense: ÉÔÌÀ¤Ê¥«¥Æ¥´¥ê¤Ç¤¹¡£\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "´Ä¶­ÊÑ¿ô HOME ¤¬Ä¹²á¤®(>1024)¤Þ¤¹¡£\n" jpilot-1.8.2/po/uk.po0000664000175000017500000031036212340261240011342 00000000000000# Ukrainian translation to jpilot # Copyright (C) YEAR Judd Montgomery # Copyright (C) 2004 Free Software Foundation, Inc. # This file is distributed under the same license as the jpilot package. # Maxim V. Dziumanenko , 2004-2005. # msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.8-pre12\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2005-11-25 17:56+0300\n" "Last-Translator: Maxim V. Dziumanenko \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "СкінчилаÑÑŒ пам'Ñть" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Помилка при читанні інформації категорії %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Помилка при читанні файлу: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "помилка" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Ð—Ð°Ð¿Ð¸Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹.\n" "Щоб внеÑти зміни поверніть його з видаленого Ñтану або Ñкопіюйте.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Формат файлу не Ñхожий на address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Ðе предÑтавлене" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "Гаразд" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "ÐÑ–" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Так" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s Ñ” каталогом" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Помилка при відкриванні файлу" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Бажаєте перезапиÑати файл %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "ПерезапиÑати файл?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Помилка при відкриванні файлу: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Ðе вдаєтьÑÑ ÐµÐºÑпортувати адреÑу %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "КатегоріÑ: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Приватний" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "Ел.адреÑа" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Ðевідомий тип екÑпорту\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Ім'Ñ/КомпаніÑ" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Ім'Ñ/КомпаніÑ" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "КомпаніÑ/Ім'Ñ" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Ðе можна змінювати видалений запиÑ\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Ðекоректна категоріÑ\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "виконуєтьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "помилка блокуваннÑ\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "КатегоріÑ: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Пошта" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Дзвонити" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Без назви-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 запиÑів" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d з %d запиÑів" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Ім'Ñ" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "ÐдреÑа" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Інше" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Примітка" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Телефон" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Швидко знайти: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "СкаÑувати" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "СкаÑувати зміни" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Видалити" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Повернути з видаленого Ñтану виділений запиÑ" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Повернути з видаленого Ñтану" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Повернути з видаленого Ñтану виділений запиÑ" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Копіювати" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Копіювати видалений запиÑ" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Ðовий запиÑ" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Додати новий запиÑ" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Додати запиÑ" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Додати новий запиÑ" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "ЗаÑтоÑувати зміни" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Закріпити зміни" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Приватний" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "СкаÑувати" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Видалити" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Показувати\n" "у ÑпиÑку" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Ðагадати" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "днів" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "УÑÑ–" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "хвилин" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "годин" #: ../alarms.c:253 msgid "Remind me" msgstr "Ðагадати" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "ÐÐ°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ зуÑтріч" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Минула зуÑтріч" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "ВідÑтрочена зуÑтріч" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "ЗуÑтріч" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC файл пошкоджений?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "помилка при fseek() - фатальна помилка\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "помилка перейменуваннÑ" #: ../category.c:407 msgid "Move" msgstr "ПереміÑтити" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Правка категорій" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Вже викориÑтано макÑимальну кількіÑть категорій (16)" #: ../category.c:440 msgid "Enter New Category" msgstr "Введіть нову категорію" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Правка категорій" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Ðеобхідно вибрати категорію Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Введіть нову назву категорії" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Ðеобхідно вибрати категорію Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%d запиÑів у %s.\n" "Ви хочете переміÑтити Ñ—Ñ… у %s, чи видалити Ñ—Ñ…?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "неправильний Ñтан файлу %s Ñ€Ñдок %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ %s не може викориÑтовуватиÑÑŒ більше ніж один раз" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "КатегоріÑ:" #: ../category.c:834 msgid "New" msgstr "Створити" #: ../category.c:841 msgid "Rename" msgstr "Перейменувати" #: ../dat.c:512 msgid "unknown type =" msgstr "невідомий тип =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "кількіÑть полів на Ñ€Ñдок != %d, невідомий формат\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "кількіÑть полів != %d, невідомий формат\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Ðевідомий формат, файл має неправильну Ñхему\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Схема файлу:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Має бути:" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%s:%d Ð—Ð°Ð¿Ð¸Ñ %d, поле %d: Ðеправильний тип. ОчікувалоÑÑŒ %d, знайдено %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ перервано\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "У DatebookDB знайдено невідомий repeatType (%d)\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "ПовторюєтьÑÑ Ñƒ:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "ПовторюєтьÑÑ Ñƒ дні:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "ПовторюєтьÑÑ Ñƒ:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "ПовторюєтьÑÑ Ñƒ дні:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "ПовторюєтьÑÑ Ñƒ дні:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "ПовторюєтьÑÑ Ñƒ дні:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Ðд" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Пн" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ð’Ñ‚" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Ср" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Чт" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Пн" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Сб" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Дата закінченнÑ" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "ПовторюєтьÑÑ Ñƒ дні:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "кількіÑть запиÑів = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Примітка" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "СповіщеннÑ" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "ПовторюєтьÑÑ Ñƒ:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "День тижнÑ" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "ТекÑÑ‚ опиÑу зуÑтрічі > %d, обрізано до %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Помилка" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Формат файлу не Ñхожий на datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Ðевідомий тип екÑпорту" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "ЕкÑпорт" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "ЕкÑпортувати уÑÑ– запиÑи календар" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Зберегти Ñк" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "ОглÑд" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Категорії календарÑ" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ðемає" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Дата початку" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Дата закінченнÑ" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "ÐеділÑ" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Понеділок" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Вівторок" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Середа" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Четвер" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "П'ÑтницÑ" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Субота" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4-й" #: ../datebook_gui.c:1760 msgid "Last" msgstr "ОÑтанній" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Ð¦Ñ Ð·ÑƒÑтріч може повторюватиÑÑŒ\n" "або кожної 4-Ñ— %s\n" "міÑÑцÑ, або у оÑтанній\n" "%s міÑÑцÑ.\n" "Що ви обираєте?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "ЗапитаннÑ?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Це періодична подіÑ.\n" "Бажаєте заÑтоÑувати ці зміни\n" "лише до ПОТОЧÐОЇ події,\n" "чи до уÑÑ–Ñ… таких подій?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Поточна" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "день" #: ../datebook_gui.c:2028 msgid "week" msgstr "тиждень" #: ../datebook_gui.c:2029 msgid "month" msgstr "міÑÑць" #: ../datebook_gui.c:2030 msgid "year" msgstr "рік" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "ЗуÑтріч, що повторюєтьÑÑ ÐºÐ¾Ð¶Ð½Ñ– %d %s(s) неможлива.\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "Щотижнева зуÑтріч, що не повторюєтьÑÑ Ñƒ жоден із днів Ñ‚Ð¸Ð¶Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Ð§Ð°Ñ Ð½Ðµ вказано" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Ðеправильна зуÑтріч" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Дата Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— зуÑтрічі більш раннÑ,\n" "ніж дата початку." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Дату не вказано" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Помилка у DateBookDB advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (СЬОГОДÐІ)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Тиждень" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "ПереглÑнути зуÑтрічі тижнÑ" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "МіÑÑць" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "ПереглÑнути зуÑтрічі міÑÑцÑ" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Категорії" #: ../datebook_gui.c:5021 msgid "Time" msgstr "ЧаÑ" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Показувати завданнÑ" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "ЗавданнÑ" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "До" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "СповіщеннÑ" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Дата:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "ПочинаєтьÑÑ" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "ЗакінчуєтьÑÑ" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "Теги DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "День" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Рік" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Ð¦Ñ Ð¿Ð¾Ð´Ñ–Ñ Ð½Ðµ повторюєтьÑÑ" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "ПовторюєтьÑÑ ÐºÐ¾Ð¶ÐµÐ½" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "день" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "ЗакінчуєтьÑÑ" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "тиждень" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "міÑÑць" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "ПовторюєтьÑÑ Ñƒ:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "День тижнÑ" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Дата" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "рік" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "ÐÐ°Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°" #: ../dialer.c:230 msgid "Prefix 1" msgstr "ÐŸÑ€ÐµÑ„Ñ–ÐºÑ 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "ÐŸÑ€ÐµÑ„Ñ–ÐºÑ 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "ÐŸÑ€ÐµÑ„Ñ–ÐºÑ 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "номер телефону:" #: ../dialer.c:319 msgid "Extension" msgstr "РозширеннÑ" #: ../dialer.c:341 msgid "Dial Command" msgstr "Команда набираннÑ" #: ../export_gui.c:121 msgid "File Browser" msgstr "ОглÑд файлів" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Виберіть запиÑи Ð´Ð»Ñ ÐµÐºÑпорту" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "КориÑтуйтеÑÑŒ клавішами Ctrl та Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Імпорт" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñк приватний" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ðµ позначений Ñк приватний" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Перед імпортом ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ð±ÑƒÐ»Ð°: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ² у категорії [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Імпортувати уÑе" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "ПропуÑтити" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "" "Щоб змінити прихований каталог, наберіть його назву нижче та натиÑніть Tab" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Тип файлу імпорту" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Файли, що будуть вÑтановлені" #: ../install_gui.c:372 msgid "Install" msgstr "Ð’Ñтановити" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Файл/Ð’Ñтановити кориÑтувача" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Ідентифікатор кориÑтувача" #: ../jpilot.c:317 msgid "Print" msgstr "Друк" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ каналу друк не підтримуєтьÑÑ." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ каналу імпорт не підтримуєтьÑÑ." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ каналу екÑпорт не підтримуєтьÑÑ." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "СкаÑувати Ñинхронізацію" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Ðазва або ідентифікатор кориÑтувача цього приÑтрою palm\n" "відрізнÑєтьÑÑ Ð²Ñ–Ð´ назви або ідентифікатора, що були під чаÑ\n" "оÑтанньої Ñинхронізації. Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¼Ð¾Ð¶Ðµ призвеÑти до небажаних\n" "ефектів. Якщо щоÑÑŒ незрозуміло, читайте довідку кориÑтувача." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Ідентифікатор кориÑтувача цього приÑтрою palm дорівнює NULL.\n" "Що ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ð»Ð°ÑÑŒ правильно, кожен palm повинен мати\n" "унікальний ідентифікатор. Якщо він був Ñкинутий, відновіть його у,\n" "меню Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ викориÑтовуючи pilot-xfer.\n" "Щоб додати ім'Ñ Ñ‚Ð° ідентифікатор кориÑтувача викориÑтовуйте\n" "програму install-user, або пункт меню Ð’Ñтановити кориÑтувача.\n" "Якщо щоÑÑŒ незрозуміло, читайте довідку кориÑтувача." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "СкаÑувати Ñинхронізацію" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Синхронізувати вÑе одно" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Помилка Ñинхронізації" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr "КориÑтувач: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Ðевідома команда від процеÑу Ñинхронізації\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Про %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Файл" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Файл/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Файл/З_найти" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Файл/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Файл/_Ð’Ñтановити" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Файл/Імпорт" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Файл/ЕкÑпорт" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Файл/ВподобаннÑ" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Файл/Д_рук" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Файл/Ð’Ñтановити кориÑтувача" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Файл/Відновити КПК" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Файл/Ви_йти" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_ВиглÑд" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/ВиглÑд/Сховати приватні запиÑи" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/ВиглÑд/Показати приватні запиÑи" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/ВиглÑд/МаÑкувати приватні запиÑи" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Файл/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/ВиглÑд/Календар" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/ВиглÑд/ÐдреÑна книга" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/ВиглÑд/ЗавданнÑ" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/ВиглÑд/Пам'Ñтки" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Модулі" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Довідка" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/Довідка/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Модулі/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Довідка/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Ðе завантажено модулі.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "ІгноруютьÑÑ ÑƒÑÑ– ÑповіщеннÑ.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "ІгноруютьÑÑ Ð¾Ñтанні ÑповіщеннÑ.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ канал\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Показати приватні запиÑи Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Сховати приватні запиÑи Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "МаÑкувати приватні запиÑи Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Синхронізувати palm з програмою Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Синхронізувати адреÑи" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Синхронізувати palm з програмою\n" "потім зробити резервну копію" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Календар/Перейти на Ñьогодні" #: ../jpilot.c:2144 msgid "Address Book" msgstr "ÐдреÑна книга" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Перелік завдань" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Блокнот пам'Ñток" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Виконати зараз" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Ðагадати пізніше" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Більше не згадувати!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot викориÑтовує графічну бібліотеку GTK2. Ð¦Ñ Ð²ÐµÑ€ÑÑ–Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ " "викориÑтовує UTF-8 Ð´Ð»Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів.\n" "Слід вибрати набір Ñимволів UTF-8, тоді ви зможете побачити не-ASCII Ñимволи " "(наприклад Ñимволи з акцентами).\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Ðабір Ñимволів " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Виберіть ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ UTF-8" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" " +B +M +A +T дата відповідна до формату +format (викориÑтовуйте -? Ð´Ð»Ñ " "докладнішої інформації).\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v вивеÑти верÑÑ–ÑŽ та завершитиÑÑŒ.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h вивеÑти верÑÑ–ÑŽ та завершитиÑÑŒ.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -h вивеÑти верÑÑ–ÑŽ та завершитиÑÑŒ.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -B дамп календарÑ.\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N дамп програми Ñьогодні у календарі.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD дамп програм у YYYY/MM/DD у календарі.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A дамп адреÑної книги.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T дамп ÑпиÑку завдань у CSV.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M дамп пам'Ñток.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " ЧитаютьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ J-Pilot Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ð°, швидкоÑті, кількоÑті " "резервних копій, тощо.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v вивеÑти верÑÑ–ÑŽ та параметри компілÑції.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d вивеÑти налагоджувальну інформацію у Ñтандартний вивід.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "Ðе завантажено модулі.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" " -l = циклічно, у іншому випадку один раз виконати Ñинхронізацію та вийти.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p {порт} = ВикориÑтовувати цей порт Ð´Ð»Ñ Ñинхронізації заміÑть Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ " "параметрів.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Помилка при відкриванні файлу: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Помилка при відкриванні файлу: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Помилка" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ HOME надто довге\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Цей Ð·Ð°Ð¿Ð¸Ñ Ð²Ð¶Ðµ видалено.\n" "Він запланований на Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð· Palm при черговій Ñинхронізації.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл запиÑів PC\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Ðе вдаєтьÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Ðевідома верÑÑ–Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Помилка при відкриванні файлу: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Помилка при читанні %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Помилка при читанні файлу PC 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Помилка при читанні файлу PC 1\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Ðевідома верÑÑ–Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° PC = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл журналу, Ñпроби закінчені.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл журналу\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Довжина текÑту пам'Ñтки > 65535, обрізуєтьÑÑ\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Імпортована пам'Ñтка %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Формат файлу не Ñхожий на формат memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Ðе вдаєтьÑÑ ÐµÐºÑпортувати %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Блокнот пам'Ñток" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "ПереглÑд міÑÑцÑ" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Пароль Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Ðекоректний, введіть пароль PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Введіть пароль PalmOS" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Помилка при читанні файлу: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "неÑкінчений цикл" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "при читанні %s%s Ñ€Ñдок 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Ðеправильна верÑÑ–Ñ\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Перевірте параметри->канали\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ñƒ модулі [%s]\n" " помилка [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " модуль неправильний: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Модуль:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Цей модуль верÑÑ–Ñ— (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "Занадто давній та не підтримуєтьÑÑ Ñ†Ñ–Ñ”ÑŽ верÑією J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "ВподобаннÑ" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Локаль" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Параметри" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Календар" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "ЗавданнÑ" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Пам'Ñтки" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "СповіщеннÑ" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Канали" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Короткий формат дати " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Довгий формат дати " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Формат чаÑу " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Файл влаÑних GTK кольорів " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Помилка Ñинхронізації" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "КількіÑть резервних копій" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Показувати видалені запиÑи (типово ÐІ)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Показувати змінені запиÑи (типово ÐІ)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Підтверджувати вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² (J-Pilot -> PDA) (типово ТÐК)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Показувати підказки (типово ТÐК)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "ПідÑвічувати дні ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ñ–Ð· зуÑтрічами" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Відмічати Ñьогоднішній день при переглÑді днÑ, Ñ‚Ð¸Ð¶Ð½Ñ Ñ‚Ð° міÑÑцÑ" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Додавати роки до річниць при переглÑді днÑ, Ñ‚Ð¸Ð¶Ð½Ñ Ñ‚Ð° міÑÑÑ†Ñ " #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "ВикориÑтовувати DateBk тег приміток" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Підтримка DateBk вимкнена у цій збірці" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Команда перевірки пошти" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s замінено на адреÑу ел.пошти" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Приховувати завершені завданнÑ" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Приховувати незавершені завданнÑ" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "ЗапиÑувати дату завершеннÑ" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "ВикориÑтовувати базу даних Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "ВикориÑтовувати типову кількіÑть потрібних днів" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "ВикориÑтовувати Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Відкривати вікна ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Виконати цю команду" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "ПОПЕРЕДЖЕÐÐЯ: Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ñ… Ñценаріїв оболонки може бути небезпечним!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Команда ÑповіщеннÑ" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t замінюєтьÑÑ Ð½Ð° Ñ‡Ð°Ñ ÑповіщеннÑ" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d замінюєтьÑÑ Ð½Ð° дату ÑповіщеннÑ" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D замінюєтьÑÑ Ð½Ð° Ð¾Ð¿Ð¸Ñ ÑповіщеннÑ" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N замінюєтьÑÑ Ð½Ð° примітку ÑповіщеннÑ" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (підÑтановку опиÑу) вимкнено у цій збірці" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%D (підÑтановку приміток) вимкнено у цій збірці" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Синхронізувати календар" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Синхронізувати адреÑи" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Синхронізувати завданнÑ" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Синхронізувати пам'Ñтки" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Синхронізувати Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "ВикориÑтовувати J-OS (Ðе ÑпонÑька PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Триває ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Параметри друку" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Розмір паперу" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Роздрук днÑ" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Роздрук тижнÑ" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Роздрук міÑÑць" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Видалено Ð·Ð°Ð¿Ð¸Ñ %s." #: ../print_gui.c:268 msgid "All records in this category" msgstr "УÑÑ– запиÑи у цій категорії" #: ../print_gui.c:272 msgid "Print all records" msgstr "Друкувати уÑÑ– запиÑи" #: ../print_gui.c:294 msgid "One record per page" msgstr "Один Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ñторінку" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " порожніх Ñ€Ñдків між запиÑами" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Команда друку (наприклад lpr, або cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Відновити КПК" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Файли, що будуть вÑтановлені" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Щоб відновити КПК:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Виберіть уÑÑ– додатки, Ñкі Ñлід відновити. Типово відновлюютьÑÑ ÑƒÑÑ–." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Введіть ім'Ñ Ñ‚Ð° ідентифікатор кориÑтувача." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. ÐатиÑніть кнопку Гаразд." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Це призведе до запиÑу даних у КПК." #: ../search_gui.c:142 msgid "datebook" msgstr "календар" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "адреÑа" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "завданнÑ" #: ../search_gui.c:359 msgid "memo" msgstr "пам'Ñтки" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "пам'Ñтки" #: ../search_gui.c:419 msgid "plugin ?" msgstr "модуль ?" #: ../search_gui.c:499 msgid "No records found" msgstr "ЗапиÑів не знайдено" #: ../search_gui.c:598 msgid "Search" msgstr "Пошук" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Шукати: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Враховувати регіÑтр" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл блокуваннÑ\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "помилка блокуваннÑ\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "файл Ñинхронізації заблокований процеÑом з номером %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "помилка розблокуваннÑ\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "Ñинхронізацію заблоковано процеÑом з номером %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Перевірте параметри поÑлідовного порта\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Ðе вдаєтьÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ домашній каталог\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID автора '%s') оновлено, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "ОтримуєтьÑÑ '%s' (ID автора '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Помилка, не вдаєтьÑÑ Ñтворити файл %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Помилка, не вдаєтьÑÑ Ñтворити резервну копію бази даних %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "Гаразд\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "ПропуÑкаєтьÑÑ %s (ID автора '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Ð’ÑтановлюєтьÑÑ %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Ðе вдаєтьÑÑ Ñинхронізувати файл '%s': файл пошкоджений?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ID автора '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ID автора '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s завершилоÑÑŒ помилкою" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Помилка.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "Ð’Ñтановлено %s " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про додаток %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Помилка Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про додаток %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒ інформації про додаток Ð´Ð»Ñ %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Ðе вдаєтьÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ категорію %s до віддаленої Ñторони.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Ðадто багато категорій Ð´Ð»Ñ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ñ— Ñторони.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "УÑÑ– запиÑи програми у %s будуть переміщені у %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Триває ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "ЗапиÑано Ð·Ð°Ð¿Ð¸Ñ %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "ЗапиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу %s завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу %s завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Видалено Ð·Ð°Ð¿Ð¸Ñ %s." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Видалено Ð·Ð°Ð¿Ð¸Ñ %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "ЗапиÑано Ð·Ð°Ð¿Ð¸Ñ %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "ЗапиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу %s завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу %s завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Видалено Ð·Ð°Ð¿Ð¸Ñ %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "Помилка у dlp_DeleteRecord()\n" "Це може бути через те, що Ð·Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ² вже видалений у Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Завершено занеÑÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про кориÑтувача.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½Ð° приÑтрій %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Зараз натиÑніть кнопку ГарÑчаСинхронізаціÑ\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "ОÑтаннє Ñинхронізоване ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ОÑтаннє Ñинхронізований ID кориÑтувача-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Це ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Цей ID кориÑтувача-->\"%d\"\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "ID кориÑтувача %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Цей PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Синхронізацію перервано\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐšÐŸÐš завершено.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Ðеобхідна ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "ВиконуєтьÑÑ ÑˆÐ²Ð¸Ð´ÐºÐ° ÑинхронізаціÑ.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "ВиконуєтьÑÑ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð° ÑинхронізаціÑ.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "ДÑкуємо за викориÑÑ‚Ð°Ð½Ð½Ñ J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Завершено.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ñ– ÑтатуÑом %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "ТекÑÑ‚ опиÑу Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ > %d, обрізано до %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "ТекÑÑ‚ пам'Ñтки до Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ > %d, обрізано до %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Дата завершеннÑ" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Формат файлу не Ñхожий на формат todo.dat\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Ðе вдаєтьÑÑ ÐµÐºÑпортувати ÑпиÑок завдань %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Дата завершеннÑ" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Дата завершеннÑ" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Пріоритет: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Завершено" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Пріоритет поза межами\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Ðемає дати" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Завершено" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Пріоритет: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Дата завершеннÑ:" #: ../utils.c:330 msgid "Today" msgstr "Сьогодні" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Ðе вдаєтьÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ порожній DB файл %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " можливо не вÑтановлений.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Ðе можна видалити категорію %s.\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s Ñ” каталогом" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Ðе вдаєтьÑÑ Ð·Ð°Ð¿Ð¸Ñати файли у каталоги %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Зберегти змінені запиÑи?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Бажаєте зберегти зміни у цьому запиÑÑ–?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Зберегти новий запиÑ?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Бажаєте зберегти цей новий запиÑ?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "неÑкінченний цикл, перериваєтьÑÑ\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "Ðе завантажено модулі.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ігнорувати пропущені з моменту оÑтаннього запуÑку ÑповіщеннÑ.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ігнорувати уÑÑ– ÑповіщеннÑ)); минулі та майбутні.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " Змінні Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ PILOTPORT та PILOTRATE викориÑтовуютьÑÑ Ð´Ð»Ñ\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ð° та швидкоÑті Ñинхронізації.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Якщо PILOTPORT не вÑтановлено, то типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Помилка при читанні файлу" #: ../utils.c:1973 msgid "Date compiled" msgstr "Дата завершеннÑ" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Скомпільовано з цими параметрами:" #: ../utils.c:1976 msgid "Installed Path" msgstr "ШлÑÑ… вÑтановленнÑ" #: ../utils.c:1978 msgid "pilot-link version" msgstr "верÑÑ–Ñ pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Підтримка USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "так" #: ../utils.c:1984 msgid "Private record support" msgstr "Підтримка приватних запиÑів" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "ні" #: ../utils.c:1990 msgid "Datebk support" msgstr "Підтримка Datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Підтримка модулів" #: ../utils.c:2002 msgid "Manana support" msgstr "Підтримка Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Підтримка NLS (національні мови)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Підтримка GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Ðе вдаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ змінну Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ HOME надто довге\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Правка категорій" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID дорівнює 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Створено новий PC ID. Він дорівнює %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Сьогодні %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Сьогодні %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Помилка запиÑу заголовку PC у файл: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Помилка запиÑу наÑтупного ідентифікатора у файл: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "ПереглÑд тижнÑ" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "ÐвÑтраліÑ" #: ../Expense/expense.c:96 msgid "Austria" msgstr "ÐвÑтріÑ" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "БельгіÑ" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "БразиліÑ" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Канада" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "ДаніÑ" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Євро)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "ФінлÑндіÑ" #: ../Expense/expense.c:103 msgid "France" msgstr "ФранціÑ" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Ðімеччина" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Гонг Конг" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "ІÑландіÑ" #: ../Expense/expense.c:107 msgid "India" msgstr "ІндіÑ" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "ІндонезіÑ" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "ІрландіÑ" #: ../Expense/expense.c:110 msgid "Italy" msgstr "ІталіÑ" #: ../Expense/expense.c:111 msgid "Japan" msgstr "ЯпоніÑ" #: ../Expense/expense.c:112 msgid "Korea" msgstr "КореÑ" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "ЛюкÑембург" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "МалайзіÑ" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "МекÑика" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "ГолландіÑ" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Ðова ЗеландіÑ" #: ../Expense/expense.c:118 msgid "Norway" msgstr "ÐорвегіÑ" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "P.R.C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Філіппіни" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Сінгапур" #: ../Expense/expense.c:122 msgid "Spain" msgstr "ІÑпаніÑ" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "ШвеціÑ" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "ШвейцаріÑ" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Тайвань" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Таїланд" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Велика БританіÑ" #: ../Expense/expense.c:128 msgid "United States" msgstr "СШÐ" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Видатки" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Ðвіатариф" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Сніданок" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "ÐвтобуÑ" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Ð‘Ñ–Ð·Ð½ÐµÑ Ð›Ð°Ð½Ñ‡" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Оренда машин" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Обід" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Розваги" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "ФакÑ" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Газ" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Дарунки" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Готель" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "ВипадковоÑті" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "ПральнÑ" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limo" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Житло" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Ланч" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Проїзд" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "ПаркуваннÑ" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Поштові" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "ЗакуÑка" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Метро" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "ПоÑтачальники" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "ТакÑÑ–" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Телефон" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "ОÑобливі" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Мито" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Поїзд" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Витрати: невідомий тип витрат\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Витрати: Ðевідомий тип платежу\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Готівка" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Чеки" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Кредитна картка" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Передплачені" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Тип:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Сума:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "КатегоріÑ:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Тип:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Оплата:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Валюта:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "МіÑÑць:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "День:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Рік:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Сума:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Виробник:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "МіÑто:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Супровід" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "Ð’'Ñзка ключів: pack_KeyRing(): надто мале Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ buf_size\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Ðекоректно, введіть повторно пароль до в'Ñзки ключів" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Введіть ÐОВИЙ пароль в'Ñзки ключів" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Введіть пароль в'Ñзки ключів" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "Ð’'Ñзка ключів: файл %s не Ñ–Ñнує.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "Ð’'Ñзка ключів: Ñпроба Ñинхронізації.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "Ð’'Ñзка ключів" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Ðе вдаєтьÑÑ ÐµÐºÑпортувати %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Змінити\n" "пароль\n" "в'Ñзки ключів" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "СкаÑувати" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Рахунок" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "ім'Ñ: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "рахунок: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "пароль: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Створити пароль" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Синхронізувати пам'Ñтки" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Завершено" #, fuzzy #~ msgid "Overwrite" #~ msgstr "ПерезапиÑати файл" #~ msgid "Field" #~ msgstr "Поле" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "ЗведеннÑ" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Ðе можна редагувати категорію %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Ðе можна видалити категорію %s.\n" #~ msgid "category name" #~ msgstr "назва категорії" #~ msgid "debug" #~ msgstr "налагодженнÑ" #~ msgid "Close" #~ msgstr "Закрити" #~ msgid "none" #~ msgstr "немає" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "Знайдено невідомий repeatType у DatebookDB\n" #~ msgid "W" #~ msgstr "Тж" #~ msgid "M" #~ msgstr "МÑ" #~ msgid "This Event has no particular time" #~ msgstr "Ð¦Ñ Ð¿Ð¾Ð´Ñ–Ñ Ð½Ðµ має оÑобливого чаÑу" #~ msgid "Start Time" #~ msgstr "Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ" #~ msgid "End Time" #~ msgstr "Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ" #~ msgid "Dismiss" #~ msgstr "ВідпуÑтити" #~ msgid "Done" #~ msgstr "Завершено" #~ msgid "Add" #~ msgstr "Додати" #, fuzzy #~ msgid "User name" #~ msgstr "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #~ msgid " -v = version\n" #~ msgstr " -v = верÑÑ–Ñ\n" #~ msgid " -h = help\n" #~ msgstr " -h = довідка\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = запуÑтити у налагоджувальному режимі\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = не завантажувати модулі.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = Ñинхронізувати а потім робити резервну копію, чи проÑто " #~ "Ñинхронізувати.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Ðеправильно вказано геометрію: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Довідка/Програма PayBack" #~ msgid "Font Selection Dialog" #~ msgstr "Діалог вибору шрифту" #~ msgid "Clear" #~ msgstr "ОчиÑтити" #~ msgid "Show private records" #~ msgstr "Показати приватні запиÑи" #~ msgid "Hide private records" #~ msgstr "Сховати приватні запиÑи" #~ msgid "Mask private records" #~ msgstr "МаÑкувати приватні запиÑи" #~ msgid "Font" #~ msgstr "Шрифт" #~ msgid "Go to the menu \"" #~ msgstr "Перейдіть в меню \"" #~ msgid "\" and change the \"" #~ msgstr "\" та змініть \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл запиÑів PC\n" #~ msgid "The first day of the week is " #~ msgstr "Перший день Ñ‚Ð¸Ð¶Ð½Ñ " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "ПоÑлідовний порт (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "ШвидкіÑть поÑлідовного порта (не впливає на USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Синхронізувати memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Один запиÑ" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "" #~ "%s: натиÑніть кнопку ГарÑÑ‡Ð°Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½Ð° приÑтрої або виконайте \"kill " #~ "%d\"\n" #~ msgid "Finished\n" #~ msgstr "Завершено\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "ОÑтаннє ім'Ñ = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "ОÑтанній ID кориÑтувача = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "userID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: кількіÑть запиÑів = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: кількіÑть запиÑів = %d\n" #, fuzzy #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i мінімізувати jpilot піÑÐ»Ñ Ð·Ð°Ð¿ÑƒÑку\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s не Ñхожий на каталог.\n" #~ "Має бути каталогом.\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Кредитні картки" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Expense: Unknown category\n" #~ msgstr "Витрати: невідома категоріÑ\n" #, fuzzy #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ HOME надто довге\n" #~ msgid "Quit" #~ msgstr "Вийти" #~ msgid "Help" #~ msgstr "Довідка" #~ msgid "Directory" #~ msgstr "Каталог" #~ msgid "Filename" #~ msgstr "Ðазва файлу" #~ msgid "Answer: " #~ msgstr "Відповідь: " #~ msgid "Sync" #~ msgstr "Синхронізувати" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p не завантажувати модуль.\n" jpilot-1.8.2/po/Makefile.in.in0000644000175000017500000001604612336026316013045 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # Copyright (C) 2004-2008 Rodney Dawes # # This file may be copied and used freely without restrictions. It may # be used in projects which are not available under a GNU Public License, # but which still want to provide support for the GNU gettext functionality. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ DATADIRNAME = @DATADIRNAME@ itlocaledir = $(prefix)/$(DATADIRNAME)/locale subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS POTFILES = \ # This comment gets stripped out CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V)) INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@; .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< .po.gmo: $(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info ctags tags CTAGS TAGS ID: # Define this as empty until I found a useful application. install-exec installcheck: uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot rm -f missing notexist srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m if [ -r missing -o -r notexist ]; then \ exit 1; \ fi mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/po/tr.po0000664000175000017500000026066112340261240011356 00000000000000# translation of jpilot-1.6.0-pre2.po to Turkish # jpilot-1.6.0-pre2.po'nun Türkçe'ye çevirisi # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the jpilot package. # Eyüp Hakan Duran , 2002, 2004, 2005, 2008. # # # msgid "" msgstr "" "Project-Id-Version: jpilot-1.6.0-pre2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2008-05-04 19:00-0400\n" "Last-Translator: Eyüp Hakan Duran \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Bellek yetersiz" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Kategori bilgisi okumada hata %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Dosya okumada hata: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "hata" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Bu kayýt silindi.\n" "Deðiþiklik yapmak için silmeyi geri alýnýz ya da kopyalayýnýz.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Dosya açýlamadý: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Dosya açýlamadý: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Dosya adres.dat biçeminde gözükmüyor\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Dosyalanmamýþ" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "Tamam" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Hayýr" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Evet" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s bir dizin..." #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Dosya Açmada Hata" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "%s dosyasýnýn üstüne kaydetmek istiyor musunuz?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Dosya Üstüne Yazýlsýn mý?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Dosya Açmada Hata: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Adres ihraç edilemiyor %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Sýnýf " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Özel" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, fuzzy, c-format msgid "%s: " msgstr "%s%s: %s" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-posta" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Bilinmeyen ihraç türü\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Ýsim/Þirket" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Ýsim/Þirket" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Þirket/Ýsim" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Silinmiþ bir kaydý deðiþtiremezsiniz\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Kategori geçerli deðil\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "Komut uygulanýyor = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "Doðum Günü" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "Harici program bulunamadý ya da baþka bir hata" #: ../address_gui.c:2577 #, fuzzy msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" "J-Pilot harici bir program \"convert\" bulamadý\n" "ya da convert yürütülürken bir hata oluþtu.\n" "ImageMagick paketini yüklemeniz gerekebilir" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "Yürütülen komut \"%s\" idi\n" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "dönüþ kodu %d idi\n" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "kilitleme baþarýsýz\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "Foto Ekle" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Sýnýf " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Posta" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Çevir" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Adsýz-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 kayýt" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%2$d kaydýn %1$d tanesi" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Ýsim" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adres" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Diðer" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Not" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "Adres veritabanýna geri dönüþtürülüyor\n" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Çabuk Bul" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Ýptal" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Deðiþiklikleri iptal et" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Sil" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Seçili kaydý sil" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Silmeyi geri al" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Silinmiþ seçili kaydý kurtar" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopyala" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Seçili kaydý kopyala" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Yeni Kayýt" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Yeni bir kayýt ekle" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Kayýt Ekle" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Yeni kaydý ekle" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Deðiþiklikleri Uygula" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Deðiþiklikleri onayla" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Özel" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "Foto Deðiþtir" #: ../address_gui.c:4174 msgid "Remove Photo" msgstr "Foto Çýkar" #: ../address_gui.c:4246 msgid "Show In List" msgstr "Listede Göster" #: ../address_gui.c:4347 msgid "Reminder" msgstr "Anýmsatýcý" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Gün" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Tümü" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Dakika" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Saat" #: ../alarms.c:253 msgid "Remind me" msgstr "Anýmsat" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Dosya açýlamadý: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Randevu Anýmsatýcý" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Geçmiþ Randevu" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Ertelenmiþ Randevu" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Randevu" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot Alarmý" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Bozuk PC dosyasý?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek baþarýsýz - ölümcül hata\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "yeniden adlandýrma baþarýsýz" #: ../category.c:407 msgid "Move" msgstr "Taþý" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Kategorileri Düzenle" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Maksimum kategori sayýsý (16) zaten kullanýlmýþ" #: ../category.c:440 msgid "Enter New Category" msgstr "Yeni Kategori Girin" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "Kategorileri Düzenle Hatasý" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Yeniden adlandýrmak için bir kategori seçmelisiniz" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Yeni Kategori Adý Girin" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Silmek için bir kategori seçmelisiniz" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%2$s'de %1$d adet kayýt var.\n" "Bunlarý %3$s'e taþýmak mý, silmek mi istersiniz?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "geçersiz durum dosyasý %s satýr %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "%s kategorisi birden fazla kullanýlamaz" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Sýnýf:" #: ../category.c:834 msgid "New" msgstr "Yeni" #: ../category.c:841 msgid "Rename" msgstr "Yeniden adlandýr" #: ../dat.c:512 msgid "unknown type =" msgstr "bilinmeyen tür =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "satýr baþýna alan sayýsý != %d, bilinmeyen biçem\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "alan sayýsý != %d, bilinmeyen biçem\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Bilinmeyen biçem, dosya yanlýþ þema içeriyor\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Dosya þemasý:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Olmasý gereken: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%1$s:%2$d Kayýt %3$d, alan %4$d: Geçersiz tür. %5$d bekleniyordu, %6$d " "bulundu\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "dosya okuma sonlandýrýldý\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "RandevudefteriVT'da bilinmeyen yinelemeTürü (%d) bulundu\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Yinele:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Yineleme Günü" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Yinele:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Yineleme Günü" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Yineleme Günü" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Yineleme Günü" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "P" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Pzt" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "S" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Çar" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "." #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "C" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Cts" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Bitiþ Tarihi" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Yineleme Günü" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "kayýt sayýsý = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Not" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarm" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Yinele:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Haftanýn günü" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Randevu açýklama metni > %d çok uzun, %d'e kýsaltýlýyor\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Hata" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Dosya randevudefteri.dat biçeminde gözükmüyor\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Bilinmeyen ihraç türü" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Ýhraç et" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Tüm Randevu Defteri Kayýtlarýný Ýhraç Et" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Farklý kaydet" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Gözat" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Randevudefteri Kategorileri" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Hiçbiri" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Baþlangýç Tarihi" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Bitiþ Tarihi" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Pazar" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Pazartesi" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Salý" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Çarþamba" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Perþembe" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Cuma" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Cumartesi" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4." #: ../datebook_gui.c:1760 msgid "Last" msgstr "Son" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Bu randevu ya ayýn\n" "4'üncü %1$s'inde\n" "ya da son %2$s'inde\n" "yinelenir. Hangisini\n" "istersiniz?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Soru?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Bu, yinelenen bir olay.\n" "Bu deðiþiklikleri yalnýzca\n" "þu anki olaya mý, yoksa olayýn\n" "tüm yinelemelerine mi uygulamak\n" "istersiniz?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Þu anki" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "gün" #: ../datebook_gui.c:2028 msgid "week" msgstr "hafta" #: ../datebook_gui.c:2029 msgid "month" msgstr "ay" #: ../datebook_gui.c:2030 msgid "year" msgstr "yýl" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Her %d %s'de yinelenen randevunuz olamaz\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "Haftanýn herhangi bir gününde yinelenmeyen haftalýk randevunuz olamaz." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Zaman Yok" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Geçersiz Randevu" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Bu randevunun Bitiþ Tarihi\n" "baþlangýç tarihinden önce." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Tarih Yok" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "RandevudefteriVT ilerlemeBirimi hatasý = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (BUGÜN)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Hafta" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Randevularý haftalýk görüntüle" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Ay" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Randevularý aylýk görüntüle" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Sýnýflar" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Zaman" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Ýþ Listesini Göster" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Görev" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Sonlanma" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Tarih:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Baþlangýç: " #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Bitiþ" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "RandevuDf Etiketleri" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Gün" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Yýl" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Bu olay yinelenmeyecek" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Yineleme Her" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Gün" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Bitiþ" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Hafta" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Ay" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Yinele:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Haftanýn günü" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Tarih" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Yýl" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Telefon Çeviricisi" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Sýfat 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Sýfat 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Sýfat 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Telefon numarasý:" #: ../dialer.c:319 msgid "Extension" msgstr "Dahili" #: ../dialer.c:341 msgid "Dial Command" msgstr "Çevir Komutu" #: ../export_gui.c:121 msgid "File Browser" msgstr "Dosya Gözatýcýsý" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Ýhraç edilecek kayýtlarý seçiniz" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Ctrl ve Shift tuþlarýný kullanýnýz" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Ýthal et" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Kayýt, özel olarak iþaretlenmiþ" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Kayýt, özel olarak iþaretlenmemiþ" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Ýthalden önceki kategori: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Kaydýn konacaðý kategori [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Tümünü Ýthal Et" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Atla" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Gizli dizine dönüþtürmek için aþaðýya yazýp TAB'a basýn" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Ýthal Edilen Dosya Türü" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Yüklenecek dosyalar" #: ../install_gui.c:372 msgid "Install" msgstr "Yükle" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Kullanýcý Kur" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" "Bir Palm OS(c) aygýtýný uygun þekilde eþzamanlamak için bir kullanýcý adý ve " "numarasý gereklidir." #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" "Birden fazla PalmOS(c) aygýtýný eþzamanlamak isterseniz, herbirinin farklý " "numarasý ve tercihen farklý kullanýcý adý olmalýdýr." #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "Pek çok kiþi kullanýcý adý olarak kendi ad ya da lakaplarýný seçer." #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Kullanýcý Adý" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "Kullanýcý numarasý rasgele bir sayý olmalýdýr." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Kullanýcý No" #: ../jpilot.c:317 msgid "Print" msgstr "Yazdýr" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Bu arabirim için yazdýrma desteði bulunmamakta..." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Bu arabirim için ithal etme desteði bulunmamakta..." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Bu arabirim için ihraç etme desteði bulunmamakta..." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Eþzamanlamayý iptal et" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Bu avuçiçi son kez eþzamanlananla ayný kullanýcý\n" "adý ya da kimliðine sahip deðil. Eþzamanlamanýn\n" "istenmeyen etkileri olabilir. Emin deðilseniz\n" "kullanýcý kýlavuzunu okuyun." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Bu avuçiçi, NULL kullanýcý kimliðine sahip.\n" "Uygun þekilde eþzamanlanmak için her palm, kendine has bir kullanýcý\n" "kimliðine sahip olmalýdýr. Eðer donaným yeniden baþlatýldýysa, yeniden\n" "yüklemek için menüden yeniden yüklemeyi kullanýn ya da pilot-xfer'i " "kullanýn.\n" "Bir kullanýcý adý ve kimliði eklemek için install-user komut satýrý aracý " "kullanýn,\n" "ya da menüden kullanýcý-yükle'yi kullanýn\n" "Emin deðilseniz kullanýcý klavuzunu okuyun." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Eþzamanlamayý iptal et" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Her halukarda eþzamanla" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Problemi Eþzamanla" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Kullanýcý: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Eþzamanlama sürecinden bilinmeyen komut\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "%s Hakkýnda" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Dosya" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Dosya/yýrt" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Dosya/_Bul" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Dosya/ayraç1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Dosya/_Yükle" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Dosya/Ýthal et" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Dosya/Ýhraç et" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Dosya/Tercihler" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Dosya/_Yazdýr" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Dosya/Kullanýcý Yükle" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Dosya/Avuçiçini Geri Yükle" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Dosya/_Çýk" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Görünüm" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Görünüm/Özel Kayýtlarý Gizle" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Görünüm/Özel Kayýtlarý Göster" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Görünüm/Özel Kayýtlarý Maskele" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Dosya/ayraç1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Görünüm/Randevular" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Görünüm/Adresler" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Görünüm/Ýþ listesi" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Görünüm/Notlar" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Eklentiler" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Yardým" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Yardým/J-Pilot Hakkýnda" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Eklentiler/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Yardým/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "takvim:hafta_baþý:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Eklentiler yüklenmiyor.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Tüm alarmlar yok sayýlýyor.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Geçmiþ alarmlar yok sayýlýyor.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Veriyolu açýlamadý\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Özel kayýtlarý göster Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Özel kayýtlarý gizle Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Özel kayýtlarý maskele Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Avuçiçini masaüstüyle eþzamanlayýn Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Adresleri eþzamanla" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Avuçiçini masaüstüyle eþzamanlayýn\n" "ve sonrasýnda yedekleyin" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Randevular/Bugüne Git" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adres Defteri" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Ýþ Listesi" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Not defteri" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Þimdi yap" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Daha sonra anýmsat" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Bana bir daha söyleme!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot, GTK2 grafik araç kitini kullanýyor. Araç kitinin bu sürümü " "karakterleri kodlamada UTF-8 kullanýr.\n" "ASCII olmayan karakterleri (örneðin aksanlar) görebilmek için bir UTF-8 " "karakter kümesi seçmelisiniz.\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Karakter Kümesi" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Bir UTF-8 kodlama seçiniz" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +D +A +T +M biçemi, tarih +biçemi gibi.\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v sürümü gösterir ve çýkar.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h yardýmý gösterir ve çýkar.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f biçem kodlarý için yardýmý gösterir.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -D RandevuDefterini boþaltýr.\n" #: ../jpilot-dump.c:97 #, fuzzy, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr " -i RandevuDefterini iCalender biçemine dönüþtürür.\n" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N RandevuDefterinde bugünkü randevularý boþaltýr.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" " -NYYYY/MM/DD randevuDefterinde YYYY/MM/DD'deki randevularý boþaltýr.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A Adres defterini boþaltýr.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T Ýþ Listesini CSV gibi boþaltýr.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M Notlarý boþaltýr.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Dosya açýlamadý: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " J-Pilot tercihleri port, yedekleme sayýsý, vs.'yi almak için okunur.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v sürümü ve derleme seçeneklerini gösterir ve çýkar.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d hata ayýklama bilgisini stdout'a gönderir.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -p eklentilerin yüklenmesini atlar.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = döngüle, aksi halde bir kez eþzamanla ve çýk.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {port} = Tercihleri almaktansa bu portu kullanarak eþzamanla.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Dosya açmada hata: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Dosya açmada hata: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Hata" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "HOME çevre deðiþkeniniz benim için çok uzun\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, fuzzy, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" "Bir Palm OS(c) aygýtýný uygun þekilde eþzamanlamak için bir kullanýcý adý ve " "numarasý gereklidir." #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Bu kayýt zaten silinmiþ.\n" "Avuçiçinden bir sonraki eþzamanlamada silinecek.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "PC kayýt dosyasý açýlamadý\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Silinecek kayýt bulunamýyor\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Bilinmeyen baþlýk sürümü %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%1$s:%2$d Dosyayý açmada hata: %3$s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%1$s:%2$d Dosya okumada hata: %3$s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Dosya açmada hata: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "%s 5 okumada hata\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "PC dosyasý 1'i okumada hata\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "PC dosyasý 2'yi okumada hata\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Bilinmeyen PC baþlýk sürümü = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Günlük (log) dosyasý açýlamýyor, vazgeçiyorum.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Günlük (log) dosyasý açýlamadý\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Not metni > 65535, sondan kýrpýlýyor\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Ýthal edilen Not %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Dosya anýmsatýcý.dat biçeminde gözükmüyor\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Not ihraç edilemiyor %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Not defteri" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Aylýk Görünüm" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "son deðiþtirme: " #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Avuçiçi Parolasý" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Yanlýþ, PalmOS Parolasýný Tekrar Giriniz" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "PalmOS Parolasýný Giriniz" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Dosya okumada hata: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "sonsuz döngü" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "%s%s okunurken satýr 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Yanlýþ sürüm\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Tercihler ->devreler'i kontrol edin\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Açma eklentide [%s] baþarýsýz oldu\n" " hata [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " eklenti geçersiz: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Eklenti:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Bu eklenti sürüm (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "J-Pilot'un bu sürümüyle çalýþmak için çok eski.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Tercihler" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Yereller" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Ayarlar" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Randevu defteri" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Ýþ Listesi" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Notlar" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarmlar" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Arabirimler" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Kýsa tarih biçimi" #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Uzun tarih biçimi" #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Saat biçimi" #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "GTK renkleri dosyam " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Problemi Eþzamanla" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "Seri Oraný" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Arþivlenecek yedekleme sayýsý " #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Silinmiþ kayýtlarý göster (öntanýmlý HAYIR)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Deðiþtirilmiþ silinmiþ kayýtlarý göster (öntanýmlý HAYIR)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Dosya yüklemek için onay sor (J-Pilot -> PDA) (öntanýmlý EVET)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Beliriveren araç ipuçlarýný göster (öntanýmlý EVET)" #: ../prefs_gui.c:666 #, fuzzy msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "RandevuDefteri veritabanýný kullan (Palm OS <= 3.5)" #: ../prefs_gui.c:669 #, fuzzy msgid "Use Calendar database (Palm OS > 5.2)" msgstr "Takvim veritabanýný kullan (PalmOS >= 4.0)" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Randevulu takvim günlerini vurgula" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Bugünü gün, hafta ve ay gösterimlerinde iþaretle" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Yýldönümlerinin kaçýncý olduðunu gün, hafta ve ay görünümlerine ekle" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "DateBK not etiketlerini kullan" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "DateBk desteði bu sürümde devre dýþý býrakýlmýþtýr" #: ../prefs_gui.c:725 #, fuzzy msgid "Use Address database (Palm OS < 5.2.1)" msgstr "Adres veritabanýný kullan (Palm OS <= 3.5)" #: ../prefs_gui.c:728 #, fuzzy msgid "Use Contacts database (Palm OS > 5.2)" msgstr "Baðlantýlar veritabanýný kullan (Palm OS >= 4.0)" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Gönderme Komutu" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s e-posta adresiyle deðiþtirildi" #: ../prefs_gui.c:783 #, fuzzy msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "Ýþ Listesi veritabanýný kullan (Palm OS <= 3.5) " #: ../prefs_gui.c:786 #, fuzzy msgid "Use Task database (Palm OS > 5.2)" msgstr "Görev veritabanýný kullan (Palm OS >= 4.0)" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Tamamlanmýþ Ýþleri Gizle" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Süresi henüz dolmamýþ Ýþleri gizle" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Tamamlanma Tarihini Kaydet" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Manana veritabanýný kullan" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Öntanýmlý mühleti kullan" #: ../prefs_gui.c:856 #, fuzzy msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Not veritabanýný kullan (Palm OS <= 3.5)" #: ../prefs_gui.c:859 #, fuzzy msgid "Use Memos database (Palm OS > 5.2)" msgstr "Notlar veritabanýný kullan (Palm OS >= 4.0)" #: ../prefs_gui.c:862 msgid "Use Memo32 database (pedit32)" msgstr "Memo32 veritabanýný kullan (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Randevu anýmsatýcýlarý için alarm pencereleri aç" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Bu komutu çalýþtýr" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "UYARI: Kabuk komutlarýný geliþigüzel çalýþtýrmak tehlikeli olabilir!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarm Komutu" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t, alarm saatine dönüþtürüldü" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d, alarm tarihine dönüþtürüldü" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D, alarm tanýmýna dönüþtürüldü" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N, alarm notuna dönüþtürüldü" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (açýklama yedeklemesi) bu sürümde devre dýþý býrakýlmýþtýr" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (not yedeklemesi) bu sürümde devre dýþý býrakýlmýþtýr" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Randevu defterini eþzamanla" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Adresleri eþzamanla" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Ýþ listesini eþzamanla" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Notlarý eþzamanla" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Manana'yý Eþzamanla" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "J-OS kullan (Japonca PalmOS deðil:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Eþzamanlanýyor %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Yazdýrma Seçenekleri" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Kaðýt Boyutu" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Günlük Yazýcý çýktýsý" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Haftalýk Yazýcý çýktýsý" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Aylýk Yazýcý çýktýsý" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Bir %s kaydý silindi." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Bu sýnýftaki tüm kayýtlar" #: ../print_gui.c:272 msgid "Print all records" msgstr "Tüm kayýtlarý yazdýr" #: ../print_gui.c:294 msgid "One record per page" msgstr "Her sayfada bir kayýt" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " her kayýt arasýna boþ satýr" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Yazdýrma Komutu (örn:lpr, ya da cat > dosya.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Avuçiçini Geri Yükle" #: ../restore_gui.c:174 ../restore_gui.c:176 #, fuzzy msgid "Unable to convert filename for GTK display\n" msgstr "" "GTK gösterimi için dosya adý dönüþtürülemedi\n" "%s dosyasý geri yüklenmeyecek\n" #: ../restore_gui.c:175 #, fuzzy msgid "See console log to find which file will not be restored\n" msgstr "" "GTK gösterimi için dosya adý dönüþtürülemedi\n" "Hangi dosyanýn geri yüklenemeyeceðini bulmak için konsol kütüðüne bakýnýz" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Yüklenecek dosyalar" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Avuçiçini geri yüklemek için:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Geri yüklemek istediðiniz tüm uygulamalarý seçiniz. Öntaným tümünü seçer." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Kullanýcý Ýsim ve Numarasýný giriniz." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Tamam düðmesine basýnýz." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Bu iþlem, halen avuçiçinde kayýtlý verilerin üzerine yazacaktýr." #: ../search_gui.c:142 msgid "datebook" msgstr "Randevu defteri" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "Adres" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "iþ listesi" #: ../search_gui.c:359 msgid "memo" msgstr "Notlar" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Notlar" #: ../search_gui.c:419 msgid "plugin ?" msgstr "eklenti ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Kayýt bulunamadý" #: ../search_gui.c:598 msgid "Search" msgstr "Arama" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Aranacak: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Büyük/küçük harf duyarlý" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "kilit dosyasý açma baþarýsýz\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "kilitleme baþarýsýz\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "eþzamanlama dosyasý pid %d tarafýndan kilitlendi\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "kilit açma baþarýsýz\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "eþzamanlama pid %d tarafýndan kilitlendi\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Seri baðlantýyý ve ayarlarýný kontrol ediniz\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Ev dizini okunamadý\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (Oluþturucu No '%s') güncel, atlandý.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "'%s' alýnýyor (Oluþturucu No '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Baþarýsýz, dosya oluþturulamadý, %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Baþarýsýz, %s veritabaný yedeklenemedi\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "Tamam\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "%s atlanýyor (Oluþturucu No '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "%s yükleniyor " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Dosya açýlamýyor: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Dosya eþzamanlanamýyor: '%s': bozulmuþ dosya?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(Oluþturucu No '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(Oluþturucu No '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Dosya açýlamadý: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "%s yüklenemedi" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Baþarýsýz.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s yüklendi " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d uyg bilgisi almada hata %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d uyg bilgisi paketini açmada hata %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "appinfo bloðu %s için okuma sýrasýnda hata\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Uzak'a (remote) %s kategorisi eklenemedi.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Uzak'ta (remote) çok sayýda kategori.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "%1$s'in masa üstündeki tüm kayýtlar %2$s'e taþýnacak.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "%s Eþzamanlanýyor\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Bir %s kaydý yazýldý." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Bir %s kaydý yazýlamadý." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Bir %s kaydý silinemedi." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Bir %s kaydý silindi." #: ../sync.c:2122 ../sync.c:2475 #, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Sync Conflict: bir %s kaydý çiftlendi." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Bir %s kaydý yazýldý." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Bir %s kaydý yazýlamadý." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Bir %s kaydý silinemedi." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Bir %s kaydý silindi." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "Sync Conflict: bir %s kaydý çiftlendi." #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord baþarýsýz\n" "Kaydýn, avuçiçinden daha önceden silinmiþ olmasýna baðlý olabilir\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Kullanýcý bilgisi yüklemesi bitti.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr "%s aygýtý eþzamanlanýyor\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Otomatik Eþzamanlama (HotSync) düðmesine basýnýz\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Son Eþzamanlanmýþ Kullanýcý Adý-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Son Eþzamanlanmýþ Kullanýcý No-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Bu Kullanýcý Adý-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Bu Kullanýcý No-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Kullanýcý Adý \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "Kullanýcý No %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "Son Eþzamanlanan PC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Bu PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Eþzamanlama iptal edildi\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Avuçiçinin geri yüklenmesi bitti.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "J-Pilot'u güncellemek için eþzamanlamalýsýnýz.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Hýzlý eþzamanlanýyor.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Yavaþ eþzamanlanýyor.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "J-Pilot kullandýðýnýz için teþekkürler..." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Bitti.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "%s durumuyla çýkýlýyor\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Ýþ listesi açýklama metni > %d çok uzun, %d'e kýsaltýlýyor\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Ýþ listesi notu > %1$d çok uzun, %2$d'ye kýsaltýlýyor\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Sonlanma Tarihi" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Dosya iþlistesi.dat biçeminde gözükmüyor\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "%d iþ listesi ihraç edilemiyor\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Sonlanma Tarihi" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Sonlanma Tarihi" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Öncelik: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Tamamlandý" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Öncelik, erim dýþýnda\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Tarih yok" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Tamamlandý" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Öncelik: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Sonlanma Tarihi:" #: ../utils.c:330 msgid "Today" msgstr "Bugün" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Boþ DB dosyasý bulunamadý %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " yüklenemeyebilir.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "%s dizini oluþturulamýyor\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s bir dizin..." #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "%s dizininde dosya yazamýyorum\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Deðiþtirilen kayýt kaydedilsin mi?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Deðiþiklikleri bu kayýta kaydetmek istiyor musunuz?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Yeni Kayýt kaydedilsin mi?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Bu yeni kaydý kaydetmek istiyor musunuz?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "sonsuz döngü, kýrýlýyor\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p eklentilerin yüklenmesini atlar.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" " -a bu programýn son çalýþtýrýlýþýndan beri kaçýrýlmýþ alarmlarý yoksay.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A tüm alarmlarý yoksayar; geçmiþ ve gelecek.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" "PILOTPORT ve PILOTRATE çevre deðiþkenleri, hangi porttan ve hangi hýzla\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "eþzamanlama yapýlacaðýný belirler.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "Eðer PILOTPORT atanmamýþsa, /dev/pilot'a öntanýmlanýr.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Dosya okumada hata" #: ../utils.c:1973 msgid "Date compiled" msgstr "Derleme tarihi" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Þu seçeneklerle derlendi:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Yükleme Yolu" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link sürümü" #: ../utils.c:1982 msgid "USB support" msgstr "USB desteði" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "evet" #: ../utils.c:1984 msgid "Private record support" msgstr "Özel kayýt desteði" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "hayýr" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk desteði" #: ../utils.c:1996 msgid "Plugin support" msgstr "Eklenti desteði" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana desteði" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS desteði (yabancý diller)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 desteði" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "HOME çevre deðiþkeni alýnamýyor\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "HOME çevre deðiþkeniniz benim için çok uzun\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Kategorileri Düzenle" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC No 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Yeni bir PC No oluþturdum: %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Bugün %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Bugün %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "PC baþlýðýný dosyaya yazmada hata: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Sonraki kimliði dosyaya yazmada hata: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Haftalýk Görünüm" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Avustralya" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Avusturya" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belçika" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brezilya" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Kanada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Danimarka" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finlandiya" #: ../Expense/expense.c:103 msgid "France" msgstr "Fransa" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Almanya" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Ýzlanda" #: ../Expense/expense.c:107 msgid "India" msgstr "Hindistan" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Endonezya" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Ýrlanda" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Ýtalya" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japonya" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Kore" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Lüksemburg" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malezya" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Meksika" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Hollanda" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Yeni Zelanda" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norveç" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "P.R.C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipinler" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapur" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Ýspanya" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Ýsveç" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Ýsviçre" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Tayvan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Tayland" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Birleþik Krallýk" #: ../Expense/expense.c:128 msgid "United States" msgstr "Birleþik Devletler" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Gider" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "UçuþÜcreti" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Kahvaltý" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Otobüs" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "ÝþYemekleri" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "ArabaKiralama" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "AkþamYemeði" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Eðlence" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Faks" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Yakýt" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Armaðanlar" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Otel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Rastlantýsallar" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Çamaþýr" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limo" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Konaklama" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "ÖðlenYemeði" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Uzaklýk(mil)" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parketme" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "PostaÜcreti" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Atýþtýrma" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metro" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Gereçler" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taksi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Ýpuçlarý" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "GeçiþÜcretleri" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Tren" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Gider: Bilinmeyen gider türü\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Gider: Bilinmeyen ödeme türü\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "Amerikan Ekspres" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Nakit" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Çek" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Kredi Kartý" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Kart" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "ÖncedenÖdenmiþ" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Tür:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Miktar:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Sýnýf:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Tür:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Ödeme:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Para birimi:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Ay:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Gün:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Yýl:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Miktar:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Satýcý:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Þehir:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Katýlýmcýlar" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "AnahtarDemeti: pack_KeyRing(): buf_size çok küçük\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Yanlýþ, AnahtarDemeti Parolasýný Tekrar Giriniz" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "YENÝ bir AnahtarDemeti Parolasý Giriniz" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "AnahtarDemeti Parolasýný Giriniz" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "AnahtarDemeti: %s dosyasý bulunamadý.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "AnahtarDemeti: Eþzamanlamayý deneyin.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "AnahtarDemeti" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Not ihraç edilemiyor %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "AnahtarDemeti\n" "Parolasýný\n" "Deðiþtir" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Deðiþtirildi" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Hesap" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "isim: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "hesap: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "parola: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "son deðiþtirme: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Parola Oluþtur" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "EþzamanlamaZamaný" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" "synctime: Palm OS 3.25 ve 3.30 sürümleri EþzamanlamaZamaný'ný desteklemez\n" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "synctime: pilot üzerinde zaman ayarlanMIyor\n" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "synctime: Pilot üzerinde zaman ayarlanýyor... " #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Bitti\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Dosya Üstüne Yazýlsýn mý?" #~ msgid "Field" #~ msgstr "Alan" #~ msgid "email command empty\n" #~ msgstr "eposta komutu boþ\n" #~ msgid "Unable to open %s%s file\n" #~ msgstr "%s%s dosyasý açýlamadý\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "%s alarmlar dosyasý açýlamýyor\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "%s kategorisini düzenleyemezsiniz.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "%s kategorisini silemezsiniz.\n" #~ msgid "category name" #~ msgstr "kategori adý" #~ msgid "debug" #~ msgstr "hata ayýklama" #~ msgid "Close" #~ msgstr "Kapat" #~ msgid "none" #~ msgstr "hiçbiri/yok" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "RandevudefteriVT'da bilinmeyen yinelemeTürü bulundu\n" #~ msgid "W" #~ msgstr "Çar" #~ msgid "M" #~ msgstr "Pzt" #~ msgid "This Event has no particular time" #~ msgstr "Bu olayýn belirli bir zamaný yok" #~ msgid "Start Time" #~ msgstr "Baþlama Zamaný" #~ msgid "End Time" #~ msgstr "Bitiþ Zamaný" #~ msgid "Dismiss" #~ msgstr "Bitir" #~ msgid "Done" #~ msgstr "Bitti" #~ msgid "Add" #~ msgstr "Ekle" #~ msgid "Remove" #~ msgstr "Çýkar" #~ msgid "User name" #~ msgstr "Kullanýcý adý" #~ msgid " -v = version\n" #~ msgstr " -v = sürüm\n" #~ msgid " -h = help\n" #~ msgstr " -h = yardým\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = sorun giderme kipinde çalýþ\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = eklentileri yükleme.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = Eþzmanalyýn ve daha sonra yedekleyin, ya da yalnýzca eþzamanlayýn.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Geçersiz geometri betimlemesi: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Yardým/PayBack programý" #~ msgid "Font Selection Dialog" #~ msgstr "Yazýtipi Seçme Ýletiþim Kutusu" #~ msgid "Clear" #~ msgstr "Temizle" #~ msgid "Show private records" #~ msgstr "Özel kayýtlarý göster" #~ msgid "Hide private records" #~ msgstr "Özel kayýtlarý gizle" #~ msgid "Mask private records" #~ msgstr "Özel kayýtlarý maskele" #~ msgid "Font" #~ msgstr "Yazý tipi" #~ msgid "Go to the menu \"" #~ msgstr "Menüye git \"" #~ msgid "\" and change the \"" #~ msgstr "\" ve þunu deðiþtir \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "PC kayýt dosyasý açýlamýyor\n" #~ msgid "The first day of the week is " #~ msgstr "Haftanýn ilk günü " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Seri Baðlantý (/dev/ttyS0, /dev/pilot)" #~ msgid "One record" #~ msgstr "Bir kayýt" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "" #~ "%s: kaidedeki eþzamanlama (hotsync) düðmesine basýnýz ya da \"kill %d\"\n" #~ msgid "Finished\n" #~ msgstr "Bitti\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Son Kullanýcý Adý = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Son Kullanýcý No = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Kullanýcý Adý = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "Kullanýcý No = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "avuçiçi: kayýt sayýsý = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: kayýt sayýsý = %d\n" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr "" #~ " -i programýn açýlmasýyla birlikte kendini simgeleþtirmesini saðlar\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s bir dizin gibi görünmüyor.\n" #~ "Öyle olmalý(ydý).\n" #~ msgid "Expense: Unknown category\n" #~ msgstr "Gider: Bilinmeyen kategori\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "HOME çevre deðiþkeniniz çok uzun(>1024)\n" jpilot-1.8.2/po/da.po0000664000175000017500000026232712340261240011316 00000000000000# J-Pilot pÃ¥ dansk/J-Pilot in Danish # Copyright (C) 2001 Free Software Foundation, Inc. # Keld Simonsen , 2001. # Joe Hansen , 2010. # # Datebook -> aftalebog # mask -> maskere # memo -> notat # ToDos -> huskelister (huskeseddel) # msgid "" msgstr "" "Project-Id-Version: jpilot 1.8.0\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2010-04-01 01:01I+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Ikke nok hukommelse" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Fejl ved læsning af kategoriinformation %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Fejl ved læsning af fil: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "fejl" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Denne post er slettet.\n" "Gendan den eller kopier den for at foretage ændringer.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Kan ikke Ã¥bne filen: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kan ikke Ã¥bne filen: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Filen lader ikke til at være i formatet address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Ikke gemt" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "CSV (kommaadskilte værdier)" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "DAT/ABA (Palm Archive-formater)" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "O.k." #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Nej" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Ja" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s er en mappe" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Fejl ved Ã¥bning af fil" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Ønsker du at overskrive filen %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Overskriv fil?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Fejl ved Ã¥bning af fil: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" "Adresse eksporteret fra %s %s den %s\n" "\n" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" "Kontakt eksporteret fra %s %s den %s\n" "\n" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" "Værttegnskodning er ikke baseret pÃ¥ UTF-8.\n" " Eksporteret ldif-fil er mÃ¥ske ikke forenelig med standard\n" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Kan ikke eksportere adresse %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, c-format msgid "Category: %s\n" msgstr "Kategori: %s\n" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, c-format msgid "Private: %s\n" msgstr "Privat: %s\n" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "%s: " #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "%s\n" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-post" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Ukendt eksporttype\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "Tekst" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "CSV" #: ../address_gui.c:1562 msgid "vCard" msgstr "vCard" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "ldif" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 msgid "Last Name/Company" msgstr "Efternavn/firma" #: ../address_gui.c:1834 ../address_gui.c:3956 msgid "First Name/Company" msgstr "Fornavn/firma" #: ../address_gui.c:1837 ../address_gui.c:3959 msgid "Company/Last Name" msgstr "Firma/efternavn" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Du kan ikke ændre en post som er slettet\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Kategori er ikke lovlig\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "udfører kommando = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "Fødselsdag" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "Eksternt program ikke fundet, eller en anden fejl" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" "J-Pilot kan ikke finde det eksterne program »convert«\n" "eller en fejl opstod under kørsel af convert.\n" "Du skal mÃ¥ske installere pakken imageMagick" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "Kommando udført var »%s«\n" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "returkode var %d\n" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "lÃ¥sning mislykkedes.\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "Tilføj billede" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Kategori: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Post" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Ring" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Navnløs-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 poster" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d af %d poster" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Navn" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adresse" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Andre oplysninger" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Notat" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "Forkaster til adressedatabase\n" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Hurtig søgning: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Annuller" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Afbryd ændringerne" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Slet" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Slet den valgte post" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Fortryd sletning" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Fortryd sletning af den valgte post" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopier" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Kopier den valgte post" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Ny post" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Tilføj en ny post" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Tilføj post" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Tilføj den nye post" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Udfør ændringer" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Indsend ændringerne" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privat" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "Ændr billede" #: ../address_gui.c:4174 msgid "Remove Photo" msgstr "Fjern billede" #: ../address_gui.c:4246 msgid "Show In List" msgstr "Vis i liste" #: ../address_gui.c:4347 msgid "Reminder" msgstr "PÃ¥mindelse" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dage" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Alt" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minutter" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Timer" #: ../alarms.c:253 msgid "Remind me" msgstr "PÃ¥mindelse" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Kan ikke Ã¥bne filen: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "PÃ¥mindelse om aftale" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Tidligere aftale" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Udsat aftale" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Aftale" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot-alarm" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Er pc-filen beskadiget?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek mislykkedes - alvorlig fejl\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "omdøbning mislykkedes" #: ../category.c:407 msgid "Move" msgstr "Flyt" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Rediger kategorier" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Det maksimale antal kategorier (16) er alleree brugt" #: ../category.c:440 msgid "Enter New Category" msgstr "Indtast ny kategori" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "Rediger kategorifejl" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Du skal vælge en kategori der skal omdøbes" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Indtast nyt kategorinavn" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Du skal vælge en kategori til sletning" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Der er %d poster i %s.\n" "Ønsker du at flytte dem til %s, eller slette dem?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "ugyldig state-fil %s linje %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Kategorien %s kan ikke bruges mere end en gang" #. Category names in host character set #: ../category.c:733 msgid "Category" msgstr "Kategori" #: ../category.c:834 msgid "New" msgstr "Ny" #: ../category.c:841 msgid "Rename" msgstr "Omdøb" #: ../dat.c:512 msgid "unknown type =" msgstr "ukendt type =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "felter per rækkeoptælling != %d, ukendt format\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "feltoptælling != %d, ukendt format\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Ukendt format, fil har forkert skema\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Filskema er:" #: ../dat.c:640 msgid "It should be:" msgstr "Det bør være:" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d post %d, felt %d: ugyldig type. Forventede %d, fandt %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "læsning af fil afsluttet\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "Ukendt gentagelsestype (%d) fundet i DatebookDB\n" #: ../datebook_gui.c:239 msgid "Repeat Never" msgstr "Gentag aldrig" #: ../datebook_gui.c:240 msgid "Repeat Daily" msgstr "Gentag dagligt" #: ../datebook_gui.c:241 msgid "Repeat Weekly" msgstr "Gentag ugeligt" #: ../datebook_gui.c:242 msgid "Repeat MonthlyByDay" msgstr "Gentag mÃ¥nedligt per dag" #: ../datebook_gui.c:243 msgid "Repeat MonthlyByDate" msgstr "Gentag mÃ¥nedligt per dato" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "Gentag Ã¥rligt per dato" #: ../datebook_gui.c:245 msgid "Repeat YearlyDay" msgstr "Gentag Ã¥rligt per dag" # These days of the week are put in the buttons above the calendar and # the little buttons in the repeat weekly window. # They should be one letter if possible. The English ones get truncated to # one letter. #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "sø" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "ma" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "ti" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "on" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "to" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "fr" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "lø" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" "Startdato: %s\n" "Tidspunkt: Begivenhed" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" "Startdato: %s\n" "Tidspunkt: %s til %s" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "Ukendt" #. End Date #: ../datebook_gui.c:298 msgid "End Date: " msgstr "Slutdato: " #: ../datebook_gui.c:300 msgid "Never" msgstr "Aldrig" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "Gentag frekvens: %d\n" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "MÃ¥nedlig gentagelsesdag %d\n" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Gentag pÃ¥ følgende dage:" #: ../datebook_gui.c:330 #, c-format msgid "Number of exceptions: %d" msgstr "Antal undtagelser: %d" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" "\n" "flere..." #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "Beskrivelse:" #: ../datebook_gui.c:358 ../datebook_gui.c:385 msgid "Note:" msgstr "Note:" #: ../datebook_gui.c:360 ../datebook_gui.c:388 msgid "Alarm:" msgstr "Alarm:" #: ../datebook_gui.c:361 ../datebook_gui.c:389 msgid "Repeat Type:" msgstr "Gentag type:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 msgid "Start of Week:" msgstr "Start pÃ¥ ugen:" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "Sted:" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Beskrivelsestekst for aftale > %d, forkorter til %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Fejl" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Filen lader ikke til at være i formatet datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "DAT/DBA (Palmarkivformater)" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" "Aftalebog eksporteret fra %s %s den %s\n" "\n" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" "Kalender eksporteret fra %s %s den %s\n" "\n" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" "Værtstegnsæt er ikke baseret pÃ¥ UTF-8.\n" " Eksporteret ical-fil er mÃ¥ske ikke forenelig med standard\n" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Ukendt eksporttype" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "iKalender" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Eksporter" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Eksporter alle aftalebogsposter" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Gem som" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Gennemse" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Kategorier for aftalebog" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ingen" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Startdato" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Slutdato" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "søndag" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "mandag" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "tirsdag" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "onsdag" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "torsdag" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "fredag" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "lørdag" #: ../datebook_gui.c:1760 msgid "4th" msgstr "Fjerde" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Sidste" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Denne aftale kan enten gentages\n" "pÃ¥ den fjerde %s\n" "i mÃ¥neden, eller pÃ¥ den sidste\n" "%s af mÃ¥neden.\n" "Hvilken ønsker du?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "SpørgsmÃ¥l?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Denne hændelse gentages.\n" "Skal ændringerne kun gælde\n" "den aktuelle hændelse eller\n" "for alle gentagelserne?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Aktuelle" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dag" #: ../datebook_gui.c:2028 msgid "week" msgstr "uge" #: ../datebook_gui.c:2029 msgid "month" msgstr "mÃ¥ned" #: ../datebook_gui.c:2030 msgid "year" msgstr "Ã¥r" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Du kan ikke have en aftale som gentages hver %d %s\n" #: ../datebook_gui.c:2339 msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Du kan ikke have en aftale med ugentlig gentagelse som ikke gentages pÃ¥ en " "bestemt ugedag." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Intet tidspunkt" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Ugyldig aftale" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Slutdato pÃ¥ denne aftale\n" "er før startdatoen." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Ingen dato" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Fejl i DateBookDB eller kalenderens advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (I DAG)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Uge" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Vis aftaler denne uge" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "MÃ¥ned" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Vis aftaler per mÃ¥ned" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "kat." #: ../datebook_gui.c:5021 msgid "Time" msgstr "Tid" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Vis huskelister" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Opgave" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Forfald" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Dato:" #. Start date and time #: ../datebook_gui.c:5280 msgid "Start" msgstr "Start" #. End date and time #: ../datebook_gui.c:5297 msgid "End" msgstr "Slut" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk-mærker" #: ../datebook_gui.c:5447 msgid "Day" msgstr "dag" # msgid "WeekView" # msgstr "Pr. uge" # msgid "MonthView" # msgstr "Pr. mnd" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Ã¥r" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Denne aftale skal ikke gentages" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Forekomst hver" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "dage" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Slut-dato" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "uger" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "mÃ¥neder" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Gentag pÃ¥:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "ugedag" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "dato" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Ã¥r" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Telefonopkaldsprogram" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Præfiks 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Præfiks 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Præfiks 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Telefonnummer:" #: ../dialer.c:319 msgid "Extension" msgstr "Lokal" #: ../dialer.c:341 msgid "Dial Command" msgstr "Opkaldskommando" #: ../export_gui.c:121 msgid "File Browser" msgstr "Filbrowser" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Vælg poster der skal eksporteres" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Brug tasterne Ctrl og Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importer" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Indgangen er markeret som privat" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Indgangen er ikke markeret privat" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Kategori før import var: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Post vil blive placeret i kategori [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importer alle" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Spring over" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "" "For at ændre til en skjult mappe skal du angive det nedenunder og trykke TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importfil-type" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Filer som skal installeres" #: ../install_gui.c:372 msgid "Install" msgstr "Installer" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Installer bruger" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" "En enhed af typen PalmOS(c) kræver et brugernavn og et bruger-id for at " "kunne synkronisere ordentligt." #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" "Hvis du ønsker at synkronisere mere end 1 enhed af typen PalmOS(c) skal de " "have forskellige id og det foretrækkes ogsÃ¥, at de har forskellige " "brugernavne." #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "De fleste folk vælger deres navn eller kælenavn som brugernavn." #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Brugernavn" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "Id'et bør være et tilfældigt nummer." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Bruger-id" #: ../jpilot.c:317 msgid "Print" msgstr "Udskriv" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Der findes ikke skriverunderstøttelse for dette tillæg." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Der findes ikke understøttelse af importering for dette tillæg." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Der findes ikke understøttelse af eksportering for dette tillæg." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Annuller synkronisering" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Denne hÃ¥ndholdte har ikke det samme brugernavn eller bruger-id,\n" "som den som blev synkroniseret sidste gang.\n" "Synkronisering kan have uventede effekter.\n" "\n" "Læs brugermanualen hvis du er usikker." #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Denne hÃ¥ndholdte har en NULL-bruger-id.\n" "Enhver hÃ¥ndholdt skal have et unikt bruger-id for at kunne synkronisere\n" "ordentligt. Hvis den hÃ¥ndholdte er blevet nulstillet, \n" " sÃ¥ brug gendan fra menuen for at gendanne den.\n" "Ellers sÃ¥ tilføj et nyt brugernavn og -id\n" " brug installer bruger fra menuen.\n" "\n" "Læs brugermanualen hvis du er usikker." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Annuller synkronisering" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Synkroniser alligevel" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Synkroniseringsproblem" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Bruger: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Ukendt kommando fra synkroniseringsproces\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Om %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Fil" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Filer/afriv" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Filer/_Find" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Filer/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Filer/_Installer" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Filer/Importer" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Filer/Eksporter" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Filer/Indstillinger" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Filer/_Udskriv" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Filer/Installer bruger" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Filer/Genskab hÃ¥ndholdt" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Filer/_Afslut" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Vis" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Vis/Skjul private poster" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Vis/Vis private poster" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Vis/Masker private poster" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Vis/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Vis/Aftalebog" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Vis/Adresser" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Vis/Huskelister" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Vis/Notater" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Udvidelsesmoduler" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Internet" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Internet/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Internet/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Internet/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Internet/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Internet/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Internet/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Internet/Henvisninger" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Internet/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Internet/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Hjælp" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Hjælp/Om J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Udvidelsesmoduler/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Hjælp/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "kalender:uge_start:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Indlæser ikke udvidelsesmoduler.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Ignorerer alle alarmer.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Ignorerer tidligere alarmer.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Kan ikke Ã¥bne ledning (pipe)\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Vis private poster Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Skjul private poster Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Masker private poster Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synkroniser din Palm med pc'en Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Synk adresse" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synkroniser din Palm med pc'en\n" "og tag derefter sikkerhedskopi" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Kalender/GÃ¥ til i dag" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adressebog" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Huskeliste" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Notater" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Gør det nu" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "PÃ¥mind mig senere" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Sig det ikke igen!" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot bruger værktøjskassen GTK2-grafik. Denne version af værktøjskassen " "bruger UTF-8 til at kode tegnene med.\n" "Du bør vælge et UTF-8-tegnsæt, sÃ¥ du kan se ikke-ASCII-tegn (for eksempel " "accenter).\n" "\n" "GÃ¥ til menuen »%s« og ændr »%s«." #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 msgid "Character Set" msgstr "Tegnsæt" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Vælg en UTF-8-kodning" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +D +A +T +M format sÃ¥som dato +format.\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v viser version og afslutter.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h viser hjælp og afslutter.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f viser hjælp til formatkoder.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " - D smid adressebog.\n" #: ../jpilot-dump.c:97 #, fuzzy, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr " -i smid adressebog i iKalender-format.\n" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N drop appts for i dag i aftalebog.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD drop appts pÃ¥n Ã…Ã…Ã…Ã…/MM/DD i datobog.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A smid adressebog.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T smid huskelister som csv.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M smid memoer.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" "Advarsel: Værttegnskodning er ikke baseret pÃ¥ UTF-8.\n" "Eksporteret ical-fil er mÃ¥ske ikke forenelig med standard\n" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kan ikke Ã¥bne filen: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " J-Pilot-indstillinger er læst for port, hastighed, antal sikkerhedskopier, " "etc.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v viser version og kompileringsindstillinger og afslutter.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d viser fejlsøgningsinfo til stdout.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -P springer indlæsning af udvidelsesmoduler over.\n" #: ../jpilot-sync.c:69 #, fuzzy, c-format msgid " -b sync, and then do a backup\n" msgstr " -b synkroniser og sÃ¥ en sikkerhedskopi\n" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l loop, ellers synkroniser en gang og afslut.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {port} brug denne port til synkronisering frem for standard.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Fejl ved Ã¥bning af fil: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, c-format msgid "Error: opening conduit to handheld\n" msgstr "" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Fejl" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "HJEMME-miljøvariabel er for lang til at kunne behandles\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, fuzzy, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" "En enhed af typen PalmOS(c) kræver et brugernavn og et bruger-id for at " "kunne synkronisere ordentligt." #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Denne post er allerede slettet.\n" "Den er planlagt til at blive slettet fra Palm'en ved næste synkronisering.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Kan ikke Ã¥bne pc-postfiler\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Kunne ikke finde post til sletning\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Ukendt teksthovedversion %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Fejl ved Ã¥bning af fil: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Fejl ved læsning af fil: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Fejl ved Ã¥bning af fil: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Fejl ved læsning af %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Fejl ved læsning af pc-fil 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Fejl ved læsning af pc-fil 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Ukendt pc-teksthovedversion = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kan ikke Ã¥bne logfil, giver op.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Kan ikke Ã¥bne logfil\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Memotekst > 65535, forkorter\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Importeret memo %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Filen lader ikke til at være i formatet memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "DAT/MPA (Palmarkivformater)" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" "Notat eksporteret fra %s %s den %s\n" "\n" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" "Notater eksporteret fra %s %s den %s\n" "\n" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Kan ikke eksportere memo %d\n" #: ../memo_gui.c:641 #, c-format msgid "Memo: %ld\n" msgstr "Memo: %ld\n" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "----- Start pÃ¥ memo -----\n" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" "\n" "----- Slut pÃ¥ memo -----\n" "\n" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "MÃ¥nedlig visning" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "%s: Fejlafslutning fra g_iconv_close(%s)\n" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "%s:%s g_convert_with_iconv error: %s, buff: %s\n" #: ../otherconv.c:201 msgid "last char truncated" msgstr "sidste tegn afkortet" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "UTF_til_andet: %s\n" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "iconv: Inkonvertibel sekvens pÃ¥ sted %d i '%s'\n" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "iconv: Ufuldstændig UTF-8-sekvens pÃ¥ sted %d i '%s'\n" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "iconv: Mellemlager fyldt. Stoppede pÃ¥ sted %d i '%s'\n" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "iconv: Uventet fejl pÃ¥ sted %d i '%s'\n" #: ../password.c:281 msgid "Palm Password" msgstr "Adgangskode til Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Forkert, genindtast adgangskode til PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Indtast adgangskode til PalmOS" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "fjerner stale pidfile\n" #: ../pidfile.c:95 #, c-format msgid "create pidfile failed: %s\n" msgstr "oprettelse af pidfile mislykkedes: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "Advarsel: hotplug synkronisering deaktiveret.\n" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "uendeligt loop" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Under læsning af %s%s linje 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Forkert version\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Tjek indstillinger->tillæg\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Ã…bn mislykkedes pÃ¥ udvidelsesmodul [%s]\n" " fejl [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " udvidelsesmodul er ugyldigt: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Udvidelsesmodul:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Dette udvidelsesmodul er version (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" "Det er for gammelt til at kunne arbejde med denne version af J-Pilot.\n" # March 24, 2010 # kan ikke lige gennemskue hvorfor alle de her ens er her. # ser ud som om at der er taget højde for forskellige sprogs # mÃ¥de at gøre det pÃ¥. #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" # 24 March 2010 #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Indstillinger" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Lokale" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Opsætning" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Aftalebog" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Huskeliste" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Notat" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarm" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Tillæg" #. Shortdate #: ../prefs_gui.c:522 msgid "Short date format" msgstr "Kort datoformat" #. Longdate #: ../prefs_gui.c:535 msgid "Long date format" msgstr "Langt datoformat" #. Time #: ../prefs_gui.c:548 msgid "Time format" msgstr "Tidsformat" #. GTK colors file #: ../prefs_gui.c:568 msgid "GTK color theme file" msgstr "GTK-farvetemafil" #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Synkroniseringsproblem" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "Seriel overføringshastighed" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Antal kopier som skal arkiveres" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Vis slettede poster? (standard: nej)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Vis ændrede slettede poster? (standard: nej)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Spørg om bekræftelse af filinstallation (J-Pilot -> PDA (standard JA)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Vis pop op-værktøjsfif (standard JA)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "Brug aftalebogdatabase (Palm OS < 5.2.1)" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "Brug kalenderdatabase (Palm OS > 5.2)" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Marker dage med aftaler" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Kommenter i dag i dag-, uge- og mÃ¥nedsvisninger" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Tilføj Ã¥r pÃ¥ Ã¥rsdage i dag-, uge- og mÃ¥nedsvisninger" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Brug DateBk-notatmærker" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Understøttelsen af DateBk er deaktiveret i denne udgave" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "Brug adressedatabase (Palm OS < 5.2.1)" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "Brug kontaktdatabase (Palm OS > 5.2)" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Postkommando" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s bliver erstattet med e-post-adressen" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "Brug huskelistedatabase (Palm OS < 5.2.1)" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "Brug opgavedatabase (Palm OS > 5.2)" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Skjul afsluttede huskelister" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Skjul huskelister der endnu ikke er forfalden" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Færdiggørelsesdato for post" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Brug Manana-database" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Brug standardantal af dage forfalden" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Brug notatdatabase (Palm OS < 5.2.1)" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "Brug notatdatabase (Palm OS > 5.2)" #: ../prefs_gui.c:862 msgid "Use Memo32 database (pedit32)" msgstr "Brug notat32-database (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Ã…bn alarmvinduer for pÃ¥mindelser om aftaler" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Udfør denne kommando" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "ADVARSEL: udførelse af vilkÃ¥rlige skal-kommandoer kan være farligt!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarm-kommando" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t bliver erstattet med alarmtiden" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d bliver erstattet med alarmdatoen" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D bliver erstattet med alarmbeskrivelsen" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%d bliver erstattet med alarmnotatet" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (beskrivelseserstatning) er deaktiveret i denne udgave" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (noteerstatning) er deaktiveret i denne udgave" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Synk aftalebog" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Synk adresse" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Synk huskeliste" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Synk notat" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Synkroniser Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Brug J-OS (ikke japansk PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Synkroniserer %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Udskrivningsindstilinger" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Papirstørrelse" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Udskriv dagsplan" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Udskriv ugeplan" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Udskriv mÃ¥nedsplan" #: ../print_gui.c:264 msgid "Selected record" msgstr "Valgt post" #: ../print_gui.c:268 msgid "All records in this category" msgstr "Alle poster i denne kategori" #: ../print_gui.c:272 msgid "Print all records" msgstr "Udskriv alle poster" #: ../print_gui.c:294 msgid "One record per page" msgstr "En post per side" #: ../print_gui.c:310 msgid "Blank lines between each record" msgstr "Tomme linjer mellem hver post" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Udskriftskommando (f.eks. lpr, eller cat > fil.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Genskab hÃ¥ndholdt" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "Kunne ikke konvertere filnavn til GTK-visning\n" #: ../restore_gui.c:175 #, fuzzy msgid "See console log to find which file will not be restored\n" msgstr "Se konsollog for at se hvilke filer der ikke bliver gendannet" #: ../restore_gui.c:177 #, c-format msgid "File %s will not be restored\n" msgstr "Fil %s vil ikke blive gendannet\n" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Genskab indhold pÃ¥ hÃ¥ndholdt ved:" #: ../restore_gui.c:247 msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. Vælg de programmer du vil genskabe. Standarden er alle." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Indtast brugernavn og bruger-id." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Tryk pÃ¥ knappen O.k." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Dette vil overskive alle data, som der aktuelt er pÃ¥ den hÃ¥ndholdte." #: ../search_gui.c:142 msgid "datebook" msgstr "aftalebog" #: ../search_gui.c:144 msgid "calendar" msgstr "kalender" #: ../search_gui.c:231 msgid "address" msgstr "adresse" #: ../search_gui.c:233 msgid "contact" msgstr "kontakt" #: ../search_gui.c:302 msgid "todo" msgstr "huskeliste" #: ../search_gui.c:359 msgid "memo" msgstr "notat" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "notat" #: ../search_gui.c:419 msgid "plugin ?" msgstr "modul ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Ingen poster fundet" #: ../search_gui.c:598 msgid "Search" msgstr "Søg" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Søg efter: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Skeln mellem store/smÃ¥ bogstaver" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "kunne ikke Ã¥bne lÃ¥sningsfil\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "lÃ¥sning mislykkedes.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "synkroniseringsfil er lÃ¥st af pid %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "fjernelse af lÃ¥s mislykkedes\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "synkronisering er lÃ¥st af pid %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Kontroller serielporten og indstillingerne\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Kunne ikke læse hjemmemappe\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (oprettet af '%s') er opdateret, dropper overføring.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Henter '%s' (oprettet af '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Fejlede, kunne ikke oprette filen %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Fejlede, kunne ikke sikkerhedskopiere databasen %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "O.k.\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Springer %s over (oprettet af '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installerer %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Kunne ikke Ã¥bne fil: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Kunne ikke synkronisere fil: '%s': Fil ødelagt?\n" #: ../sync.c:1524 #, c-format msgid "(Creator ID '%s')... " msgstr "(Oprettet af '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(Oprettet af '%s')..." #: ../sync.c:1530 #, fuzzy, c-format msgid "(SDcard dir %s)... " msgstr "(Oprettet af '%s')..." #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Kunne ikke Ã¥bne fil: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installering af %s mislykkedes" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Mislykkedes.\n" #: ../sync.c:1625 #, c-format msgid "Installed %s" msgstr "%s installeret" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Fejl ved indhentning af appinfo %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Fejl ved udpakning af appinfo %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Fejl ved læsning af appinfo-blok for %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Kunne ikke tilføje kategori %s pÃ¥ ekstern.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "For mange kategorier pÃ¥ ekstern.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Alle poster pÃ¥ skrivebordet i %s vil blive flyttet til %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synkroniserer %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Udskrev en %s-post." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Udskrivning af en %s-post mislykkedes." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Sletning af en %s-post mislykkedes." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Slettede en %s-post." #: ../sync.c:2122 ../sync.c:2475 #, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Synkroniseringskonflikt: Duplikerede en %s-post." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Udskrev en %s-post." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Udskrivning af en %s-post mislykkedes." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Sletning af en %s-post mislykkedes." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Slettede en %s-post." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "Synkroniseringskonflikt: Duplikerede en %s-post." #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "Synkroniseringskonflikt: En %s-post skal manuelt sammenføjes\n" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord mislykkedes\n" "Det kan være fordi posten allerede var slettet pÃ¥ Palm'en\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Afsluttede installation af brugerinformation.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Synkroniserer pÃ¥ enhed %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Tryk pÃ¥ HotSync-knappen nu\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Seneste synket brugernavn -->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Seneste synket bruger-id -->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Dette brugernavn -->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Denne bruger-id-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Brugernavn er \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "Bruger-id er %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "Seneste SyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Denne pc = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Synkronisering annulleret\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Afsluttede genskabelse af hÃ¥ndholdt.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Du skal mÃ¥ske synkronisere for at opdatere J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Udfører hurtig synkronisering\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Udfører en langsom synkronisering\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Tak for at du bruger J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Færdig.\n" #: ../sync.c:3446 #, fuzzy, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" "%s: Synkroniseringsproces er allerede i gang (proces-id = %d\n" ")" #: ../sync.c:3447 #, fuzzy, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" "%s: Tryk pÃ¥ hotsync-knappen pÃ¥ stilladset\n" " eller stop synkroniseringen ved at taste »kill %d« pÃ¥ kommandolinjen\n" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Afsluttede med status %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Beskrivelsestekst for huskeliste > %d, forkorter til %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Notetekst for huskeliste > %d, forkorter til %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Forfaldsdato" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Filen lader ikke til at være i todo.dat-format\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "DAT/TDA (Arkivformater til Palm)" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" "Huskeliste eksporteret fra %s %s den %s\n" "\n" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Kan ikke eksportere huskeliste %d\n" #: ../todo_gui.c:766 #, c-format msgid "Due Date: None\n" msgstr "Forfaldsdato: Ingen\n" #: ../todo_gui.c:769 #, c-format msgid "Due Date: %s\n" msgstr "Forfaldsdato: %s\n" #: ../todo_gui.c:771 #, c-format msgid "Priority: %d\n" msgstr "Prioritet: %d\n" #: ../todo_gui.c:772 #, c-format msgid "Completed: %s\n" msgstr "Udført: %s\n" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "Beskrivelse: %s\n" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" "Note: %s\n" "\n" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Prioritet uden for interval\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Ingen dato" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Udført" #: ../todo_gui.c:2418 msgid "Priority:" msgstr "Prioritet:" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Forfaldsdato:" #: ../utils.c:330 msgid "Today" msgstr "I dag" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Kunne ikke finde top DB-fil %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " er mÃ¥ske ikke installeret.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Kan ikke oprette mappe %s\n" #: ../utils.c:623 #, c-format msgid "%s is not a directory\n" msgstr "%s er ikke en mappe\n" #: ../utils.c:628 #, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Kunne ikke fÃ¥ skriveadgang til mappe %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Gem ændret post?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Vil du gemme ændringerne i denne post?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Gem ny post?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Ønsker du at gemme denne nye post?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "uendeligt loop, afbryder\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p springer indlæsning af udvidelsesmoduler over.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" " -a ignorerer oversete alarmer siden sidste gang programmet blev kørt.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignorerer alle alarmer tidligere og fremover.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, fuzzy, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr " -geometry bruger x-geometri argument pÃ¥ hovedvindue\n" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " De miljøvariabler som PILOTPORT og PILOTRATE bruges til at angive\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " hvilken port der skal synkroniseres pÃ¥ og med hvilken hastighed.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " hvis PILOTPORT ikke er angivet er standarden /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Fejl ved læsning af fil" #: ../utils.c:1973 msgid "Date compiled" msgstr "Dato for kompilering" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Kompileret med disse tilvalg:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Installeret sti" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link version" #: ../utils.c:1982 msgid "USB support" msgstr "USB-understøttelse" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "ja" #: ../utils.c:1984 msgid "Private record support" msgstr "Understøttelse af private poster" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "nej" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk-understøttelse" #: ../utils.c:1996 msgid "Plugin support" msgstr "Understøttelse af udvidelsesmodul" #: ../utils.c:2002 msgid "Manana support" msgstr "Understøttelse af Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS-understøttelse (fremmed sprog)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2-understøttelse" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Kan ikke indhente HJEMME-miljøvariabel\n" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "HJEMME-miljøvariabel er for lang til at kunne behandles\n" #: ../utils.c:2567 msgid "Edit Categories..." msgstr "Rediger kategorier..." #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "Pc-id er 0.\n" #: ../utils.c:3234 #, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Oprettede en ny pc-id. Den er %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "Ugyldig UTF-8-kodning i eksportstreng\n" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "I dag er det %A %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "I dag er det %%A %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" "Ukorrekt teksthovedformat for CSV-import\n" "Tjek linje 1 i filen %s\n" "Afbryder import\n" #: ../utils.c:3805 #, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Fejl ved skrivning af versionteksthoved til filen: %s%s\n" #: ../utils.c:3810 #, c-format msgid "Error writing next id to file: %s%s" msgstr "Fejl ved skrivning af næste id til filen: %s%s" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Ugentlig visning" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australien" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Østrig" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belgien" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brasilien" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Danmark" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finland" #: ../Expense/expense.c:103 msgid "France" msgstr "Frankrig" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Tyskland" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Island" #: ../Expense/expense.c:107 msgid "India" msgstr "Indien" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonesien" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irland" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italien" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japan" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Korea" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxembourg" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malaysia" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mexico" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Holland" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "New Zealand" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norge" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "P.R.C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filippinerne" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapore" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Spanien" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Sverige" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Schweitz" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taiwan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Thailand" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Storbritannien" #: ../Expense/expense.c:128 msgid "United States" msgstr "USA" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Udgift" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Flyrejse" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Morgenmad" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Bus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Forretningsfrokoster" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Billeje" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Middag" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Fornøjelse" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Benzin" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Gaver" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Uforudsete" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Tøjvask" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limousine" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Overnatning" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Frokost" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Kørsel" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parkering" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Porto" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Snack" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metro" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Leverencer" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Drikkepenge" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Told" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Tog" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Udgift: Ukendt udgiftstype\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Udgift: Ukendt betalingstype\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Kontant" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Check" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Kreditkort" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Forudbetalt" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 msgid "Type" msgstr "Type" #: ../Expense/expense.c:1618 msgid "Amount" msgstr "Beløb" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Kategori:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Type:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Betaling:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Valuta:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "MÃ¥ned:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Dag:" # msgid "WeekView" # msgstr "Pr. uge" # msgid "MonthView" # msgstr "Pr. mnd" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Ã…r:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Beløb:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Leverandør:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "By:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Deltagere" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s\n" "\n" "Udgiftsudvidelsesmodulet til J-Pilot blev skrevet af\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org\n" "http://jpilot.org" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size for lille\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Ugyldigt, indtast KeyRing-kode igen" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Indtast en NY KeyRing-adgangskode" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Indtast KeyRing-adgangskode" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: Fil %s blev ikke fundet.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: Forsøg synkronisering.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, fuzzy, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" "%s\n" "\n" "Udvidelsesmodulet KeyRing til J-Pilot blev skrevet af\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" "\n" "KeyRing er et gratis PalmOS-program der kan gemme\n" "adgangskoder og anden information i krypteret form\n" "http://gnukeyring.sourceforge.net" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" "Nøgler eksporteret fra %s %s den %s\n" "\n" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, c-format msgid "Can't export key %d\n" msgstr "Kan ikke eksportere nøgle %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Ændr\n" "KeyRing-\n" "adgangskode" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Ændret" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Konto" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "navn: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "konto: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "adgangskode: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "sidst ændret: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Opret adgangskode" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "SyncTime" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s\n" "\n" "Udvidelsesmodulet SyncTime til J-Pilot blev skrevet af\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org\n" "http://jpilot.org\n" "\n" "SyncTime VIL IKKE virke med PalmOS 3.3!" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "synctime: Palm OS version 3.25 og 3.30 understøtter ikke SyncTime\n" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "synctime: Indstiller IKKE tiden pÃ¥ piloten\n" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "synctime: Indstiller tiden pÃ¥ piloten... " #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Færdig\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Overskriv fil?" #~ msgid "W" #~ msgstr "U" #~ msgid "M" #~ msgstr "M" #~ msgid "Serial Port" #~ msgstr "Serielport" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i lader programmet ikonificere sig selv ved opstart.\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Din HJEMME-miljøvariabel er for lang(>1024)\n" #, fuzzy #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ " [ [-v] || [-h] || [-d] || [-a] || [-A]\n" #~ " -v viser versionsnummer og afslutter.\n" #~ " -h viser hjælp og afslutter.\n" #~ " -d viser fejlsøgningsoplysninger pÃ¥ stdud.\n" #~ " -p undlader at indlæse indstik.\n" #~ " -a ignorerer ubehandlede alarmer, fra siden sidste gang programmet blev " #~ "kørt.\n" #~ " -A ignorer alle alarmer, gamle og fremtidige\n" #~ " Miljøvariablene PILOTPORT og PILOTRATE bruges til at angive hvilken\n" #~ " port der skal synkroniseres pÃ¥ samt med hvilken hastighed.\n" #~ " Hvis PILOTPORT ikke er sat, benyttes /dev/pilot.\n" jpilot-1.8.2/po/POTFILES0000664000175000017500000000137412336026331011540 00000000000000 ../address.c \ ../address_gui.c \ ../alarms.c \ ../calendar.c \ ../category.c \ ../contact.c \ ../dat.c \ ../datebook.c \ ../datebook_gui.c \ ../dialer.c \ ../export_gui.c \ ../import_gui.c \ ../install_gui.c \ ../install_user.c \ ../jpilot.c \ ../jpilot-dump.c \ ../jpilot-merge.c \ ../jpilot-sync.c \ ../libplugin.c \ ../log.c \ ../memo.c \ ../memo_gui.c \ ../monthview_gui.c \ ../otherconv.c \ ../password.c \ ../pidfile.c \ ../plugins.c \ ../prefs.c \ ../prefs_gui.c \ ../print.c \ ../print_gui.c \ ../print_headers.c \ ../print_logo.c \ ../restore_gui.c \ ../search_gui.c \ ../sync.c \ ../todo.c \ ../todo_gui.c \ ../utils.c \ ../weekview_gui.c \ ../Expense/expense.c \ ../KeyRing/keyring.c \ ../SyncTime/synctime.c jpilot-1.8.2/po/pt_BR.po0000664000175000017500000026223712340261240011740 00000000000000# Brazilian Portuguese translation of J-Pilot. # This file is distributed under the same license as the J-Pilot package. # # Leonardo Ferreira Fontenelle , 2007. msgid "" msgstr "" "Project-Id-Version: Jpilot 0.99.9\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2007-06-17 22:59-0300\n" "Last-Translator: Frederico Goncalves Guimaraes \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Portuguese\n" "X-Poedit-Country: BRAZIL\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: KBabel 1.11.4\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Memória insuficiente" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Erro lendo informações de categoria %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Erro abrindo arquivo: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "erro" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "O registro foi excluído.\n" "Reverta sua exclusão ou copie-o para fazer alterações.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Não foi possível abrir arquivo: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Não foi possível abrir arquivo: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Arquivo não parece seguir o formato address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Não arquivado" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Não" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Sim" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s é um diretório" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Erro Abrindo Arquivo" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Deseja sobrescrever o arquivo %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Sobrescrever Arquivo?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Erro abrindo arquivo: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Não foi possível exportar endereço %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Categoria:" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Particular" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Tipo de exportação desconhecido\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Nome/Empresa" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Nome/Empresa" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Empresa/Nome" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Você não pode modificar um registro excluído\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Categoria ilegal\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "executando comando = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "falha em travar\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Categoria:" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Escr." #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Disc." #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Sem nome-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 registro" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d de %d registros" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Nome" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Endereço" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Outro" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Nota" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefone" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Localizar:" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Cancelar" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Cancela as modificações" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Excluir" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Exclui o registro selecionado" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Desfazer Exclusão" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Desfaz a exclusão do registro" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Copiar" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Copia o registro selecionado" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Novo Registro" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Adiciona um novo registro" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Adicionar Registro" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Adiciona o novo registro" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Aplicar Mudanças" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Aplica as modificações" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Particular" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Alterado" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Remover" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Mostrar\n" "na lista" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Lembrar-me" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dias" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Todas" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minutos" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Horas" #: ../alarms.c:253 msgid "Remind me" msgstr "Lembrar-me" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Não foi possível abrir arquivo: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Lembrete de Compromisso" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Compromisso Passado" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Compromisso Adiado" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Compromisso" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Alarme J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Arquivo corrompido no PC?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "Falha no fseek - erro fatal\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "falha ao renomear" #: ../category.c:407 msgid "Move" msgstr "Mover" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Editar Categorias" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "O número máximo de categorias (16) já foi atingido" #: ../category.c:440 msgid "Enter New Category" msgstr "Digite Nova Categoria" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "Erro ao Editar Categorias" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Você deve selecionar uma categoria para renomear" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Digite um Novo Nome de Categoria" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Você deve selecionar uma categoria para excluir" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Existem %d registros em %s.\n" "Você gostaria de movê-los para %s, ou excluí-los?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "estado inválido no arquivo %s, linha %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "A categoria %s não pode ser usada mais de uma vez" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Categoria:" #: ../category.c:834 msgid "New" msgstr "Nova" #: ../category.c:841 msgid "Rename" msgstr "Renomear" #: ../dat.c:512 msgid "unknown type =" msgstr "tipo desconhecido =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "conta de campos por coluna != %d, formato desconhecido\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "conta de campos != %d, formato desconhecido\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Formato desconhecido, arquivo tem esquema incorreto\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Esquema de arquivo é:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Deveria ser:" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" "%s:%d Registro %d, campo %d: Tipo inválido. Esperava-se %d, encontrou-se %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "leitura do arquivo terminada\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "Foi encontrado repeatType (%d) desconhecido em DatebookDB\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Repetir por:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Repetir nos dias:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Repetir por:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Repetir nos dias:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Repetir nos dias:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Repetir nos dias:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Dom" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Seg" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ter" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Qua" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Qui" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Sex" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Sáb" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Terminar em" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Repetir nos dias:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "número de registros = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Nota" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarme" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Repetir por:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Dia da semana" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Texto descritor de compromisso > %d, truncando para %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Erro" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Arquivo não parece seguir o formato datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Tipo de exportação desconhecido" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportar" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exportar Todos os Registros de Calendário" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Salvar como" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Procurar" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Categorias do Calendário" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Nenhuma" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Começar em" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Terminar em" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Domingo" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Segunda-feira" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Terça-feira" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Quarta-feira" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Quinta-feira" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Sexta-feira" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Sábado" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4ª" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Última" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Este compromisso pode ser\n" "repetido na 4ª %s do mês\n" "ou na última %s do mês.\n" "O que você prefere?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Dúvida?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Este é um evento repetido.\n" "Você quer aplicar as mudanças\n" "no evento ATUAL, ou em\n" "TODAS as ocorrências do evento?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Atual" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dia" #: ../datebook_gui.c:2028 msgid "week" msgstr "semana" #: ../datebook_gui.c:2029 msgid "month" msgstr "mês" #: ../datebook_gui.c:2030 msgid "year" msgstr "ano" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Não é possível ter compromissos que se repitam a cada %d %s(s)\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Não é possível ter um compromisso semanal que não se repita em nenhum dia da " "semana." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Sem tempo" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Compromisso Inválido" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "A data de término deste compromisso\n" "vem antes da data de início." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Sem Data" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Erro no DateBookDB advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (HOJE)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Semana" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Ver compromissos por semana" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Mês" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Ver compromissos por mês" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Categorias" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Tempo" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Mostrar Tarefas" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Tarefa" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Prazo" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarme" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Data:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Começa em" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Fim em" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "Etiquetas DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Dia" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Ano" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Este evento não se repete" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Repetir a cada" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Dia(s)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Fim em" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Semana(s)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Mês(es)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Repetir por:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Dia da semana" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Dia do mês" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Ano(s)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Discador" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Prefixo 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Prefixo 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Prefixo 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Nº de telefone:" #: ../dialer.c:319 msgid "Extension" msgstr "Extensão" #: ../dialer.c:341 msgid "Dial Command" msgstr "Comando de Discagem" #: ../export_gui.c:121 msgid "File Browser" msgstr "Navegador de Arquivos" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Selecione registros a serem exportados" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Usar Teclas Control e Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importar" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Registro foi marcado como particular" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Registro não foi marcado como particular" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Categoria antes da importação era: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Registros serão colocados na categoria [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importação Tudo" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Ignorar" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Para mudar para um diretório oculto, digite-o abaixo e pressione TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importar arquivo do tipo" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Arquivos a serem instalados" #: ../install_gui.c:372 msgid "Install" msgstr "Instalar" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Instalar Usuário" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" "O dispositivo PalmOS(c) precisa de um nome de usuário e um ID de usuário " "para sincronizar corretamente." #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" "Caso você deseje sincronizar mais de um dispositivo PalmOS(c), cada um " "deverá ter seu ID e, preferencialmente, nome de usuário próprios." #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "Várias pessoas utilizam seu nome ou apelido como nome de usuário." #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Nome do usuário" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "Esse ID deve ser um número aleatório." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID do usuário" #: ../jpilot.c:317 msgid "Print" msgstr "Imprimir" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Este canal não tem suporte para impressão." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Este canal não tem suporte para importação." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Este canal não tem suporte para exportação." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Cancelar Sincronização" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Este dispositivo não tem o mesmo nome de usuário\n" "ou ID de usuário que aquele sincronizado da última\n" "vez. Sincronizar pode trazer efeitos indesejados.\n" "Se você não tiver certeza, leia o manual do usuário." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Este dispositivo tem uma ID de usuário NULL.\n" "Todo dispositivo palm precisa deve ter uma ID única de usuário\n" "para sincronizar apropriadamente. Se o disposito teve um\n" "\"hard reset\", escolha restaurar do menu para restaurá-lo,\n" "ou use o pilot-xfer.\n" "Para adicionar um nome ou ID de usuário, use a ferramenta\n" "de install-user a partir da linha de comando ou do menu.\n" "Se você não tiver certeza, leia o manual do usuário." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Cancelar Sincronização" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Sincronizar Mesmo Assim" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Problema de Sincronização" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Usuário:" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Comando desconhecido no processo de sincronização\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Sobre %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Arquivo" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Arquivo/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Arquivo/_Localizar" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Arquivo/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Arquivo/_Instalar" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Arquivo/Importar" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Arquivo/Exportar" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Arquivo/P_referências" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Arquivo/Im_primir" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Arquivo/Instalar Usuário" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Arquivo/Restaurar Dispositivo" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Arquivo/_Sair" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Ver" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Ver/Esconder os Registros Particulares" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Ver/Mostrar os Registros Particulares" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Ver/Encobrir Registros Particulares" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Ver/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Ver/Calendário" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Ver/Contatos" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Ver/Tarefas" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Ver/Memos" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Plug-ins" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/Aj_uda" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Ajuda/_Sobre" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Plug-ins/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/Aj_uda/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Não carregando plug-ins.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Ignorando todos os alarmes.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Ignorando alarmes passados.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Não foi possível abrir pipe\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Mostra registros particulares Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Oculta registros particulares Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Encobre registros particulares Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Sincroniza seu palm com o desktop Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Endereço de sincronização" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Sincroniza seu palm com o desktop\n" "então faz um backup" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Calendário/Ir para Hoje" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Contatos" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Tarefas" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Memos" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Fazer agora" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Lembrar-me depois" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Não avisar de novo!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot usa o kit de ferramentas gráficas GTK2. Esta versão do kit usa UTF-8 " "para codificar caracteres.\n" "Você precisa selecionar a codificação UTF-8 para ver os caracteres não ASCII " "(p. ex. com acentos).\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Conjunto de caracteres" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Selecionar uma codificação UTF-8" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " Formato +D +A +T +M, como date +format.\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v mostra a versão e sai.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h mostra a ajuda e sai.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f mostra a ajuda para códigos de formato.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -D despeja o Calendário.\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N despeja compromissos de hoje do Calendário.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NAAAA/MM/DD despeja compromissos de AAAA/MM/DD do Calendário.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A despeja os Contatos.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T despeja a lista de Tarefas como CSV.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M despeja os Memos.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Não foi possível abrir arquivo: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " As preferências do J-Pilot determinam a porta, a taxa de transferência, " "etc.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v exibe a versão e as opções de compilação e sai.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d exibe informações de depuração na saída padrão.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -p não carrega os plug-ins.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = loop, senão sincroniza uma vez e sai.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p {porta} = Usar esta porta para sincronizar em vez de ler as " "preferências.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Erro ao abrir arquivo: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Erro ao abrir arquivo: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Erro" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "Sua variável de ambiente HOME é longa demais para mim\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, fuzzy, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" "O dispositivo PalmOS(c) precisa de um nome de usuário e um ID de usuário " "para sincronizar corretamente." #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Este registro já foi excluído.\n" "Na próxima sincronização, será excluído do Palm.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Não foi possível abrir o arquivo de registros do PC\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Não foi possível encontrar registro a ser excluído\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Cabeçalho desconhecido versão %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Erro abrindo arquivo: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Erro lendo arquivo: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Erro ao abrir arquivo: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Erro lendo %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Erro ao ler arquivo 1 de PC\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Erro ao ler arquivo 2 de PC\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Versão de cabeçalho do PC desconhecida = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Não foi possível abrir arquivo de log, desistindo.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Não foi possível abrir arquivo de log\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Texto de Memo > 65535, truncando\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Memos Importados %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Arquivo não parece seguir o formato memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Não foi possível exportar memo %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Memos" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Visão do Mês" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "Última alteração:" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Senha do Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Incorreto; Digite Novamente a Senha do Palm" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Digite a Senha do Palm" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Erro abrindo arquivo: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "loop infinito" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Ao ler %s%s linha 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Versão Incorreta\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Verifique Preferências->Canais\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Falha ao abrir o plug-in [%s]\n" " erro [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " plug-in é inválido: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Plug-in:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "A versão deste plug-in é (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "Velho demais para funcionar nesta versão do J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d de %B de %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y-%B-%d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Preferências" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Localidade" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Configurações" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Calendário" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Tarefas" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Memos" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarmes" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Canais" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Formato curto de data" #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Formato longo de data" #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Formato da hora" #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Meu arquivo de core GTK é " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Problema de Sincronização" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Número de backups a serem arquivados" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Mostrar registros excluídos (padrão: não)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Mostrar registros excluídos modificados (padrão: não)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Pedir confirmação para instalar arquivo (J-Pilot -> PDA) (padrão: sim)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Mostrar dicas de ferramentas (padrão: sim)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Destacar no calendário dias com compromisso" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "Anotar o dia de hoje nas visões de dia, semana e mês" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "Anexar o ano em aniversários nas visões de dia, semana e mês" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Usar etiquetas de nota DateBk" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Suporte a DateBk desativado nesta compilação" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Comando de e-mail" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s é substituído pelo endereço eletrônico" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Ocultar tarefas concluídas" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Ocultar tarefas cujo prazo não venceu" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Registrar data de conclusão" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Usar banco de dados Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Usar número padrão de dias após prazo" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Usar Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Abrir janelas de alarme para lembretes de comprimossos" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Executar este comando" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "AVISO: executar comandos arbitrários de shell pode ser perigoso!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Comando de Alarme" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t é substituído pela hora do alarme" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d é substituído pela data do alarme" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D é substituído pela descrição do alarme" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N é substituído pela nota do alarme" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (descrição do alarme) está desativado nesta compilação" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (nota do alarme) está desativado nesta compilação" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Sincronizar calendário" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Endereço de sincronização" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Sincronizar tarefas" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Sincronizar memos" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Sincronizar Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Usar J-OS (PalmOS não japonês:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Sincronizar %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Opções de Impressão" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Tamanho do Papel" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Impresso diário" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Impresso semanal" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Impresso mensal" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Registro %s excluído." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Todos os registros nesta categoria" #: ../print_gui.c:272 msgid "Print all records" msgstr "Imprimir todos os registros" #: ../print_gui.c:294 msgid "One record per page" msgstr "Um registro por página" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Linhas em branco entre cada registro" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Comando de impressão (p.ex. lpr, o cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Restaurar Dispositivo" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Arquivos a serem instalados" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Para restaurar seu dispositivo:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Escolha todas as aplicações que deseja restaurar. O padrão são todas." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Digite o nome de usuário e a ID." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Pressione o botão OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Isso vai sobrescrever os dados atuais no dispositivo." #: ../search_gui.c:142 msgid "datebook" msgstr "calendário" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "contatos" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "tarefas" #: ../search_gui.c:359 msgid "memo" msgstr "memos" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "memos" #: ../search_gui.c:419 msgid "plugin ?" msgstr "plug-in?" #: ../search_gui.c:499 msgid "No records found" msgstr "Nenhum registro encontrado" #: ../search_gui.c:598 msgid "Search" msgstr "Pesquisar" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Pesquisar por:" #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Dif. maiúsc./minúsc." #: ../sync.c:118 msgid "open lock file failed\n" msgstr "falha ao abrir o arquivo de trava\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "falha em travar\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "arquivo de sincronização travado pelo pid %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "falha em destravar\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "sincronização travada pelo pid %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Verifique sua porta serial e as configurações\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Não foi possível ler a pasta pessoal\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID de Criador '%s') é atual, ignorando.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Baixando '%s' (ID de Criador '%s')..." #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Falha: não foi possível criar arquivo %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Falha: não foi possível copiar o banco de dados %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Ignorando %s (ID de Criados '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Instalando %s" #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Não foi possível abrir o arquivo '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Não foi possível abrir o arquivo '%s': arquivo corrompido?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ID do Criador é '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ID do Criador é '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Não foi possível abrir arquivo: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Falha na instalação de %s" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Falha.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s instalado" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Erro ao obter informações da aplicação %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Erro ao desempacotar informações da aplicação %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Erro ao ler bloco appinfo para %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Não foi possível adicionar categoria %s ao dispositivo.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Categorias demais no dispositivo.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Todos os registros do computador em %s serão movidos para %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Sincronizando %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Registro %s gravado." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Falha ao gravar um registro %s." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Falha ao excluir um registro %s." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Registro %s excluído." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Registro %s excluído." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Registro %s gravado." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Falha ao gravar um registro %s." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Falha ao excluir um registro %s." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Registro %s excluído." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "Falha em dlp_DeleteRecord\n" "Isso pode ser causado por um registro já excluído no Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "As informações do usuário foram instaladas.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Sincronizando com dispositivo %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Pressione o botão HotSync agora\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Nome do último usuário sincronizado-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ID do último usuário sincronizado-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Nome deste usuário-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " ID deste usuário-->\"%d\"\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Nome de usuário é \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "ID de usuário é %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Este PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Sincronização cancelada\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "A restauração do dispositivo foi concluída.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Você pode precisar sincronizar para atualizar o J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Fazendo uma sincronização rápida.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Fazendo uma sincronização lenta.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Obrigado por utilizar o J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Concluído.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Saindo com estado %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Texto de descrição de tarefas > %d, truncando em %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Texto de nota da tarefa > %d, truncando em %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Prazo" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Arquivo não parece ter formato todo.dat\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Não foi possível exportar tarefa %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Prazo" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Prazo" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioridade:" #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Concluída" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Prioridade fora de faixa\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Sem data" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Concluída" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioridade:" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Prazo:" #: ../utils.c:330 msgid "Today" msgstr "Hoje" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Não foi possível localizar arquivo DB vazio %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " pode não estar instalado.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Não foi possível criar o diretório %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s é um diretório" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Não me é possível gravar arquivos no diretório %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Salvar Registro Alterado?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Você deseja salvar as alterações deste registro?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Salvar Novo Registro?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Você deseja salvar este novo registro?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "loop infinito, quebrando\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p não carrega os plug-ins.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ignora os alarmes perdidos desde a última execução do programa.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignora todos os alarmes, passados e futuros.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " As variáveis PILOTPORT e PILOTRATE são usadas para especificar\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " através de qual porta sincronizar, e com que velocidade.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Se PILOTPORT não estiver definida, o padrão é /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Erro lendo arquivo" #: ../utils.c:1973 msgid "Date compiled" msgstr "Data de compilação" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Compilado com as opções:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Caminho da instalação" #: ../utils.c:1978 msgid "pilot-link version" msgstr "Versão do pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Suporte a USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "sim" #: ../utils.c:1984 msgid "Private record support" msgstr "Suporte a registros particulares" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "não" #: ../utils.c:1990 msgid "Datebk support" msgstr "Suporte a datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Suporte a plug-ins" #: ../utils.c:2002 msgid "Manana support" msgstr "Suporte a manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Suporte a NLS (línguas estrangeiras)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Suporte a GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Não foi possível obter a variável HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "Sua variável de ambiente HOME é longa demais para mim\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Editar Categorias" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "ID do PC é 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Gerei uma nova ID de PC: %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Hoje é %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Hoje é %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Erro ao escrever cabeçalho de PC no arquivo: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Erro ao escrever próxima ID no arquivo: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Visão semanal" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Austrália" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Ãustria" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Bélgica" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brasil" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canadá" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Dinamarca" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finlândia" #: ../Expense/expense.c:103 msgid "France" msgstr "França" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Alemanha" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Islândia" #: ../Expense/expense.c:107 msgid "India" msgstr "Ãndia" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonésia" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irlanda" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Itália" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japão" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Coréia" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxemburgo" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malásia" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "México" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Países Baixos" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nova Zelândia" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Noruega" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "China" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipinas" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Cingapura" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Espanha" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Suécia" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Suíça" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taiwan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Tailândia" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Reino Unido" #: ../Expense/expense.c:128 msgid "United States" msgstr "Estados Unidos" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Despesas" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Passagens aéreas" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Café da manhã" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Ônibus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Refeições a negócios" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Aluguel de carro" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Jantar" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Diversão" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Combustível" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Presentes" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Imprevistos" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Lavanderia" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limusine" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Alojamento" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Almoço" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Milhagem" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Estacionamento" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Postagem" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Lanche" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metrô" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Material" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Táxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefone" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Gorjetas" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Taxas" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Trem" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Despesas: tipo de despesa desconhecido\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Despesas: tipo de pagamento desconhecido\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Dinheiro" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Cheque" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Cartão de Crédito" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "MasterCard" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Pré-pago" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Tipo:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Quantia:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Categoria:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Tipo:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Pagamento:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Moeda:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Mês:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Dia:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Ano:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Quantia:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Fornecedor:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Cidade:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Participantes" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size pequeno demais\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Incorreto, Digite Novamente Senha KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Digite uma NOVA Senha KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Digine Senha KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: arquivo %s não encontrado.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: Tente Sincronizar.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Não foi possível exportar memo %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Alterar\n" "Senha\n" "KeyRing" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Alterado" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Conta" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "Nome:" #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "Conta:" #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "Senha:" #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "Última alteração:" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Gerar Senha" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "SyncTime" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "synctime: as versões 3.25 e 3.30 do Palm OS não suportam o SyncTime\n" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "synctime: NÃO está acertando as horas no pilot\n" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "synctime: Acertando as horas no pilot... " #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Concluído\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Sobrescrever Arquivo?" #~ msgid "Field" #~ msgstr "Campo" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Visualização rápida" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Não foi possível abrir arquivo %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Não foi possível abrir arquivo %s.alarms\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Você não pode editar a categoria %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Você não pode excluir a categoria %s.\n" #~ msgid "category name" #~ msgstr "nome da categoria" #~ msgid "debug" #~ msgstr "depurar" #~ msgid "Close" #~ msgstr "Fechar" #~ msgid "none" #~ msgstr "nenhum" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "Foi encontrado repeatType desconhecido em DatebookDB\n" #~ msgid "W" #~ msgstr "Q" #~ msgid "M" #~ msgstr "S" #~ msgid "This Event has no particular time" #~ msgstr "Evento sem hora específica" #~ msgid "Start Time" #~ msgstr "Início" #~ msgid "End Time" #~ msgstr "Término" #~ msgid "Dismiss" #~ msgstr "Descartar" #~ msgid "Done" #~ msgstr "Concluído" #~ msgid "Add" #~ msgstr "Adicionar" #~ msgid "User name" #~ msgstr "Nome do usuário" #~ msgid " -v = version\n" #~ msgstr " -v = versão\n" #~ msgid " -h = help\n" #~ msgstr " -h = ajuda\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = executar em modo de depuração\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = não carregar plug-ins.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = Sincronizar e então fazer uma cópia, senão apenas sincronizar.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Especificação geométrica inválida: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Ajuda/Fazer doação" #~ msgid "Font Selection Dialog" #~ msgstr "Diálogo de Seleção de Fonte" #~ msgid "Clear" #~ msgstr "Limpar" #~ msgid "Show private records" #~ msgstr "Mostra registros particulares" #~ msgid "Hide private records" #~ msgstr "Oculta registros particulares" #~ msgid "Mask private records" #~ msgstr "Encobre registros particulares" #~ msgid "Font" #~ msgstr "Fonte" #~ msgid "Go to the menu \"" #~ msgstr "Ir ao menu \"" #~ msgid "\" and change the \"" #~ msgstr "\" e mudar o \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "Não foi possível abrir arquivo de registros do PC\n" #~ msgid "The first day of the week is " #~ msgstr "O primeiro dia da semana é" #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Porta serial (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Taxa de transferência (não afeta USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Sincronizar memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Um registro" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: pressione o botão HotSync no berço ou \"kill %d\"\n" #~ msgid "Finished\n" #~ msgstr "Concluído\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Último nome de usuário = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Última ID de usuário = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Nome de usuário = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID de usuário = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: número de registros = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disco: número de registros = %d\n" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i faz o programa ser lançado iconificado.\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s não parece ser um diretório.\n" #~ "Eu preciso que seja.\n" #~ msgid "AmEx" #~ msgstr "American Express" #~ msgid "CreditCard" #~ msgstr "Cartão de crédito" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Expense: Unknown category\n" #~ msgstr "Despesas: categoria desconhecida\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Sua variável HOME é longa demais (>1024)\n" jpilot-1.8.2/po/rw.po0000664000175000017500000025337412340261240011364 00000000000000# Kinyarwanda translations for jpilot package. # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the jpilot package. # Steve Murphy , 2005. # Steve performed initial rough translation from compendium built from translations provided by the following translators: # Philibert Ndandali , 2005. # Viateur MUGENZI , 2005. # Noëlla Mupole , 2005. # Carole Karema , 2005. # JEAN BAPTISTE NGENDAHAYO , 2005. # Augustin KIBERWA , 2005. # Donatien NSENGIYUMVA , 2005. # Antoine Bigirimana , 2005. # msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.8-pre3\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2005-04-04 10:55-0700\n" "Last-Translator: Steven Michael Murphy \n" "Language-Team: Kinyarwanda \n" "Language: rw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Ububiko bwarenzwe" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%dIcyiciro Ibisobanuro" # svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_SFX_DOLOADFAILED.text #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Ikosa mu gusoma idosiye" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 #, fuzzy msgid "error" msgstr "Ikosa" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 #, fuzzy msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "Icyabitswe ni Cyasibwe Cyangwa Gukoporora Kuri Ubwoko Amahinduka" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "Kuri Gufungura IDOSIYE" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kuri Gufungura IDOSIYE" #: ../address_gui.c:713 #, fuzzy msgid "File doesn't appear to be address.dat format\n" msgstr "Idosiye Kugaragara Kuri Aderesi" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OKE" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Oya" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Yego" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, fuzzy, c-format msgid "%s is a directory" msgstr "%sni a bushyinguro" # basctl/source\basicide\basidesh.src:RID_STR_ERROROPENSTORAGE.text #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 #, fuzzy msgid "Error Opening File" msgstr "Hari ikibazo mu gufungura dosiye" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, fuzzy, c-format msgid "Do you want to overwrite file %s?" msgstr "Kuri Guhindura IDOSIYE" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 #, fuzzy msgid "Overwrite File?" msgstr "Gusimbuza Idosiye" # basctl/source\basicide\basidesh.src:RID_STR_ERROROPENSTORAGE.text #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Hari ikibazo mu gufungura dosiye" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, fuzzy, c-format msgid "Can't export address %d\n" msgstr "Kohereza Aderesi" # so3/src\svuidlg.src:MD_DDE_LINKEDIT.FT_DDE_ITEM.text #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Icyiciro" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "By'umwihariko" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "ubutumwa nterineti/elegitoroniki" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 #, fuzzy msgid "Unknown export type\n" msgstr "Kohereza" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 msgid "Last Name/Company" msgstr "" #: ../address_gui.c:1834 ../address_gui.c:3956 msgid "First Name/Company" msgstr "" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Izina ry'Ikigo:" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 #, fuzzy msgid "You can't modify a record that is deleted\n" msgstr "Guhindura a Icyabitswe ni" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 #, fuzzy msgid "Category is not legal\n" msgstr "ni OYA" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Gukora: %s]%s Komandi:" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 msgid "chdir() failed\n" msgstr "" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" # so3/src\svuidlg.src:MD_DDE_LINKEDIT.FT_DDE_ITEM.text #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 #, fuzzy msgid "Category: " msgstr "Icyiciro" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Ubutumwa" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 #, fuzzy msgid "-Unnamed-" msgstr "-kitiswe-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 #, fuzzy msgid "0 records" msgstr "0 Ibyabitswe" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, fuzzy, c-format msgid "%d of %d records" msgstr "%dBya Ibyabitswe" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Izina" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Aderesi" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Ikindi" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Igisobanuro" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefone" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Kureka" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 #, fuzzy msgid "Cancel the modifications" msgstr "i" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Gusiba" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "i Byahiswemo Icyabitswe" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "i Byahiswemo Icyabitswe" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Guporora" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "i Byahiswemo Icyabitswe" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Icyabitswe Gishya" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "a Gishya Icyabitswe" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "i Gishya Icyabitswe" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 #, fuzzy msgid "Commit the modifications" msgstr "i" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "By'umwihariko" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Kureka" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Gukuraho" #: ../address_gui.c:4246 msgid "Show In List" msgstr "" #: ../address_gui.c:4347 msgid "Reminder" msgstr "" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Iminsi" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Byose" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Iminota" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "amasaha" #: ../alarms.c:253 msgid "Remind me" msgstr "" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "Kuri Gufungura IDOSIYE" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "" #: ../alarms.c:513 msgid "Past Appointment" msgstr "" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 #, fuzzy msgid "PC file corrupt?\n" msgstr "IDOSIYE" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 #, fuzzy msgid "fseek failed - fatal error\n" msgstr "Byanze" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "Guhindura izina Byanze" #: ../category.c:407 msgid "Move" msgstr "Kwimura" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Kwandika ibyiciro" #: ../category.c:437 #, fuzzy msgid "The maximum number of categories (16) are already used" msgstr "Kinini Umubare Bya Ibyiciro" #: ../category.c:440 msgid "Enter New Category" msgstr "" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Kwandika ibyiciro" #: ../category.c:452 #, fuzzy msgid "You must select a category to rename" msgstr "Guhitamo a Icyiciro Kuri Guhindura izina" #: ../category.c:461 msgid "Enter New Category Name" msgstr "" #: ../category.c:476 #, fuzzy msgid "You must select a category to delete" msgstr "Guhitamo a Icyiciro Kuri Gusiba" #: ../category.c:494 #, fuzzy, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "Ibyabitswe in Kuri Kwimura Kuri Cyangwa Gusiba" #: ../category.c:554 #, fuzzy, c-format msgid "invalid state file %s line %d\n" msgstr "Sibyo Leta IDOSIYE Umurongo" #: ../category.c:576 #, fuzzy, c-format msgid "The category %s can't be used more than once" msgstr "Icyiciro Birenzeho Rimwe" # so3/src\svuidlg.src:MD_DDE_LINKEDIT.FT_DDE_ITEM.text #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Icyiciro" #: ../category.c:834 msgid "New" msgstr "Gishya" #: ../category.c:841 msgid "Rename" msgstr "Guhindura izina" #: ../dat.c:512 #, fuzzy msgid "unknown type =" msgstr "Kitazwi Ubwoko" #: ../dat.c:603 #, fuzzy, c-format msgid "fields per row count != %d, unknown format\n" msgstr "Imyanya Urubariro IBARA Kitazwi" #: ../dat.c:625 #, fuzzy, c-format msgid "field count != %d, unknown format\n" msgstr "Umwanya IBARA Kitazwi" #: ../dat.c:635 #, fuzzy msgid "Unknown format, file has wrong schema\n" msgstr "Imiterere IDOSIYE" #: ../dat.c:636 #, fuzzy msgid "File schema is:" msgstr "Idosiye Igishushanyo ni" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, fuzzy, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%dUmwanya Ubwoko Itegerejwe Byabonetse" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 #, fuzzy msgid "read of file terminated\n" msgstr "Gusoma Bya IDOSIYE" #: ../datebook.c:703 ../datebook_gui.c:3645 #, fuzzy, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "Byabonetse in" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "ku" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "ku" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "ku" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "ku" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "ku" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "ku" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 #, fuzzy msgid "Mo" msgstr "ukwezi" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Twebwe" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Impera" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 #, fuzzy msgid "Repeat on Days:" msgstr "ku" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "Umubare Bya Ibyabitswe" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Igisobanuro" #: ../datebook_gui.c:360 ../datebook_gui.c:388 msgid "Alarm:" msgstr "" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "ku" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Bya Icyumweru" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, fuzzy, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Isobanuramiterere Umwandiko Kuri" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Ikosa" #: ../datebook_gui.c:632 #, fuzzy msgid "File doesn't appear to be datebook.dat format\n" msgstr "Idosiye Kugaragara Kuri" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 #, fuzzy msgid "Unknown export type" msgstr "Kohereza Ubwoko" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" # filter/source\pdf\impdialog.src:RID_PDF_EXPORT_DLG.BT_OK.text # filter/source\xsltdialog\xmlfiltertestdialog.src:DLG_XML_FILTER_TEST_DIALOG.FL_EXPORT.text #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Kohereza" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "kubika nka" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Gushakisha" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ntacyo" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "" #: ../datebook_gui.c:1639 #, fuzzy msgid "End On Date" msgstr "Impera" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "" #: ../datebook_gui.c:1760 msgid "4th" msgstr "" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Iheruka" #: ../datebook_gui.c:1763 #, fuzzy, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "ku i Bya i Ukwezi Cyangwa ku i Bya i Ukwezi" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "ni a Icyabaye Kuri Gukurikiza Kuri i Cyangwa Bya Bya iyi Icyabaye" # sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_CURRENT.text #: ../datebook_gui.c:1782 #, fuzzy msgid "Current" msgstr "KIGEZWEHO" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "umunsi" # svtools/source\control\calendar.src:STR_SVT_CALENDAR_WEEK.text #: ../datebook_gui.c:2028 #, fuzzy msgid "week" msgstr "Icyumweru" #: ../datebook_gui.c:2029 msgid "month" msgstr "ukwezi" #: ../datebook_gui.c:2030 msgid "year" msgstr "umwaka" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, fuzzy, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "buri S" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "OYA a Buri kyumweru Gusubiramo ku UMUNSI Bya i Icyumweru" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "" #: ../datebook_gui.c:2941 #, fuzzy msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "Impera Bya iyi Mbere i Gutangira Itariki" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "in" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Icyumweru" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "ku Icyumweru" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Ukwezi" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "ku Ukwezi" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Igihe" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Igikorwa" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 #, fuzzy msgid "Date:" msgstr "Itariki" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "ku" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Impera ku" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Umunsi" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Umwaka" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 #, fuzzy msgid "This event will not repeat" msgstr "Icyabaye OYA Gusubiramo" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 #, fuzzy msgid "Frequency is Every" msgstr "ni" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "U(I)munsi" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 #, fuzzy msgid "End on" msgstr "Impera ku" #: ../datebook_gui.c:5501 #, fuzzy msgid "Week(s)" msgstr "ibyumweru" #: ../datebook_gui.c:5553 #, fuzzy msgid "Month(s)" msgstr "amezi" #: ../datebook_gui.c:5570 #, fuzzy msgid "Repeat by:" msgstr "ku" #: ../datebook_gui.c:5574 #, fuzzy msgid "Day of week" msgstr "Bya Icyumweru" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Itariki" #: ../datebook_gui.c:5599 #, fuzzy msgid "Year(s)" msgstr "S" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "uterefona" #: ../dialer.c:230 #, fuzzy msgid "Prefix 1" msgstr "1." #: ../dialer.c:252 #, fuzzy msgid "Prefix 2" msgstr "2." #: ../dialer.c:274 #, fuzzy msgid "Prefix 3" msgstr "3." # VCARD_LDAP_PHONE_NUMBER # # @name VCARD_LDAP_PHONE_NUMBER # # @loc None #: ../dialer.c:289 #, fuzzy msgid "Phone number:" msgstr "Nomero ya terefoni" #: ../dialer.c:319 msgid "Extension" msgstr "Umugereka" #: ../dialer.c:341 msgid "Dial Command" msgstr "" #: ../export_gui.c:121 #, fuzzy msgid "File Browser" msgstr "Idosiye" #. Label for instructions #: ../export_gui.c:273 #, fuzzy msgid "Select records to be exported" msgstr "Ibyabitswe Kuri" #: ../export_gui.c:275 #, fuzzy msgid "Use Ctrl and Shift Keys" msgstr "Na" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Kuzana" #: ../import_gui.c:317 #, fuzzy, c-format msgid "Record was marked as private" msgstr "cy/ byagarajwe Nka By'umwihariko" #: ../import_gui.c:319 #, fuzzy, c-format msgid "Record was not marked as private" msgstr "OYA cy/ byagarajwe Nka By'umwihariko" #: ../import_gui.c:328 #, fuzzy, c-format msgid "Category before import was: [%s]" msgstr "Mbere Kuzana" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Gushyira in Icyiciro" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "" #: ../import_gui.c:457 ../install_gui.c:427 #, fuzzy msgid "To change to a hidden directory type it below and hit TAB" msgstr "Guhindura>> Kuri a gihishwe bushyinguro Ubwoko munsi Na kanda" #: ../import_gui.c:484 #, fuzzy msgid "Import File Type" msgstr "Idosiye" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Kuri" #: ../install_gui.c:372 msgid "Install" msgstr "Kora iyinjizaporogaramu" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Idosiye" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Izinakoresha" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "koresha Indango" #: ../jpilot.c:317 msgid "Print" msgstr "Gucapa" #: ../jpilot.c:318 #, fuzzy msgid "There is no print support for this conduit." msgstr "ni Oya Gucapa Gushigikira kugirango iyi" #: ../jpilot.c:384 #, fuzzy msgid "There is no import support for this conduit." msgstr "ni Oya Kuzana Gushigikira kugirango iyi" #: ../jpilot.c:428 #, fuzzy msgid "There is no export support for this conduit." msgstr "ni Oya Kohereza Gushigikira kugirango iyi" #: ../jpilot.c:657 msgid " Cancelling HotSync\n" msgstr "" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Palm i Ukoresha: Ukoresha: Nka i Igihe Ingaruka i Ukoresha: Bikorwa NIBA" #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Palm a Ukoresha: ID Palm a Cyo nyine Ukoresha: ID in Itondekanya Kuri " "Ikomeye Kugarura Gukoresha Kugarura Bivuye i Ibikubiyemo Kuri Kugarura " "Cyangwa Gukoresha Kongeramo a Ukoresha: Izina: Na Gukoresha Kwinjiza " "porogaramu Ukoresha: i E Kwinjiza porogaramu Ukoresha: Izina: i Ukoresha: " "Bikorwa NIBA" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "Ukoresha:" #: ../jpilot.c:944 #, fuzzy msgid "Unknown command from sync process\n" msgstr "Komandi: Bivuye" # offmgr/source\offapp\intro\intro.hrc:TEXT_DEFAULTABOUT.text #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, fuzzy, c-format msgid "About %s" msgstr "Ibyerekeye" #: ../jpilot.c:1107 #, fuzzy msgid "/_File" msgstr "/Idosiye" #: ../jpilot.c:1108 #, fuzzy msgid "/File/tear" msgstr "/Idosiye" #: ../jpilot.c:1109 #, fuzzy msgid "/File/_Find" msgstr "/Idosiye" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 #, fuzzy msgid "/File/sep1" msgstr "/Idosiye" #: ../jpilot.c:1111 #, fuzzy msgid "/File/_Install" msgstr "/Idosiye" #: ../jpilot.c:1112 #, fuzzy msgid "/File/Import" msgstr "/Idosiye" #: ../jpilot.c:1113 #, fuzzy msgid "/File/Export" msgstr "/Idosiye" #: ../jpilot.c:1114 ../jpilot.c:2192 #, fuzzy msgid "/File/Preferences" msgstr "/Idosiye" #: ../jpilot.c:1115 #, fuzzy msgid "/File/_Print" msgstr "/Idosiye" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/Idosiye" #: ../jpilot.c:1118 #, fuzzy msgid "/File/Restore Handheld" msgstr "/Idosiye" #: ../jpilot.c:1120 #, fuzzy msgid "/File/_Quit" msgstr "/Idosiye" #: ../jpilot.c:1121 msgid "/_View" msgstr "" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 #, fuzzy msgid "/View/Hide Private Records" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1123 ../jpilot.c:1373 #, fuzzy msgid "/View/Show Private Records" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1124 ../jpilot.c:1376 #, fuzzy msgid "/View/Mask Private Records" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1125 #, fuzzy msgid "/View/sep1" msgstr "/Idosiye" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "" #: ../jpilot.c:1127 #, fuzzy msgid "/View/Addresses" msgstr "/Aderesi" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "" #: ../jpilot.c:1132 msgid "/_Web" msgstr "" #. web #: ../jpilot.c:1133 #, fuzzy msgid "/Web/Netscape" msgstr "/Netscape" #: ../jpilot.c:1137 #, fuzzy msgid "/Web/Mozilla" msgstr "/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "" # sfx2/source\appl\newhelp.src:STR_HELP_WINDOW_TITLE.text #: ../jpilot.c:1162 #, fuzzy msgid "/_Help" msgstr "/Kugoboka" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "" # sfx2/source\appl\newhelp.src:STR_HELP_WINDOW_TITLE.text #: ../jpilot.c:1239 #, fuzzy, c-format msgid "/_Help/%s" msgstr "/Kugoboka" #: ../jpilot.c:1593 #, fuzzy msgid "calendar:week_start:0" msgstr "Kalindari 0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 #, fuzzy msgid "Not loading plugins.\n" msgstr "Itangira..." #: ../jpilot.c:1640 #, fuzzy msgid "Ignoring all alarms.\n" msgstr "Kwirengagiza Byose" #: ../jpilot.c:1644 #, fuzzy msgid "Ignoring past alarms.\n" msgstr "Kwirengagiza" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "Kuri Gufungura" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "By'umwihariko Ibyabitswe" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Palm Kuri i Ibiro" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Aderesi" #: ../jpilot.c:1995 #, fuzzy msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "Palm Kuri i Hanyuma a Inyibutsa" #: ../jpilot.c:2143 #, fuzzy msgid "Datebook/Go to Today" msgstr "Kuri" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Agatabondanganturo" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "ni ikoresha i Verisiyo Bya i 8 Kuri Inyuguti Guhitamo a 8 i Inyuguti " "kugirango Urugero" # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Ishyirahamwe ry'Inyuguti" #: ../jpilot.c:2194 #, fuzzy msgid "Select a UTF-8 encoding" msgstr "8 Imisobekere:" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" "+A Imiterere nka Itariki Imiterere Gukoresha kugirango Birenzeho Ibisobanuro" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr "-v Verisiyo Na" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr "-h Ifashayobora Na" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr "-h Ifashayobora Na" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "-A Igitabo" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "-ku UYUMUNSI in" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "-ku in" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "-A Igitabo" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr "-Urutonde Nka" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "-A Igitabo" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kuri Gufungura IDOSIYE" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" "Ibyahiswemo Gusoma Kuri Kubona Umuyoboro Igipimo Umubare Bya Ibyashyinguwe" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr "-v Verisiyo Na Gukusanya Amahitamo Na" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr "-D Kosora amakosa Ibisobanuro Kuri" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "Itangira..." #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "-L Rimwe Na Gusohoka" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "-P Umuyoboro iyi Umuyoboro Kuri Na: Bya Ibyahiswemo" # basctl/source\basicide\basidesh.src:RID_STR_ERROROPENSTORAGE.text #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Hari ikibazo mu gufungura dosiye" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Gufungura%S IDOSIYE" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Ikosa" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "IMPINDURAGACIRO ni kugirango" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 #, fuzzy msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "Icyabitswe ni Cyasibwe ni Kuri Cyasibwe Bivuye i ku i Komeza>>" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "Kuri Gufungura Ibyabitswe" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Gushaka Icyabitswe Kuri" #: ../libplugin.c:95 ../utils.c:1089 #, fuzzy, c-format msgid "Unknown header version %d\n" msgstr "Umutwempangano Verisiyo" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%dGufungura %s%S IDOSIYE" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%dIDOSIYE" # basctl/source\basicide\basidesh.src:RID_STR_ERROROPENSTORAGE.text #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Hari ikibazo mu gufungura dosiye" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "IDOSIYE" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "IDOSIYE" #: ../libplugin.c:921 #, fuzzy, c-format msgid "Unknown PC header version = %d\n" msgstr "Umutwempangano Verisiyo" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kuri Gufungura LOG IDOSIYE Hejuru" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "Kuri Gufungura LOG" #: ../memo_gui.c:302 #, fuzzy msgid "Memo text > 65535, truncating\n" msgstr "Umwandiko" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 #, fuzzy msgid "File doesn't appear to be memopad.dat format\n" msgstr "Idosiye Kugaragara Kuri" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, fuzzy, c-format msgid "Can't export memo %d\n" msgstr "Kohereza Umwandikorusobe..." #: ../memo_gui.c:641 #, c-format msgid "Memo: %ld\n" msgstr "" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" # svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_SFX_DOLOADFAILED.text #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Ikosa mu gusoma idosiye" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 #, fuzzy msgid "infinite loop" msgstr "Bidashira" #: ../plugins.c:214 #, fuzzy, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Umurongo 1." #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 #, fuzzy msgid "Check preferences->conduits\n" msgstr "Ibyahiswemo" #: ../plugins.c:272 #, fuzzy, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "Byanze ku Ikosa" #: ../plugins.c:289 ../plugins.c:314 #, fuzzy, c-format msgid " plugin is invalid: [%s]\n" msgstr "ni Sibyo" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "" #: ../plugins.c:298 #, fuzzy, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" "Project- Id- Version: basctl\n" "POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n" "PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n" "Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n" "Content- Type: text/ plain; charset= UTF- 8\n" "Content- Transfer- Encoding: 8bit\n" "X- Generator: KBabel 1. 0\n" "." #: ../plugins.c:300 #, fuzzy msgid "It is too old to work with this version of J-Pilot.\n" msgstr "ni ki/ bishaje Kuri Akazi Na: iyi Verisiyo Bya" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Ibyahisemo" # officecfg/registry\schema\org\openoffice\Setup.xcs:....L10N.ooLocale.text #: ../prefs_gui.c:483 msgid "Locale" msgstr "Umwanya" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Amagenamiterere" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "" # sysui/oounix\office\cde\writer.lng:.text #: ../prefs_gui.c:493 msgid "Memo" msgstr "Ubutumwa" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Itariki Imiterere" #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Itariki Imiterere" #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Imiterere y'igihe" #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Amabara IDOSIYE ni" #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Umwandikorusobe..." #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 #, fuzzy msgid "Number of backups to be archived" msgstr "Bya Ibyashyinguwe Kuri" #. Show deleted files check box #: ../prefs_gui.c:643 #, fuzzy msgid "Show deleted records (default NO)" msgstr "Cyasibwe Ibyabitswe Mburabuzi" #. Show modified files check box #: ../prefs_gui.c:647 #, fuzzy msgid "Show modified deleted records (default NO)" msgstr "Byahinduwe Cyasibwe Ibyabitswe Mburabuzi" #: ../prefs_gui.c:652 #, fuzzy msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "Iyemeza kugirango IDOSIYE iyinjizaporogaramu Mburabuzi" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Mburabuzi" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 #, fuzzy msgid "Highlight calendar days with appointments" msgstr "Kalindari Iminsi Na:" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 #, fuzzy msgid "Use DateBk note tags" msgstr "Impugukirwa" #: ../prefs_gui.c:713 #, fuzzy msgid "DateBk support disabled in this build" msgstr "Gushigikira Yahagaritswe in iyi" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%sni ku i E Ubutumwa Aderesi" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "" #. hide todos not yet due check box #: ../prefs_gui.c:817 #, fuzzy msgid "Hide ToDos not yet due" msgstr "OYA" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "" #. Use Manana check box #: ../prefs_gui.c:826 #, fuzzy msgid "Use Manana database" msgstr "Ububikoshingiro" #: ../prefs_gui.c:834 #, fuzzy msgid "Use default number of days due" msgstr "Mburabuzi Umubare Bya Iminsi" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 msgid "Use Memo32 database (pedit32)" msgstr "" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 #, fuzzy msgid "Open alarm windows for appointment reminders" msgstr "kugirango" #. Execute alarm command check box #: ../prefs_gui.c:927 #, fuzzy msgid "Execute this command" msgstr "iyi Komandi:" #. Shell warning label #: ../prefs_gui.c:931 #, fuzzy msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "Gukora:%s Igikonoshwa Amabwiriza" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "" #: ../prefs_gui.c:952 #, fuzzy msgid "%t is replaced with the alarm time" msgstr "%tni Na: i Igihe" #: ../prefs_gui.c:956 #, fuzzy, c-format msgid "%d is replaced with the alarm date" msgstr "%dni Na: i Itariki" #: ../prefs_gui.c:961 #, fuzzy msgid "%D is replaced with the alarm description" msgstr "%Dni Na: i Isobanuramiterere" #: ../prefs_gui.c:965 #, fuzzy msgid "%N is replaced with the alarm note" msgstr "%Nni Na: i Impugukirwa" #: ../prefs_gui.c:969 #, fuzzy msgid "%D (description substitution) is disabled in this build" msgstr "%D(Isobanuramiterere ni Yahagaritswe in iyi" #: ../prefs_gui.c:974 #, fuzzy msgid "%N (note substitution) is disabled in this build" msgstr "%N(Impugukirwa ni Yahagaritswe in iyi" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "" #. Sync address check box #: ../prefs_gui.c:988 #, fuzzy msgid "Sync address" msgstr "Aderesi" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "" #. Sync memo check box #: ../prefs_gui.c:996 #, fuzzy msgid "Sync memo" msgstr "Umwandikorusobe..." #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "" #: ../print_gui.c:183 msgid "Print Options" msgstr "Ihitamo ry'Ishyirwa-Rupapuro" # padmin/source\rtsetup.src:RID_RTS_PAPERPAGE.RID_RTS_PAPER_PAPER_TXT.text #: ../print_gui.c:196 #, fuzzy msgid "Paper Size" msgstr "Ingano y'urupapuro" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "a Icyabitswe" #: ../print_gui.c:268 #, fuzzy msgid "All records in this category" msgstr "Ibyabitswe in iyi Icyiciro" #: ../print_gui.c:272 #, fuzzy msgid "Print all records" msgstr "Byose Ibyabitswe" #: ../print_gui.c:294 #, fuzzy msgid "One record per page" msgstr "Icyabitswe Ipaji" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr "Imirongo hagati Icyabitswe" #. Print Command #: ../print_gui.c:319 #, fuzzy msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "g." #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Kuri" #. Label for instructions #: ../restore_gui.c:244 #, fuzzy msgid "To restore your handheld:" msgstr "Kugarura" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1.." #: ../restore_gui.c:250 #, fuzzy msgid "2. Enter the User Name and User ID." msgstr "2.." #: ../restore_gui.c:253 #, fuzzy msgid "3. Press the OK button." msgstr "3.." #: ../restore_gui.c:256 #, fuzzy msgid "This will overwrite data that is currently on the handheld." msgstr "Guhindura Ibyatanzwe ni ku i" #: ../search_gui.c:142 msgid "datebook" msgstr "" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 #, fuzzy msgid "address" msgstr "Aderesi" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "" #: ../search_gui.c:359 msgid "memo" msgstr "ubutumwa" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "ubutumwa" #: ../search_gui.c:419 msgid "plugin ?" msgstr "" #: ../search_gui.c:499 #, fuzzy msgid "No records found" msgstr "Ibyabitswe Byabonetse" #: ../search_gui.c:598 msgid "Search" msgstr "Gushaka" #. Search label #: ../search_gui.c:615 #, fuzzy msgid "Search for: " msgstr "Gushakisha:" # officecfg/registry\schema\org\openoffice\Office\Calc.xcs:....Calculate.Other.CaseSensitive.text #. Case Sensitive checkbox #: ../search_gui.c:624 #, fuzzy msgid "Case Sensitive" msgstr "Imyandikire y'inyuguti nkuru/ nto" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "Gufungura IDOSIYE" #: ../sync.c:131 msgid "lock failed\n" msgstr "" #: ../sync.c:136 #, fuzzy, c-format msgid "sync file is locked by pid %d\n" msgstr "IDOSIYE ni Gifunze ku" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, fuzzy, c-format msgid "sync is locked by pid %d\n" msgstr "ni Gifunze ku" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Umuyoboro Na" #: ../sync.c:677 #, fuzzy msgid "Unable to read home dir\n" msgstr "Kuri Gusoma Ku Ntangiriro" #: ../sync.c:1085 ../sync.c:1423 #, fuzzy, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s(ni Hejuru Kuri Itariki" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "" #: ../sync.c:1096 ../sync.c:1433 #, fuzzy, c-format msgid "Failed, unable to create file %s\n" msgstr "Kuri Kurema IDOSIYE" #: ../sync.c:1100 ../sync.c:1438 #, fuzzy, c-format msgid "Failed, unable to back up database %s\n" msgstr "Kuri Inyuma Hejuru Ububikoshingiro" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "" #: ../sync.c:1498 #, fuzzy, c-format msgid "Installing %s " msgstr "Gukora iyinjizaporogaramu..." #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "Kuri Gufungura IDOSIYE" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "Kuri IDOSIYE IDOSIYE" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ni" #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ni" #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "Kuri Gufungura IDOSIYE" #: ../sync.c:1615 #, fuzzy, c-format msgid "Install %s failed" msgstr "Byanze" #: ../sync.c:1619 #, fuzzy msgid "Failed.\n" msgstr "Byanze" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "Gukora iyinjizaporogaramu..." #: ../sync.c:1736 #, fuzzy, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%dIbisobanuro" #: ../sync.c:1742 ../sync.c:1772 #, fuzzy, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%dIbisobanuro" #: ../sync.c:1763 #, fuzzy, c-format msgid "Error reading appinfo block for %s\n" msgstr "Funga kugirango" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, fuzzy, c-format msgid "Could not add category %s to remote.\n" msgstr "OYA Kongeramo Icyiciro Kuri" #: ../sync.c:2002 ../sync.c:2008 #, fuzzy, c-format msgid "Too many categories on remote.\n" msgstr "Ibyiciro ku" #: ../sync.c:2003 ../sync.c:2011 #, fuzzy, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Ibyabitswe ku Ibiro in Kuri" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, fuzzy, c-format msgid "Wrote an %s record." msgstr "Icyabitswe" #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, fuzzy, c-format msgid "Writing an %s record failed." msgstr "Icyabitswe Byanze" #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, fuzzy, c-format msgid "Deleting an %s record failed." msgstr "Icyabitswe Byanze" #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, fuzzy, c-format msgid "Deleted an %s record." msgstr "Icyabitswe" #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Icyabitswe" #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, fuzzy, c-format msgid "Wrote a %s record." msgstr "a Icyabitswe" #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, fuzzy, c-format msgid "Writing a %s record failed." msgstr "a Icyabitswe Byanze" #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, fuzzy, c-format msgid "Deleting a %s record failed." msgstr "a Icyabitswe Byanze" #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, fuzzy, c-format msgid "Deleted a %s record." msgstr "a Icyabitswe" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 #, fuzzy msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "i Icyabitswe Cyasibwe ku i" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, fuzzy, c-format msgid " Syncing on device %s\n" msgstr "ku APAREYE" #: ../sync.c:3095 #, fuzzy msgid " Press the HotSync button now\n" msgstr "i Akabuto" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "" #: ../sync.c:3204 #, fuzzy, c-format msgid "Username is \"%s\"\n" msgstr "ni" #: ../sync.c:3205 #, fuzzy, c-format msgid "User ID is %d\n" msgstr "ni" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "" #: ../sync.c:3256 #, fuzzy msgid "You may need to sync to update J-Pilot.\n" msgstr "Gicurasi Kuri Kuri Kuvugurura" #: ../sync.c:3278 #, fuzzy msgid "Doing a fast sync.\n" msgstr "a Byihuta" #: ../sync.c:3291 #, fuzzy msgid "Doing a slow sync.\n" msgstr "a Buhoro" #: ../sync.c:3366 #, fuzzy msgid "Thank you for using J-Pilot." msgstr "kugirango ikoresha" # wizards/source\importwizard\importwi.src:sReady.text #: ../sync.c:3411 ../sync.c:3479 #, fuzzy msgid "Finished.\n" msgstr "Byarangiye" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, fuzzy, c-format msgid "Exiting with status %s\n" msgstr "Na: Imimerere" #: ../todo.c:264 #, fuzzy, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Isobanuramiterere Umwandiko Kuri" #: ../todo.c:270 #, fuzzy, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Impugukirwa Umwandiko Kuri" #: ../todo_gui.c:159 msgid "Due Date" msgstr "" #: ../todo_gui.c:532 #, fuzzy msgid "File doesn't appear to be todo.dat format\n" msgstr "Idosiye Kugaragara Kuri" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, fuzzy, c-format msgid "Can't export todo %d\n" msgstr "Kohereza" #: ../todo_gui.c:766 #, c-format msgid "Due Date: None\n" msgstr "" #: ../todo_gui.c:769 #, c-format msgid "Due Date: %s\n" msgstr "" # sfx2/source\dialog\mailwindow.src:RID_MAIL_WINDOW.FT_MAILWIN_PRIO.text #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "By'ibanze" #: ../todo_gui.c:772 #, c-format msgid "Completed: %s\n" msgstr "" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 #, fuzzy msgid "Priority out of range\n" msgstr "Inyuma Bya" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, fuzzy, c-format msgid "No date" msgstr "Itariki" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "" # sfx2/source\dialog\mailwindow.src:RID_MAIL_WINDOW.FT_MAILWIN_PRIO.text #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "By'ibanze" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "" #: ../utils.c:330 msgid "Today" msgstr "Uyu munsi" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Gushaka ubusa IDOSIYE" #: ../utils.c:578 #, fuzzy msgid " may not be installed.\n" msgstr "Gicurasi OYA" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, fuzzy, c-format msgid "Can't create directory %s\n" msgstr "Kurema bushyinguro" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%sni a bushyinguro" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Kwandika Idosiye in bushyinguro" #: ../utils.c:1328 ../utils.c:1352 #, fuzzy msgid "Save Changed Record?" msgstr "Kubika" #: ../utils.c:1329 ../utils.c:1353 #, fuzzy msgid "Do you want to save the changes to this record?" msgstr "Kuri Kubika i Amahinduka Kuri iyi Icyabitswe" #: ../utils.c:1334 ../utils.c:1358 #, fuzzy msgid "Save New Record?" msgstr "Kubika" #: ../utils.c:1335 ../utils.c:1359 #, fuzzy msgid "Do you want to save this new record?" msgstr "Kuri Kubika iyi Gishya Icyabitswe" #: ../utils.c:1650 #, fuzzy msgid "infinite loop, breaking\n" msgstr "Bidashira" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "Itangira..." #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "-a Kwirengagiza guhera i Iheruka Igihe iyi Porogaramu Gukoresha" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr "-A Kwirengagiza Byose Na" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "Na Ibihinduka Kuri" #: ../utils.c:1881 #, fuzzy, c-format msgid " which port to sync on, and at what speed.\n" msgstr "Umuyoboro Kuri ku Na ku Umuvuduko" #: ../utils.c:1882 #, fuzzy, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "ni OYA Gushyiraho Hanyuma Kuri" # svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_SFX_DOLOADFAILED.text #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Ikosa mu gusoma idosiye" #: ../utils.c:1973 msgid "Date compiled" msgstr "" #: ../utils.c:1974 #, fuzzy msgid "Compiled with these options:" msgstr "Na: Amahitamo" #: ../utils.c:1976 msgid "Installed Path" msgstr "" #: ../utils.c:1978 #, fuzzy msgid "pilot-link version" msgstr "Ihuza Verisiyo" #: ../utils.c:1982 #, fuzzy msgid "USB support" msgstr "Gushigikira" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "Yego" #: ../utils.c:1984 #, fuzzy msgid "Private record support" msgstr "Icyabitswe Gushigikira" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 #, fuzzy msgid "no" msgstr "Oya" #: ../utils.c:1990 #, fuzzy msgid "Datebk support" msgstr "Gushigikira" #: ../utils.c:1996 #, fuzzy msgid "Plugin support" msgstr "Gushigikira" #: ../utils.c:2002 #, fuzzy msgid "Manana support" msgstr "Gushigikira" #: ../utils.c:2008 #, fuzzy msgid "NLS support (foreign languages)" msgstr "Gushigikira Mvamahanga Indimi" #: ../utils.c:2014 #, fuzzy msgid "GTK2 support" msgstr "Gushigikira" #. No HOME var #: ../utils.c:2057 #, fuzzy, c-format msgid "Can't get HOME environment variable\n" msgstr "Kubona" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "IMPINDURAGACIRO ni kugirango" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Kwandika ibyiciro" #: ../utils.c:3233 #, fuzzy msgid "PC ID is 0.\n" msgstr "ni 0" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "a Gishya ni" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, fuzzy, c-format msgid "Today is %A, %x %X" msgstr "ni" #: ../utils.c:3539 #, fuzzy, c-format msgid "Today is %%A, %s %s" msgstr "ni" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Umutwempangano Kuri IDOSIYE" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Komeza>> ID Kuri IDOSIYE" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Ositaraliya" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Ositiriya" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Ububiligi" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Burezile" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Kanada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Danimarike" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finilande" #: ../Expense/expense.c:103 msgid "France" msgstr "Ubufaransa" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Ubudage" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hongo Kongo" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Isilande" #: ../Expense/expense.c:107 msgid "India" msgstr "Ubuhinde" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonesiya" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irilande" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Ubutariyani" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Ubuyapani" #: ../Expense/expense.c:112 msgid "Korea" msgstr "" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Lugizamburu" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malesiya" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Megizike" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Nederilande" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nuveli Zelande" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Noruveje" #: ../Expense/expense.c:119 #, fuzzy msgid "P.R.C." msgstr "C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipine" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapore" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Esipanye" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Suwede" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Ubusuwisi" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Tayiwani" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Tayilande" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Ubwongereza (UK)" #: ../Expense/expense.c:128 msgid "United States" msgstr "Leta Zunze Ubumwe" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fagisi" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "terefoni" # officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Help.Tip.text #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Inyobora" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Kugenzura" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "ikarita y'inguzanyo" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "" # sfx2/source\dialog\dinfdlg.src:TP_DOCINFODOC.FT_FILE_TYP.text #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Ubwoko" # sw/source\ui\table\insrc.src:DLG_INS_ROW_COL.FT_COUNT.text #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Igiteranyo" # so3/src\svuidlg.src:MD_DDE_LINKEDIT.FT_DDE_ITEM.text #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "Icyiciro" # sfx2/source\dialog\dinfdlg.src:TP_DOCINFODOC.FT_FILE_TYP.text #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Ubwoko" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "" # #-#-#-#-# svx.pot (PACKAGE VERSION) #-#-#-#-# # svx/source\dialog\numfmt.src:RID_SVXPAGE_NUMBERFORMAT.LB_CATEGORY.5.text # #-#-#-#-# svx.pot (PACKAGE VERSION) #-#-#-#-# # svx/source\dialog\sdstring.src:RID_SVXSTR_TBLAFMT_CURRENCY.text #. Currency Menu #: ../Expense/expense.c:1726 #, fuzzy msgid "Currency:" msgstr "Ifaranga" #: ../Expense/expense.c:1746 #, fuzzy msgid "Month:" msgstr "ukwezi:" #: ../Expense/expense.c:1760 #, fuzzy msgid "Day:" msgstr "Umunsi:" #: ../Expense/expense.c:1774 #, fuzzy msgid "Year:" msgstr "umwaka:" # sw/source\ui\table\insrc.src:DLG_INS_ROW_COL.FT_COUNT.text #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Igiteranyo" #. Vendor Entry #: ../Expense/expense.c:1797 #, fuzzy msgid "Vendor:" msgstr "Umucuruzi" #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Umujyi:" # #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# # officecfg/registry\schema\org\openoffice\Office\Impress.xcs:....Snap.Position.ExtendEdges.text # #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# # officecfg/registry\schema\org\openoffice\Office\Draw.xcs:....Snap.Position.ExtendEdges.text #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Abitabiriye" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "" #: ../KeyRing/keyring.c:1699 #, fuzzy msgid "Enter a NEW KeyRing Password" msgstr "a" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "" #: ../KeyRing/keyring.c:1767 #, fuzzy, c-format msgid "KeyRing: file %s not found.\n" msgstr "IDOSIYE OYA Byabonetse" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Kohereza Umwandikorusobe..." #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Kureka" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "konti" # basctl/source\basicide\moduldlg.src:RID_DLG_NEWLIB.RID_FT_NEWLIB.text #. Name entry #: ../KeyRing/keyring.c:2660 #, fuzzy msgid "name: " msgstr "Izina:" # svtools/source\dialogs\logindlg.src:DLG_LOGIN.FT_LOGIN_ACCOUNT.text #. Account entry #: ../KeyRing/keyring.c:2668 #, fuzzy msgid "account: " msgstr "Konti:" # basctl/source\basicide\moduldlg.src:RID_TP_LIBS.RID_PB_PASSWORD.text #. Password entry #: ../KeyRing/keyring.c:2676 #, fuzzy msgid "password: " msgstr "Ijambobanga..." #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Umwandikorusobe..." #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Byakozwe" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Gusimbuza Idosiye" #~ msgid "Field" #~ msgstr "Umwanya" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "Kuri Gufungura" #, fuzzy #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Kuri Gufungura" #, fuzzy #~ msgid "You can't edit category %s.\n" #~ msgstr "Guhindura Icyiciro" #, fuzzy #~ msgid "You can't delete category %s.\n" #~ msgstr "Gusiba Icyiciro" #, fuzzy #~ msgid "category name" #~ msgstr "Icyiciro Izina:" # Debug menu items #, fuzzy #~ msgid "debug" #~ msgstr "Kosora amakosa" #~ msgid "Close" #~ msgstr "Gufunga" #~ msgid "none" #~ msgstr "ntacyo" #, fuzzy #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "Byabonetse in" #~ msgid "W" #~ msgstr "W" #~ msgid "M" #~ msgstr "M" #, fuzzy #~ msgid "This Event has no particular time" #~ msgstr "Oya Igihe" #, fuzzy #~ msgid "Start Time" #~ msgstr "Gutangira" #, fuzzy #~ msgid "End Time" #~ msgstr "Impera" #~ msgid "Done" #~ msgstr "Byakozwe" #~ msgid "Add" #~ msgstr "Kongera" #, fuzzy #~ msgid "User name" #~ msgstr "Izinakoresha" #, fuzzy #~ msgid " -v = version\n" #~ msgstr "-v" #, fuzzy #~ msgid " -h = help\n" #~ msgstr "-h" #, fuzzy #~ msgid " -d = run in debug mode\n" #~ msgstr "-D Gukoresha in Kosora amakosa" #, fuzzy #~ msgid " -P = do not load plugins.\n" #~ msgstr "-OYA Ibirimo" #, fuzzy #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "-B a Na Hanyuma a Inyibutsa a" #, fuzzy #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Iyigamashusho" #, fuzzy #~ msgid "/Help/PayBack program" #~ msgstr "/Porogaramu" #~ msgid "Clear" #~ msgstr "bigaragara,kigaragara" #, fuzzy #~ msgid "Show private records" #~ msgstr "By'umwihariko Ibyabitswe" #, fuzzy #~ msgid "Hide private records" #~ msgstr "By'umwihariko Ibyabitswe" #, fuzzy #~ msgid "Mask private records" #~ msgstr "By'umwihariko Ibyabitswe" #~ msgid "Font" #~ msgstr "Umukono" #, fuzzy #~ msgid "Go to the menu \"" #~ msgstr "Kuri i Ibikubiyemo" #, fuzzy #~ msgid "\" and change the \"" #~ msgstr "\"Na Guhindura>> i" # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# # #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-# #, fuzzy #~ msgid "\"." #~ msgstr "\"." #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Gufungura Ibyabitswe" #, fuzzy #~ msgid "The first day of the week is " #~ msgstr "Itangira UMUNSI Bya i Icyumweru ni" #, fuzzy #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "OYA" #, fuzzy #~ msgid "One record" #~ msgstr "Icyabitswe" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s:Kanda i Akabuto ku i Cyangwa" #, fuzzy #~ msgid "Username = [%s]\n" #~ msgstr "Izina ry'ukoresha" #, fuzzy #~ msgid "palm: number of records = %d\n" #~ msgstr "Palm Umubare Bya Ibyabitswe" #, fuzzy #~ msgid "disk: number of records = %d\n" #~ msgstr "Umubare Bya Ibyabitswe" #, fuzzy #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr "-i" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "%sKugaragara Kuri a bushyinguro Kuri" #, fuzzy #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "IMPINDURAGACIRO ni kugirango" #~ msgid "Quit" #~ msgstr "Kuvamo" #~ msgid "Help" #~ msgstr "Gufasha" #~ msgid "Directory" #~ msgstr "Ububiko" #~ msgid "Filename" #~ msgstr "Izina ry'idosiye" #, fuzzy #~ msgid " -p do not load plugins.\n" #~ msgstr "-P OYA Ibirimo" #, fuzzy #~ msgid "Copy the record Ctrl+O" #~ msgstr "i Icyabitswe" #~ msgid "Backup" #~ msgstr "Inyibutsa" jpilot-1.8.2/po/ko.po0000664000175000017500000025033512340261240011337 00000000000000# Korean translations for jpilot. # This file is distributed under the same license as the jpilot package. # # Byeong-Taek Lee , 2005. msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.8\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2005-12-11 23:24-0800\n" "Last-Translator: Byeong-Taek Lee \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "¸Þ¸ð¸® ºÎÁ·" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d %s ¹üÁÖ Á¤º¸ ÀÐÀ» ¶§ ¿À·ù\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "ÆÄÀÏ Àб⠿À·ù: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "¿À·ù" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "ÀÌ ÀÚ·á´Â »èÁ¦µÇ¾ú½À´Ï´Ù.\n" "º¯°æÇϱâ À§Çؼ­´Â º¹±¸Çϰųª º¹»çÇϽʽÿÀ.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "ÆÄÀÏ Çü½ÄÀÌ address.datÀÌ ¾Æ´Ñ µíÇÕ´Ï´Ù.\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "ºñºÐ·ù" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "È®ÀÎ" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "¾Æ´Ï¿À" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "¿¹" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s´Â µð·ºÅ丮ÀÔ´Ï´Ù." #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "ÆÄÀÏ¿­±â ¿À·ù" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "%s ÆÄÀÏÀ» µ¤¾î¾²½Ã°Ú½À´Ï±î?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "ÆÄÀÏÀ» µ¤¾î¾²½Ã°Ú½À´Ï±î?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "ÆÄÀÏ ¿­±â ¿À·ù: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "ÁÖ¼Ò¸¦ ³»º¸³¾ ¼ö ¾ø½À´Ï´Ù %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "¹üÁÖ: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "º¸¾È" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "À̸ÞÀÏ" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº ³»º¸³»±â À¯Çü\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "À̸§/ȸ»ç" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "À̸§/ȸ»ç" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "ȸ»ç/À̸§" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "»èÁ¦µÈ ÀÚ·á´Â º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "¹üÁÖ´Â Çã¿ëµÇÁö ¾Ê½À´Ï´Ù\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "½ÇÇà ¸í·É = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Àá±Ý ½ÇÆÐ\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "¹üÁÖ: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "¸ÞÀÏ" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "ÀüÈ­°É±â" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-À̸§¾øÀ½-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 ÀÚ·á" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d ¹øÂ° ÀÚ·á (Àüü %d °³)" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "À̸§" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "ÁÖ¼Ò" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "±âŸ" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "³ëÆ®" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "ÀüÈ­" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "»¡¸® ã±â: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Ãë¼Ò" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "º¯°æÇÑ °Í Ãë¼Ò" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Áö¿ì±â" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "¼±ÅÃµÈ ÀÚ·á Áö¿ì±â" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Áö¿ì±â Ãë¼Ò" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "¼±ÅÃµÈ ÀÚ·á Áö¿ì±â Ãë¼Ò" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "º¹»ç" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "¼±ÅÃµÈ ÀÚ·á º¹»ç" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "»õ Ç׸ñ" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "»õ ÀÚ·á ´õÇϱâ" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "ÀÚ·á ´õÇϱâ" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "»õ ÀÚ·á ´õÇϱâ" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "¹Ù²ï °Í Àû¿ë" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "º¯°æ ½ÇÇà" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "º¸¾È" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Ãë¼Ò" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Á¦°Å" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "º¸±â\n" "¸ñ·Ï ³»¿¡¼­" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "»ó±â½Ã۱â" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "ÀÏ" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Àüü" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "ºÐ" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "½Ã" #: ../alarms.c:253 msgid "Remind me" msgstr "»ó±â½Ã۱â" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "¾à¼Ó »ó±â" #: ../alarms.c:513 msgid "Past Appointment" msgstr "°ú°Å ¾à¼Ó" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "¿¬±âµÈ ¾à¼Ó" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "¾à¼Ó" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot ¾Ë¶÷" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC ÆÄÀÏÀÌ ±úÁü?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek ½ÇÆÐ - Áß¿äÇÑ ¿¡·¯\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "À̸§¹Ù²Ù±â ½ÇÆÐ" #: ../category.c:407 msgid "Move" msgstr "À̵¿" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "¹üÁÖ ÆíÁý" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "ÀÌ¹Ì ÃÖ´ë ¹üÁÖ ¼ö(16)¸¦ »ç¿ë Áß" #: ../category.c:440 msgid "Enter New Category" msgstr "»õ ¹üÁÖ ³Ö±â" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "¹üÁÖ ÆíÁý ¿À·ù" #: ../category.c:452 msgid "You must select a category to rename" msgstr "À̸§À» ¹Ù²Ù±â À§Çؼ­´Â ¹üÁÖ¸¦ ¼±ÅÃÇØ¾ß ÇÔ" #: ../category.c:461 msgid "Enter New Category Name" msgstr "»õ ¹üÁÖ À̸§ ³Ö±â" #: ../category.c:476 msgid "You must select a category to delete" msgstr "»èÁ¦Çϱâ À§Çؼ­´Â ¹üÁÖ¸¦ ¼±ÅÃÇØ¾ß ÇÔ" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%d°³ ÀÚ·á°¡ %s¿¡ ÀÖ½À´Ï´Ù.\n" "%s·Î ¿Å±â°Å³ª »èÁ¦ÇϽðڽÀ´Ï±î?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "%s ÆÄÀÏÀÇ À߸øµÈ »óÅ (%d ÁÙ)\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "%s ¹üÁÖ´Â ÇÑ ¹ø ÀÌ»ó »ç¿ëµÉ ¼ö ¾øÀ½" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "¹üÁÖ:" #: ../category.c:834 msgid "New" msgstr "»õ ¹üÁÖ" #: ../category.c:841 msgid "Rename" msgstr "À̸§¹Ù²Ù±â" #: ../dat.c:512 msgid "unknown type =" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº À¯Çü=" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "ÁÙ´ç Ç׸ñ ¼ö != %d, ¾Ë·ÁÁöÁö ¾ÊÀº Çü½Ä\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "Ç׸ñ ¼ö !=%d, ¾Ë·ÁÁöÁö ¾ÊÀº Æ÷¸Ë\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº Æ÷¸Ë, ÆÄÀÏÀÌ À߸øµÈ ½ºÅ°¸¶¸¦ °¡Áü\n" #: ../dat.c:636 msgid "File schema is:" msgstr "ÆÄÀÏ ½ºÅ°¸¶:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "¿øÄ¢: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d ÀÚ·á %d, Ç׸ñ %d: Ÿ´çÄ¡ ¾ÊÀº À¯Çü. ±â´ë°ª %d, ã¾ÆÁø °Í %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "ÆÄÀÏ Àбâ Á¾·á\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "DatebookDB¿¡¼­ ¾Ë·ÁÁöÁö ¾ÊÀº ¹Ýº¹À¯Çü (%d) ¹ß°ß\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "¹Ýº¹ ´ÜÀ§:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "¹Ýº¹ ¿äÀÏ" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "¹Ýº¹ ´ÜÀ§:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "¹Ýº¹ ¿äÀÏ" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "¹Ýº¹ ¿äÀÏ" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "¹Ýº¹ ¿äÀÏ" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "ÀÏ" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "¿ù" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "È­" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "¼ö" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "¸ñ" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "±Ý" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Åä" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "³¡³ª´Â ³¯Â¥" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "¹Ýº¹ ¿äÀÏ" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "ÀÚ·á ¼ö = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "³ëÆ®" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "¾Ë¶÷" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "¹Ýº¹ ´ÜÀ§:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "¿äÀÏ" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "¾à¼Ó ³»¿ë > %d, %d±îÁö Àß·ÁÁü\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "¿À·ù" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "ÆÄÀÏÀÌ datebook.dat Æ÷¸ËÀÌ ¾Æ´Ñ µí\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº ³»º¸³»±â À¯Çü" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "³»º¸³»±â" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "¸ðµç Datebook ÀÚ·á ³»º¸³»±â" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "»õÀ̸§ ÀúÀå" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "ÆîÃ帱â" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Datebook ¹üÁÖ" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "¾øÀ½" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "½ÃÀÛ ³¯Â¥" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "³¡³ª´Â ³¯Â¥" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "ÀÏ¿äÀÏ" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "¿ù¿äÀÏ" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "È­¿äÀÏ" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "¼ö¿äÀÏ" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "¸ñ¿äÀÏ" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "±Ý¿äÀÏ" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Åä¿äÀÏ" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4¹øÂ°" #: ../datebook_gui.c:1760 msgid "Last" msgstr "¸¶Áö¸·" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "ÀÌ ¾à¼ÓÀº 4¹øÂ° ÇØ´ç ¿ùÀÇ\n" "4¹øÂ° %s¿¡\n" "ȤÀº ÇØ´ç ¿ùÀÇ ¸¶Áö¸· %s¿¡\n" "¹Ýº¹µÉ ¼ö ¾ø½À´Ï´Ù.\n" "¾î´À °ÍÀ» ¿øÇմϱî?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Áú¹®?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "¹Ýº¹ »ç°ÇÀÔ´Ï´Ù\n" "ÇöÀç ¹Ù²Û °ÍµéÀ»\n" "ÇöÀç »ç°Ç¿¡¸¸ Àû¿ëÇϽðڽÀ´Ï±î\n" "¹Ýº¹µÇ´Â ¸ðµç »ç°Çµé¿¡\n" "Àû¿ëÇϽðڽÀ´Ï±î?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "ÇöÀç" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "ÀÏ" #: ../datebook_gui.c:2028 msgid "week" msgstr "ÁÖ" #: ../datebook_gui.c:2029 msgid "month" msgstr "¿ù" #: ../datebook_gui.c:2030 msgid "year" msgstr "³â" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "¸Å %d %s¿¡ ¹Ýº¹ÇÏ´Â ¾à¼ÓÀ» °¡Áú ¼ö ¾ø½À´Ï´Ù\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "ÁÖÁßÀÇ ¾î¶² ³¯¿¡µµ ¹Ýº¹ÇÏÁö ¾Ê´Â¸ÅÁÖ ¹Ýº¹ ¾à¼ÓÀ» °¡Áú ¼ö´Â ¾ø½À´Ï´Ù" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "ºñ ½Ã°£" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Ÿ´çÇÏÁö ¾ÊÀº ¾à¼Ó" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "ÀÌ ¾à¼ÓÀÇ Á¾·áÀÏÀÌ\n" "½ÃÀÛ³¯Â¥ÀÇ ÀÌÀüÀÔ??´Ï´Ù." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "³¯Â¥ ¾øÀ½" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "DateBookDB °í±Þ´ÜÀ§ ¿¡·¯ = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (¿À´Ã)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "ÁÖ" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "ÁÖ´ÜÀ§ ¾à¼Óº¸±â" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "¿ù" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "¿ù´ÜÀ§ ¾à¼Óº¸±â" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Cats" #: ../datebook_gui.c:5021 msgid "Time" msgstr "½Ã°£" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "ÇÒ ÀÏ º¸±â" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "°úÁ¦" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "±âÇÑ" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "¾Ë¶÷" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "³¯Â¥:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "½ÃÀÛ ½ÃÁ¡" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Á¾·á ½ÃÁ¡" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk ²¿¸®Ç¥" #: ../datebook_gui.c:5447 msgid "Day" msgstr "ÀÏ" #: ../datebook_gui.c:5450 msgid "Year" msgstr "³â" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "ÀÌ »ç°ÇÀº ¹Ýº¹µÇÁö ¾ÊÀ½" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "ºóµµÀÇ ´ÜÀ§: ¸Å" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "ÀÏ" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Á¾·á ½ÃÁ¡" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "ÁÖ" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "¿ù" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "¹Ýº¹ ´ÜÀ§:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "¿äÀÏ" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "ÀÏ" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "³â" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "ÀüÈ­ °É±â" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Á¢µÎ»ç 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Á¢µÎ»ç 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Á¢µÎ»ç 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "ÀüÈ­ ¹øÈ£:" #: ../dialer.c:319 msgid "Extension" msgstr "È®Àå" #: ../dialer.c:341 msgid "Dial Command" msgstr "ÀüÈ­°É±â ¸í·É" #: ../export_gui.c:121 msgid "File Browser" msgstr "ÆÄÀÏ ºê¶ó¿ìÁ®" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "³»º¸³»±âÇÒ ÀÚ·á ¼±ÅÃ" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Ctrl°ú Shift ۸¦ »ç¿ëÇϼ¼¿ä" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "µé¿©¿À±â" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "ÀÚÇ¥°¡ º¸¾È Á¤º¸·Î ÁöÁ¤µÊ " #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "ÀÚ·á°¡ º¸¾È Á¤º¸·Î ÁöÁ¤µÇÁö ¾ÊÀ½" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "µé¿©¿À±â ÀüÀÇ ¹üÁÖ: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "ÀÚ·á°¡ ´ÙÀ½ ¹üÁÖ·Î ÀÔ·ÂµÊ [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "¸ðµÎ µé¿©¿À±â" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "°Ç³Ê¶Ù±â" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "¼û±è À¯ÇüÀÇ µð·ºÅ丮·Î º¯°æÇÏ·Á¸é, ¾Æ·¡¿¡ Á÷Á¢ ÀÔ·ÂÇϰí TABÀ» Ä¡¼¼¿ä" #: ../import_gui.c:484 msgid "Import File Type" msgstr "µé¿©¿Ã ÆÄÀÏ À¯Çü" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "¼³Ä¡ÇÒ ÆÄÀϵé" #: ../install_gui.c:372 msgid "Install" msgstr "¼³Ä¡" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/ÆÄÀÏ/»ç¿ëÀÚ ÀÔ·Â" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "»ç¿ëÀÚ À̸§" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "»ç¿ëÀÚ ID" #: ../jpilot.c:317 msgid "Print" msgstr "Àμâ" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "ÀÌ ÄÁµàÀÕÀº ÀμâÁö¿øÀÌ ¾ÈµË´Ï´Ù." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "ÀÌ ÄÁµàÀÕÀº µé¿©¿À±â Áö¿øÀÌ ¾ÈµË´Ï´Ù." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "ÀÌ ÄÁµàÀÕÀº ³»º¸³»±â Áö¿øÀÌ ¾ÈµË´Ï´Ù." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "½ÌÅ© Ãë¼Ò" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "ÀÌ ÆÊÀº ÃÖ±Ù ½ÌÅ©µÈ °Í°ú µ¿ÀÏÇÑ »ç¿ëÀÚ À̸§\n" "ȤÀº »ç¿ëÀÚ ID¸¦ °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù.\n" "½ÌÅ©ÇÑ´Ù¸é ¿øÄ¡ ¾Ê´Â °á°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.\n" "Àß ¸ð¸£°Ú´Ù¸é »ç¿ëÀÚ ¼³¸í¼­¸¦ Àо½Ê½Ã¿À." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "ÀÌ ÆÊ¿¡´Â »ç¿ëÀÚ id°¡ ¾ø½À´Ï´Ù.\n" "¸ðµç ÆÊÀº °íÀ¯ÀÇ »ç¿ëÀÚ id¸¦ °¡Áö°í ÀÖ¾î¾ß Á¦´ë·Î ½ÌÅ©µË´Ï´Ù.\n" "Çϵ帮¼ÂÀ» Çß´Ù¸é, ¸Þ´ºÀÇ º¹±¸Çϱ⸦ »ç¿ëÇϰųª pilot-xfer¸¦\n" "»ç¿ëÇÏ¿© º¹±¸ÇϽʽÿÀ.\n" "»ç¿ëÀÚÀ̸§°ú ID¸¦ Ãß°¡Çϱâ À§Çؼ­´Â install-user ¸í·ÉÇà µµ±¸¸¦\n" "»ç¿ëÇϰųª ¸Þ´ºÀÇ »ç¿ëÀÚ ÀÔ·ÂÀ» »ç¿ëÇϽʽÿÀ.\n" "Àß ¸ð¸£°Ú´Ù¸é »ç¿ëÀÚ ¼³¸í¼­¸¦ Àо½Ê½Ã¿À." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "½ÌÅ© Ãë¼Ò" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "½ÌÅ© °è¼ÓÇϱâ" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "½ÌÅ© ¹®Á¦" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " »ç¿ëÀÚ: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "½ÌÅ© ¼öÇà Áß ¾Ë·ÁÁöÁö ¾ÊÀº ¸í·É\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Á¤º¸ %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/ÆÄÀÏ(_F)" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/ÆÄÀÏ/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/ÆÄÀÏ/ã±â(_F)" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/ÆÄÀÏ/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/ÆÄÀÏ/¼³Ä¡Çϱâ(_I)" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/ÆÄÀÏ/µé¿©¿À±â" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/ÆÄÀÏ/³»º¸³»±â" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/ÆÄÀÏ/¼±ÅûçÇ×" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/ÆÄÀÏ/Àμâ(_P)" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/ÆÄÀÏ/»ç¿ëÀÚ ÀÔ·Â" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/ÆÄÀÏ/ÆÊ º¹±¸Çϱâ" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/ÆÄÀÏ/Á¾·á(_Q)" #: ../jpilot.c:1121 msgid "/_View" msgstr "/º¸±â(_V)" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/º¸±â/º¸¾È ÀÚ·á °¨Ãß±â" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/º¸±â/º¸¾È ÀÚ·á Ç¥½ÃÇϱâ" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/º¸±â/º¸¾È ÀÚ·á ¸¶½ºÅ©" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/º¸±â/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/º¸±â/ÀÏÁ¤°ü¸®" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/º¸±â/ÁÖ¼Ò·Ï" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/º¸±â/ÇÒÀÏ" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/º¸±â/¸Þ¸ð" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/Ç÷¯±×ÀÎ(_P)" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/À¥(_W)" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/À¥/³Ý½ºÄÉÀÔ" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/À¥/¸ðÁú¶ó" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/À¥/°¥·¹¿Â" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/À¥/¿ÀÆä¶ó" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/À¥/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/À¥/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/À¥/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/À¥/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/À¥/ÄÈÄ¿·¯" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/µµ¿ò¸»(_H)" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/µµ¿ò¸»/J-Pilot¿¡ °üÇÏ¿©" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/Ç÷¯±×ÀÎ(_P)/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/µµ¿ò¸»(_H)/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "´Þ·Â:ÇÑÁÖ ½ÃÀÛ(_s):0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Ç÷¯±×ÀÎÀÌ ·ÎµùµÇÁö ¾ÊÀ½.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "¸ðµç ¾Ë¶÷ ¹«½Ã.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "°ú°Å ¾Ë¶÷ ¹«½Ã.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "ÆÄÀÌÇÁ¸¦ ¿­ ¼ö ¾øÀ½\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "º¸¾È Á¤º¸ Ç¥½ÃÇϱâ Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "º¸¾È Á¤º¸ °¨Ãß±â Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "º¸¾È Á¤º¸ ¸¶½ºÅ© Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "µ¥½ºÅ©Å¾À¸·Î ÆÊÀ» ½ÌÅ©Çϱâ Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "ÁÖ¼Ò·Ï ½ÌÅ©" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "ÆÊÀ» µ¥½ºÅ©Å¾À¸·Î ½ÌÅ©ÇÑ ÈÄ\n" "¹é¾÷Çϱâ" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "ÀÏÁ¤°ü¸®/¿À´Ã·Î °¡±â" #: ../jpilot.c:2144 msgid "Address Book" msgstr "ÁÖ¼Ò·Ï" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "ÇÒÀÏ ¸ñ·Ï" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "¸Þ¸ðÀå" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Áö±Ý Çϱâ" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "³ªÁß¿¡ ¾Ë·ÁÁÖ±â" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "´Ù½Ã ¾Ë·ÁÁÖÁö ¸»±â" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-PilotÀº GTK2 ±×·¡ÇÈ ÅøÅ¶À» »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ÀÌ ¹öÀüÀÇ ÅøÅ¶Àº UTF-8À»»ç¿ë" "ÇÏ¿© ¹®ÀÚ¸¦ ºÎȣȭÇÕ´Ï´Ù.\n" "ASCII ¹®ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚ¸¦ º¸±â À§Çؼ­´Â UTF-8 ¹®ÀÚ¸¦ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.\n" "(¿¹¸¦ µé¸é ¾Ç¼¾Æ®).\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "¹®ÀÚ ¼Â " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "UTF-I ºÎȣȭ ¼±ÅÃ" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "³¯Â¥ +format°ú °°Àº +B +M +A +T Æ÷¸Ë\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr "-v ¹öÀü Á¤º¸ º¸¿©ÁØ ÈÄ ³ª°¡±â.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr "-h µµ¿ò¸» º¸¿©ÁØ ÈÄ ³ª°¡±â.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr "-f Çü½Ä ÄÚµå µµ¿ò¸» º¸¿©ÁÖ±â.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "-D DateBook ´ýÇÁÇϱâ\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "-N DateBook¿¡¼­ ¿À´Ã ¾à¼Ó ´ýÇÁ\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "-NYYYY/MM/DD DatebookÀÇ YYYY/MM/DDÀÇ ¾à¼Ó ´ýÇÁ.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "-A ÁÖ¼Ò·Ï ´ýÇÁ\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr "-T CSV·Î ÇÒÀÏ ¸ñ·Ï ´ýÇÁ.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "-M ¸Þ¸ð ´ýÇÁ.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" "Æ÷Æ®/Àü¼Û¼Óµµ/¹é¾÷ÀÇ ¼ýÀÚ, ±âŸ Á¤º¸¸¦ ¾ò±â À§ÇØ J-Pilot ¼±ÅûçÇ×À» Àбâ.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr "-v ¹öÀü°ú ÄÄÆÄÀÏ ¿É¼ÇÀ» Ç¥½ÃÇϰí Á¾·á.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr "-d µð¹ö±× Á¤º¸¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î Ç¥½Ã.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -p Ç÷¯±×ÀÎ ·ÎµùÀ» °Ç³Ê¶Ü.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = ¹Ýº¹, °¡´ÉÇÏÁö ¾Ê´Ù¸é ½ÌÅ©ÇÑ ÈÄ Á¾·á.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {port} = ½ÌÅ©¸¦ À§ÇØ ¼±ÅûçÇ× Á¤º¸ ´ë½Å ÀÌ Æ÷Æ® »ç¿ë\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "ÆÄÀÏ ¿­±â ¿À·ù: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "ÆÄÀÏÀ» ¿©´Â Áß ¿¡·¯: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "¿À·ù" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "´ç½ÅÀÇ È¨ ȯ°æÁ¤º¸´Â ³Ê¹« ±é´Ï´Ù.\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "ÀÌ ÀÚ·á´Â ÀÌ¹Ì »èÁ¦µÇ¾úÀ½.\n" "´ÙÀ½ ½ÌÅ©ÇÒ ¶§ ÆÊ¿¡¼­ »èÁ¦µÉ ¿¹Á¤ÀÓ\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "PC ÀÚ·áÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "»èÁ¦ÇÒ ÀڷḦ ãÀ» ¼ö ¾øÀ½\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº Çì´õ ¹öÀü %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d ÆÄÀÏ ¿­±â ¿À·ù: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d ÆÄÀÏ Àб⠿À·ù: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "ÆÄÀÏ ¿­±â ¿À·ù: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "ÆÄÀÏ Àб⠿À·ù %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "PC ÆÄÀÏÀ» ¿­ ¶§ ¿À·ù 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "PC ÆÄÀÏÀ» ¿­ ¶§ ¿À·ù 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "¾Ë·ÁÁöÁö ¾ÊÀº PC header ¹öÀü = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "±â·Ï ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½, Æ÷±â.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "±âÆø ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "¸Þ¸ð ÅØ½ºÅ© Å©±â > 65535, Àß¶ó³¿\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "¸Þ¸ð µé¿©¿À±â %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "ÆÄÀÏÀÌ memopad.dat Çü½ÄÀÌ ¾Æ´ÑµíÇÔ\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "¸Þ¸ð %d¸¦ ³»º¸³»±â ÇÒ ¼ö ¾øÀ½\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "¸Þ¸ðÀå" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "¿ùº° º¸±â" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "ÆÊ ºñ¹Ð¹øÈ£" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Ʋ·ÈÀ½, ÆÊ ºñ¹Ð¹øÈ£¸¦ ´Ù½Ã ÀÔ·ÂÇϼ¼¿ä" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "ÆÊ ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇϼ¼¿ä" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "ÆÄÀÏ Àб⠿À·ù: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "¹«ÇÑ ·çÇÁ" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "%s%s ¶óÀÎ 1À» Àд µ¿¾È: [%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "À߸øµÈ ¹öÀü\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "¼±ÅûçÇ×->ÄÁµàÀÕÀ» Á¡°ËÇϼ¼¿ä\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Ç÷¯±×ÀÎ [%s]¸¦ ¿©´Âµ¥ ½ÇÆÐ\n" "¿À·ù [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " Ç÷¯±×ÀÎÀÌ Å¸´çÇÏÁö ¾ÊÀ½: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Ç÷¯±âÀÎ: [%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "ÀÌ Ç÷¯±×ÀÎÀÇ ¹öÀü (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "J-Pilot ¹öÀü¿¡ ºñÃß¾î ÀÛµ¿Çϱ⠳ʹ« ¿À·¡µÇ¾ú½À´Ï´Ù.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "¼±ÅûçÇ×" #: ../prefs_gui.c:483 msgid "Locale" msgstr "·ÎÄÉÀÏ" #: ../prefs_gui.c:485 msgid "Settings" msgstr "¼¼ÆÃ" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "ÀÏÁ¤°ü¸®" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "ÇÒÀÏ" #: ../prefs_gui.c:493 msgid "Memo" msgstr "¸Þ¸ð" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "¾Ë¶÷" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "ÄÁµàÀÕ" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "´ÜÃà ³¯Â¥ Çü½Ä " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "±ä ³¯Â¥ Çü½Ä " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "½Ã°£ Çü½Ä " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "³» GTK »ö ÆÄÀÏ " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "½ÌÅ© ¹®Á¦" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "¹é¾÷ ¼ýÀÚ" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "»èÁ¦ ÀÚ·á º¸¿©ÁÖ±â (±âº»°ª ¾Æ´Ï¿À)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "º¯°æµÈ »èÁ¦ ÀÚ·á º¸¿©ÁÖ±â (±âº»°ª ¾Æ´Ï¿À)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "ÆÄÀÏ ¼³Ä¡ (J-Pilot -> PDA) ÇÒ ¶§ È®ÀÎ (±âº»°ª ¿¹)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "ÆË¾÷ µµ¿ò¸» º¸¿©ÁÖ±â (±âº»°ª ¿¹)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "¾à¼ÓÀÖ´Â ³¯Â¥¸¦ ´Þ·Â¿¡¼­ °­Á¶Çϱâ" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "ÀÏ/ÁÖ/¿ù°£ º¸±â¿¡¼­ ¿À´ÃÀ» ÁÖ¼®Ã³¸®" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "ÀÏ/ÁÖ/¿ù°£ º¸±â¿¡¼­ ¸Å³â ±â³äÀÏÀ» Ãß°¡" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "DateBk ³ëÆ® Åà »ç¿ëÇϱâ" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "ÀÌ ¹öÀü¿¡¼­´Â DateBk Áö¿øÀ» ÇÏÁö ¾ÊÀ½" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "¸ÞÀÏ ¸í·É" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s´Â À̸ÞÀÏ ÁÖ¼Ò·Î ´ëÄ¡µÊ" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "¿Ï·áµÈ ÇÒÀÏ ¼û±â±â" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "¾ÆÁ÷ ¸¶°¨ÀÏÀÌ ¾Æ´Ñ ÇÒÀÏ ¼û±â±â" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "ÀÚ·á ¿Ï·á ³¯Â¥" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Manana µ¥ÀÌŸº£À̽º »ç¿ë" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "¸¶°¨³¯Â¥·Î ±âº»°ª »ç¿ë" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Memo32 »ç¿ë (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "¾à¼Ó ȯ±â¸¦ À§ÇØ ¾Ë¶÷ â ¿­±â" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "ÀÌ ¸í·ÉÀ» ¼öÇà" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "°æ°í: ÀÓÀÇÀÇ ½© ¸í·ÉÀ» ¼öÇàÇÏ´Â °ÍÀº À§ÇèÇÒ ¼ö ÀÖ½À´Ï´Ù!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "¾Ë¶÷ ¸í·É" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t´Â ¾Ë¶÷½Ã°£À¸·Î ´ëÄ¡µÊ" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d´Â ¾Ë¶÷ ³¯Â¥·Î ´ëÄ¡µÊ" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D´Â ¾Ë¶÷ ³»¿ë ¼³¸íÀ¸·Î ´ëÄ¡µÊ" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%NÀº ¾Ë¶÷ ³ëÆ®·Î ´ëÄ¡µÊ" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (±â¼ú ´ëÄ¡)´Â ÇöÀçÀÇ ÇÁ·Î±×·¥¿¡¼­ Áö¿øÇÏÁö ¾ÊÀ½" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (³ëÆ® ´ëÄ¡)´Â ÇöÀçÀÇ ÇÁ·Î±×·¥¿¡¼­ Áö¿øÇÏÁö ¾ÊÀ½" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "ÀÏÁ¤°ü¸® ½ÌÅ©" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "ÁÖ¼Ò·Ï ½ÌÅ©" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "ÇÒÀÏ ½ÌÅ©" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "¸Þ¸ð ½ÌÅ©" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Manana ½ÌÅ©" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "J-OS (ÀϺ»ÆÇ ÆÊÀÌ ¾Æ´Ô:WorkPad/CLIE) »ç¿ëÇϱâ" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "½ÌÅ© %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Àμ⠼±ÅûçÇ×" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Á¾ÀÌ Å©±â" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "ÀϺ° Àμâ" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "ÁÖº° Àμâ" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "¿ùº° Àμâ" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "%s ÀÚ·á »èÁ¦µÊ" #: ../print_gui.c:268 msgid "All records in this category" msgstr "ÀÌ ¹üÁÖÀÇ ¸ðµç ÀÚ·á" #: ../print_gui.c:272 msgid "Print all records" msgstr "¸ðµç ÀÚ·á Àμâ" #: ../print_gui.c:294 msgid "One record per page" msgstr "ÂÊ´ç ÇϳªÀÇ ÀÚ·á" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " °¢ ÀÚ·á »çÀÌ¿¡ ºó ÁÙ" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Àμ⠸í·É (¿¹. lpr, ȤÀº cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "ÆÊ º¹¿ø" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "¼³Ä¡ÇÒ ÆÄÀϵé" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "´ç½ÅÀÇ ÆÊÀ» º¹¿øÇϱâ À§ÇØ:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. º¹¿øÇϱ⸦ ¿øÇÏ´Â ¸ðµç ÀÀ¿ëÇÁ·Î±×·¥À» ¼±ÅÃ. ±âº»°ªÀº ¸ðµÎ." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. »ç¿ëÀÚ À̸§°ú »ç¿ëÀÚ ID¸¦ ÀÔ·Â" #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. È®ÀÎ ¹öư ´©¸£±â" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "À̰ÍÀº ÇöÀç ÆÊ¿¡ ÀÖ´Â ÀڷḦ µ¤¾î¾µ °ÍÀÔ´Ï´Ù." #: ../search_gui.c:142 msgid "datebook" msgstr "ÀÏÁ¤°ü¸®" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "ÁÖ¼Ò·Ï" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "ÇÒÀÏ" #: ../search_gui.c:359 msgid "memo" msgstr "¸Þ¸ð" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "¸Þ¸ð" #: ../search_gui.c:419 msgid "plugin ?" msgstr "Ç÷¯±×ÀÎ ?" #: ../search_gui.c:499 msgid "No records found" msgstr "¹ß°ßµÈ ÀÚ·á°¡ ¾øÀ½" #: ../search_gui.c:598 msgid "Search" msgstr "ã±â" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "ã±â: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "´ë¼Ò¹®ÀÚ ±¸ºÐ" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "Àá±ÝÆÄÀÏ ¿­±â ½ÇÆÐ\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "Àá±Ý ½ÇÆÐ\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "½ÌÅ© ÆÄÀÏÀÌ pid %d¿¡ ÀÇÇØ Àá°ÜÁü\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "Àá±ÝÇØÁ¦ ½ÇÆÐ\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "½ÌÅ©°¡ pid %d¿¡ ÀÇÇØ Àá±è\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Á÷·ÄÆ÷Æ®¿Í ¼¼ÆÃÀ» Á¡°ËÇϼ¼¿ä\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Ȩµð·ºÅ丮¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (»ý¼º ID '%s') ¾÷µ¥ÀÌÆ® Áß, °¡Á®¿À±â´Â °Ç³Ê¶Ü.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "'%s' °¡Á®¿À´Â Áß (»ý¼º ID '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "½ÇÆÐ, %s ÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "½ÇÆÐ, %s µ¥ÀÌÅͺ£À̽º¸¦ ¹é¾÷ÇÒ ¼ö ¾ø½À´Ï´Ù.\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "È®ÀÎ\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "%s °Ç³Ê¶Ü (»ý¼º ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "%s ¼³Ä¡ Áß " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "ÆÄÀÏÀ» ½ÌÅ©ÇÒ ¼ö ¾ø½À´Ï´Ù: '%s': ±úÁø ÆÄÀÏ?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(»ý¼º ID´Â '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(»ý¼º ID´Â '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "ÆÄÀÏÀ» ¿­¼ö ¾ø½À´Ï´Ù: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "%s ¼³Ä¡ ½ÇÆÐ" #: ../sync.c:1619 msgid "Failed.\n" msgstr "½ÇÆÐ.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s ¼³Ä¡µÊ " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d %s ÇÁ·Î±×·¥ Á¤º¸¸¦ °¡Á®¿À´Â Áß ¿À·ù\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d %s ÇÁ·Î±×·¥ Á¤º¸ ÀÎÃâ Áß ¿À·ù\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "%s ÇÁ·Î±×·¥ Á¤º¸ ºí·°À» Àд Áß ¿À·ù\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "¿ø°ÝÀ¸·Î %s ¹üÁÖ¸¦ Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "¿ø°Ý»ó¿¡ ³Ê¹« ¸¹Àº ¹üÁÖ°¡ ÀÖ½À´Ï´Ù.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "%s ÀÇ µ¥½ºÅ©Å¾»ó ¸ðµç ÀÚ·á°¡ %s·Î ¿Å°ÜÁú °ÍÀÔ´Ï´Ù.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "%s ½ÌÅ©Áß\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "%s ÀڷḦ ±â·Ï." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "%s ÀÚ·á ±â·Ï ½ÇÆÐ" #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "%s ÀÚ·á »èÁ¦ ½ÇÆÐ" #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "%s ÀÚ·á »èÁ¦µÊ" #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "%s ÀÚ·á »èÁ¦µÊ" #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "%s ÀÚ·á ±â·ÏµÊ" #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "%s ÀÚ·á ±â·Ï ½ÇÆÐ" #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "%s ÀÚ·á »èÁ¦ ½ÇÆÐ" #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "%s ÀÚ·á »èÁ¦µÊ" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_ÀÚ·á»èÁ¦(_D) ½ÇÆÐ\n" "ÀÚ·á°¡ ÀÌ¹Ì ÆÊ¿¡¼­ »èÁ¦µÇ¾ú±â ¶§¹®ÀÏ ¼ö ÀÖ½À´Ï´Ù.\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "»ç¿ëÀÚ Á¤º¸ ¼³Ä¡ÇϱⰡ Á¾·áµÊ.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " %s ÀåÄ¡¿¡¼­ ½ÌÅ©Áß\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Áö±Ý ÇÖ½ÌÅ© ¹öưÀ» ´©¸£¼¼¿ä\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "ÃÖ±Ù ½ÌÅ©ÇÑ »ç¿ëÀÚÀ̸§-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ÃÖ±Ù ½ÌÅ©ÇÑ »ç¿ëÀÚ ID-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " ÀÌ »ç¿ëÀÚÀ̸§-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " ÀÌ »ç¿ëÀÚ ID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "»ç¿ëÀÚ À̸§Àº \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "»ç¿ëÀÚ ID´Â %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "ÃÖ±Ù ½ÌÅ©ÇÑ PC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "ÀÌ PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "½ÌÅ© Ãë¼Ò\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "ÆÊ º¹¿ø ¿Ï·á.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "J-PilotÀ» ¾÷µ¥ÀÌÆ®Çϱâ À§ÇØ ½ÌÅ©ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "ºü¸¥ ½ÌÅ© ¼öÇàÁß.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "´À¸° ½ÌÅ© ¼öÇàÁß.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "J-PilotÀ» »ç¿ëÇØÁּż­ °¨»çÇÕ´Ï´Ù." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "¿Ï·á.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "%s »óÅ·Π³¡³»±â\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "ÇÒÀÏ ¼³¸í ÅýºÆ® > %d, %d±îÁö Àß·ÁÁü\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "ÇÒÀÏ ³ëÆ® ÅØ½ºÆ® > %d, %d±îÁö Àß·ÁÁü\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "¿Ï·á ³¯Â¥" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "ÆÄÀÏÀÌ todo.dat Çü½ÄÀÌ ¾Æ´ÑµíÇÔ\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "ÇÒÀÏ %d¸¦ ³»º¸³»±â ÇÒ ¼ö ¾øÀ½\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "¿Ï·á ³¯Â¥" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "¿Ï·á ³¯Â¥" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "¿ì¼±¼øÀ§: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "¿Ï·á" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "¿ì¼±¼øÀ§°¡ ¹üÀ§ ¹ÛÀÓ\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "³¯Â¥ ¾øÀ½" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "¿Ï·á" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "¿ì¼±¼øÀ§: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "¾à¼Ó ³¯Â¥:" #: ../utils.c:330 msgid "Today" msgstr "¿À´Ã" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "ºó DBÆÄÀÏ %s¸¦(À») ãÀ» ¼ö ¾øÀ½: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " ¼³Ä¡µÉ ¼ö ¾ø´Â µí.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù.\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s´Â µð·ºÅ丮ÀÔ´Ï´Ù." #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "%s µð·ºÅ丮¿¡ ÆÄÀÏÀ» ¾µ ¼ö ¾ø½À´Ï´Ù.\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "¹Ù²ï ÀڷḦ ÀúÀåÇϽðڽÀ´Ï±î?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "¹Ù²ï ³»¿ëÀ» ÀÌ ÀÚ·á¿¡ ÀúÀåÇϽðڽÀ´Ï±î?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "»õ ÀڷḦ ÀúÀåÇϽðڽÀ´Ï±î?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "ÀÌ »õ ÀڷḦ ÀúÀåÇϽðڽÀ´Ï±î?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "¹«ÇÑ ·çÇÁ, ¸ØÃß±â\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p Ç÷¯±×ÀÎ ·ÎµùÀ» °Ç³Ê¶Ü.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ÃÖ±Ù ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÈ ÀÌ·¡·Î ³õÄ£ ¾Ë¶÷À» ¹«½Ã.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ¸ðµç °ú°Å¿Í ¹Ì·¡ÀÇ ¾Ë¶÷À» ¹«½Ã.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " PILOTPORT¿Í PILOTRATE ȯ°æÁ¤º¸¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖÀ½\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " ¾î´À Æ÷Æ®·Î ¾î´À Á¤µµ ¼Óµµ·Î ½ÌÅ©ÇÒ °ÍÀÎÁö\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " PILOTPORT°¡ Á¤ÇØÁ®ÀÖÁö ¾Ê´Ù¸é ±âº»°ªÀº /dev/pilotÀÓ.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "ÆÄÀÏ Àб⠿À·ù" #: ../utils.c:1973 msgid "Date compiled" msgstr "³¯Â¥ ÄÄÆÄÀϵÊ" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "ÀÌ ¿É¼ÇµéÀ» °¡Áö°í ÄÄÆÄÀϵÊ:" #: ../utils.c:1976 msgid "Installed Path" msgstr "¼³Ä¡µÈ ÆÐ½º" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link ¹öÀü" #: ../utils.c:1982 msgid "USB support" msgstr "USB Áö¿ø" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "¿¹" #: ../utils.c:1984 msgid "Private record support" msgstr "º¸¾È ÀÚ·á Áö¿ø" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "¾Æ´Ï¿À" #: ../utils.c:1990 msgid "Datebk support" msgstr "ÀÏÁ¤°ü¸® Áö¿ø" #: ../utils.c:1996 msgid "Plugin support" msgstr "Ç÷¯±×ÀÎ Áö¿ø" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana Áö¿ø" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS Áö¿ø (¿Ü±¹¾î)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 Áö¿ø" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Ȩ ȯ°æ Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "´ç½ÅÀÇ È¨ ȯ°æÁ¤º¸´Â ³Ê¹« ±é´Ï´Ù.\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "¹üÁÖ ÆíÁý" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID´Â 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "»õ PC ID°¡ »ý¼ºµÇ¾ú½À´Ï´Ù. %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "¿À´ÃÀº %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "¿À´ÃÀº %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "PC Çì´õ¸¦ ÆÄÀÏ¿¡ ¾²´Â Áß ¿¡·¯: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "´ÙÀ½ id¸¦ ÆÄÀÏ¿¡ ¾²´Â Áß ¿¡·¯: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "ÁÖº° º¸±â" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "¿À½ºÆ®·¹Àϸ®¾Æ" #: ../Expense/expense.c:96 msgid "Austria" msgstr "¿À½ºÆ®¸®¾Æ" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "º§±â¿¡" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "ºê¶óÁú" #: ../Expense/expense.c:99 msgid "Canada" msgstr "ij³ª´Ù" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "µ§¸¶Å©" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (À¯·Î)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Çɶõµå" #: ../Expense/expense.c:103 msgid "France" msgstr "ÇÁ¶û½º" #: ../Expense/expense.c:104 msgid "Germany" msgstr "µ¶ÀÏ" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "È«Äá" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "¾ÆÀ̽½¶õµå" #: ../Expense/expense.c:107 msgid "India" msgstr "Àεµ" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Àεµ³×½Ã¾Æ" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "¾ÆÀÏ·£µå" #: ../Expense/expense.c:110 msgid "Italy" msgstr "ÀÌŸ®" #: ../Expense/expense.c:111 msgid "Japan" msgstr "ÀϺ»" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Çѱ¹" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "·è¼ÀºÎ¸£±×" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "¸»·¹ÀÌÁö¾Æ" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "¸ß½ÃÄÚ" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "³×´ú¶õµå" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "´ºÁú·£µå" #: ../Expense/expense.c:118 msgid "Norway" msgstr "³ë¸£¿þÀÌ" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "P.R.C." #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Çʸ®ÇÉ" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "½Ì°¡Æú" #: ../Expense/expense.c:122 msgid "Spain" msgstr "½ºÆäÀÎ" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "½º¿þµ§" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "½ºÀ§Áú·£µå" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "´ë¸¸" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "ű¹" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "¿µ±¹" #: ../Expense/expense.c:128 msgid "United States" msgstr "¹Ì±¹" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "°¡°èºÎ" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Ç×°ø·á" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "¾ÆÄ§½Ä»ç" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "¹ö½º" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "»ç¾÷Â÷ ½Ä»ç" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "ÀÚµ¿Â÷ ·»Æ®" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Àú³á" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "¿À¶ô" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "ÆÑ½º" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "±â¸§" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "¼±¹°" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "È£ÅÚ" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "¿¹ºñºñ" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "¼¼Å¹" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "¸®¹«Áø" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "¼÷¹Ú" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Á¡½É" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "¸¶Àϸ®Áö" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "ÁÖÂ÷" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "¿ìÆí" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "½º³¼" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "ÁöÇÏö" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "ºñǰ" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "ÅýÃ" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "ÀüÈ­" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "ÆÁ" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "ÅëÇà·á" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "±âÂ÷" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "°¡°èºÎ: ¾Ë·ÁÁöÁö ¾ÊÀº ºñ¿ë À¯Çü\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "°¡°èºÎ: ¾Ë·ÁÁöÁö ¾ÊÀº ÁöºÒ À¯Çü\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "¾Æ¸Þ¸®Ä­ ÀͽºÇÁ·¹½º" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Çö±Ý" #: ../Expense/expense.c:1377 msgid "Check" msgstr "üũīµå" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Å©·¹µ÷ Ä«µå" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "¸¶½ºÅÍ Ä«µå" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "¼±ºÒ" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "ºñÀÚ" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "À¯Çü:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "¾ç:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "¹üÁÖ:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "À¯Çü:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "ÁöºÒ:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "ÅëÈ­:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "¿ù:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "³¯Â¥:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "³â:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "¾ç:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "º¥´õ:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "µµ½Ã:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Âü°¡ÀÚ" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "۸µ: pack_KeyRing(): buf_size°¡ ³Ê¹« ÀÛÀ½\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "ºÎÁ¤È®ÇÑ Á¤º¸, ۸µ ºñ¹Ð¹øÈ£¸¦ ´Ù½Ã ÀÔ·ÂÇϼ¼¿ä" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "»õ ۸µ ºñ¹Ð¹øÈ£¸¦ ³ÖÀ¸¼¼¿ä" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "۸µ ºñ¹Ð¹øÈ£¸¦ ³ÖÀ¸¼¼¿ä" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "۸µ: ÆÄÀÏ %s°¡ ¹ß°ßµÇÁö ¾ÊÀ½.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "۸µ: ½ÌÅ©¸¦ ½ÃµµÇغ¸¼¼¿ä.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "۸µ" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "¸Þ¸ð %d¸¦ ³»º¸³»±â ÇÒ ¼ö ¾øÀ½\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "º¯°æ\n" "۸µ\n" "ºñ¹Ð¹øÈ£" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Ãë¼Ò" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "°èÁ¤" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "À̸§: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "°èÁ¤: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "ºñ¹Ð¹øÈ£: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "ºñ¹Ð¹øÈ£ »ý¼º" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "¸Þ¸ð ½ÌÅ©" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "¿Ï·á" #, fuzzy #~ msgid "Overwrite" #~ msgstr "ÆÄÀÏÀ» µ¤¾î¾²½Ã°Ú½À´Ï±î?" #~ msgid "Field" #~ msgstr "Çʵå" #~ msgid "kana(" #~ msgstr "°¡³ª(" #~ msgid "Quick View" #~ msgstr "»¡¸® º¸±â" #~ msgid "Unable to open %s%s file\n" #~ msgstr "%s%s ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "%s ¾Ë¶÷ ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "%s ¹üÁÖ´Â ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "%s ¹üÁÖ¸¦ »èÁ¦ÇÒ ¼ö ¾øÀ½.\n" #~ msgid "category name" #~ msgstr "¹üÁÖ À̸§" #~ msgid "debug" #~ msgstr "¿À·ù°Ë»ç" #~ msgid "Close" #~ msgstr "´Ý±â" #~ msgid "none" #~ msgstr "¾øÀ½" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "DatebookDB¿¡¼­ ¾Ë·ÁÁöÁö ¾ÊÀº ¹Ýº¹À¯Çü ¹ß°ß\n" #~ msgid "W" #~ msgstr "W" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "ÀÌ »ç°Ç¿¡´Â ƯÁ¤ ½Ã°£ Á¤º¸°¡ ¾øÀ½" #~ msgid "Start Time" #~ msgstr "½ÃÀÛ ½Ã°£" #~ msgid "End Time" #~ msgstr "Á¾·á ½Ã°£" #~ msgid "Dismiss" #~ msgstr "Á¾·á" #~ msgid "Done" #~ msgstr "¿Ï·á" #~ msgid "Add" #~ msgstr "Ãß°¡" #, fuzzy #~ msgid "User name" #~ msgstr "»ç¿ëÀÚ À̸§" #~ msgid " -v = version\n" #~ msgstr "-v = ¹öÀü\n" #~ msgid " -h = help\n" #~ msgstr "-h = µµ¿ò¸»\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = µð¹ö±×¸ðµå·Î ½ÇÇà\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = Ç÷¯±×ÀÎÀ» ¶ç¿ìÁö ¾Ê±â.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = ½ÌÅ©ÇÑ ÈÄ ¹é¾÷Çϱâ, °¡´ÉÇÏÁö ¾Ê´Ù¸é ½ÌÅ©¸¸ Çϱâ.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Ÿ´çÇÏÁö ¾ÊÀº À§»ó Á¤º¸: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/µµ¿ò¸»/PayBack ÇÁ·Î±×·¥" #~ msgid "Font Selection Dialog" #~ msgstr "±Û²Ã ¼±Åà ´ëÈ­»óÀÚ" #~ msgid "Clear" #~ msgstr "Áö¿ì±â" #~ msgid "Show private records" #~ msgstr "º¸¾È Á¤º¸ Ç¥½ÃÇϱâ" #~ msgid "Hide private records" #~ msgstr "º¸¾È Á¤º¸ °¨Ãß±â" #~ msgid "Mask private records" #~ msgstr "º¸¾È Á¤º¸ ¸¶½ºÅ©" #~ msgid "Font" #~ msgstr "±Û²Ã" #~ msgid "Go to the menu \"" #~ msgstr "¸Þ´º·Î °¡±â \"" #~ msgid "\" and change the \"" #~ msgstr "\" ±×¸®°í ¹Ù²Ù±â \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "PC ÀÚ·á ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½\n" #~ msgid "The first day of the week is " #~ msgstr "ÇÑÁÖÀÇ ½ÃÀÛ ¿äÀÏ " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Á÷·Ä Æ÷Æ® (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Á÷·Ä ¼Óµµ (USB¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾ÊÀ½)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "¸Þ¸ð32 ½ÌÅ© (pedit32)" #~ msgid "One record" #~ msgstr "ÀÚ·á Çϳª" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: Å©·¹À̵éÀÇ ÇÖ½ÌÅ© ¹öưÀ» ´©¸£°Å³ª \"kill %d\"¸¦ ½ÇÇà\n" #~ msgid "Finished\n" #~ msgstr "Á¾·áµÊ\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "ÃÖ±Ù »ç¿ëÀÚÀ̸§ = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "ÃÖ±Ù »ç¿ëÀÚID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "»ç¿ëÀÚÀ̸§ = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "»ç¿ëÀÚID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "ÆÊ: ÀÚ·á ¼ö = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "µð½ºÅ©: ÀÚ·á ¼ö = %d\n" #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰÀÚ¸¶ÀÚ ¾ÆÀÌÄÜ»óÅ·Π¸¸µë.\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s´Â µð·ºÅ丮°¡ ¾Æ´Ñ µíÇÔ.\n" #~ "µð·ºÅ丮¿©¾ß ÇÒ Çʿ䰡 ÀÖÀ½.\n" #~ msgid "AmEx" #~ msgstr "¾Æ¸ß½º" #~ msgid "CreditCard" #~ msgstr "Å©·¹µ÷Ä«µå" #~ msgid "MasterCard" #~ msgstr "¸¶½ºÅÍÄ«µå" #~ msgid "Expense: Unknown category\n" #~ msgstr "°¡°èºÎ: ¾Ë·ÁÁöÁö ¾ÊÀº ¹üÁÖ\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "Ȩ ȯ°æº¯¼ö°¡ ³Ê¹« ±é´Ï´Ù(>1024)\n" #~ msgid "Quit" #~ msgstr "Á¾·á" jpilot-1.8.2/po/zh_TW.po0000664000175000017500000024670712340261240011771 00000000000000# Chinese (traditional) translation for jpilot. # This file is distributed under the same license as the jpilot package. # # Anthony Fok , 2002. # Jouston Huang , 2004, 2005. msgid "" msgstr "" "Project-Id-Version: jpilot-0.99.8-pre7\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2005-01-14 22:27+0800\n" "Last-Translator: Jouston Huang \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=BIG5\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "°O¾ÐÅ餣¨¬" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s: %d Ū¤JÃþ§O¸ê°T %s ¿ù»~\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Ū¨úÀɮ׿ù»~: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "¿ù»~" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "³oµ§¬ö¿ý¤w¸g§R°£.\n" "¤Ï§R°£©Î¬O½Æ»s¤@¥÷¤§«á¤~¯à­×§ï.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "µLªk¶}±ÒÀÉ®×: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "µLªk¶}±ÒÀÉ®×: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Àɮצü¥G¤£¬O address.dat ®æ¦¡\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "¥¼ÂkÀÉ" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "½T©w" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "§_" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "¬O" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s ¬O¥Ø¿ý" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "¶}±ÒÀɮ׮ɵo¥Í¿ù»~" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "±z­nÂмgÀÉ®× %s ¶Ü?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "ÂмgÀÉ®×?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "¶}±ÒÀɮ׮ɵo¥Í¿ù»~: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "µLªk¶×¥X¦a§} %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Ãþ§O: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "¨p¤H" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "¹q¤l¶l¥ó" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "¥¼ª¾¶×¥XÃþ§O\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "©m¦W/¤½¥q" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "©m¦W/¤½¥q" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "¤½¥q/©m¦W" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "µLªk­×§ï¤w§R°£¬ö¿ý\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Ãþ§O¤£¥¿½T\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "°õ¦æ©R¥O = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "¥¢±Ñ.\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Ãþ§O: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "¶l¥ó" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "¼·¸¹" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-¥¼©R¦W-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 µ§¬ö¿ý" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "²Ä %d µ§ ¦@ %d µ§¬ö¿ý" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "©m¦W" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "¦a§}" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "¨ä¥L" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "µùÄÀ" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "¹q¸Ü" #: ../address_gui.c:3997 #, fuzzy msgid "Quick Find: " msgstr "§Ö³t´M§ä" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "¨ú®ø" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 #, fuzzy msgid "Cancel the modifications" msgstr "®M¥Î­×§ï Ctrl+Enter" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "§R°£" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "§R°£¿ï¾Üªº¬ö¿ý Ctrl+D" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "¤Ï§R°£" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "§R°£¿ï¾Üªº¬ö¿ý Ctrl+D" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "½Æ»s" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "§R°£¿ï¾Üªº¬ö¿ý Ctrl+D" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "·s¼W¬ö¿ý" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "¥[¤J³o­Ó·s¬ö¿ý Ctrl+R" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "¥[¤J¬ö¿ý" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "¥[¤J³o­Ó·s¬ö¿ý Ctrl+R" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "®M¥ÎÅܧó" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 #, fuzzy msgid "Commit the modifications" msgstr "®M¥Î­×§ï Ctrl+Enter" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "¨p¤H" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "¨ú®ø" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "²¾°£" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "¦b²M³æ\n" "Åã¥Ü" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "´£¿ô§Ú" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "¤Ñ" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "¥þ³¡" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "¤ÀÄÁ" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "¤p®É" #: ../alarms.c:253 msgid "Remind me" msgstr "´£¿ô§Ú" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "µLªk¶}±ÒÀÉ®× %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "¬ù·|´£¿ô" #: ../alarms.c:513 msgid "Past Appointment" msgstr "¹L©¹¬ù·|" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "©µ¿ð¬ù·|" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "¬ù·|" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot ¾x¹a" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC ÀÉ®×·lÃa¤F?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek ¥¢±Ñ - ÄY­«¿ù»~\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "­×§ï¦WºÙ¥¢±Ñ" #: ../category.c:407 msgid "Move" msgstr "²¾°Ê" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "½s¿èÃþ§O" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "³Ì¦h¥u¯à¨Ï¥Î16­ÓÃþ§O, ¤w¹F¤W­­" #: ../category.c:440 msgid "Enter New Category" msgstr "¿é¤J·sÃþ§O" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "½s¿èÃþ§O" #: ../category.c:452 msgid "You must select a category to rename" msgstr "§A¥²¶·­n¥ý¿ï¾Ü¤@­ÓÃþ§O¤~¯à§ï¦W" #: ../category.c:461 msgid "Enter New Category Name" msgstr "½Ð¿é¤J·sÃþ§Oªº¦WºÙ" #: ../category.c:476 msgid "You must select a category to delete" msgstr "§A¥²¶·¥ý¿ï¾Ü¤@­ÓÃþ§O¤~¯à§R°£" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Á`¦@¦³ %d µ§¸ê®Æ¦b %s.¤¤.\n" "½T©w­n²¾¦Ü %s ©Î¬O§R°£?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "µL®Ä³¯­zÀÉ®× %s ²Ä %d ¦æ\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Ãþ§O %s ¥u¯à¦³¤@­Ó" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Ãþ§O:" #: ../category.c:834 msgid "New" msgstr "·s¼W" #: ../category.c:841 msgid "Rename" msgstr "§ï¦W" #: ../dat.c:512 msgid "unknown type =" msgstr "¥¼ª¾Ãþ«¬ =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "fields per row count != %d, ¥¼ª¾®æ¦¡\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "field count != %d, ¥¼ª¾®æ¦¡\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "¥¼ª¾®æ¦¡, file has wrong schema\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Àɮתºschema¬O:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "¥¦À³¸Ó¬O: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d Record %d, field %d: µL®ÄÃþ«¬. ¹w´Á %d «o§ä¨ì %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "Ū¨úÀɮפ¤Â_\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "¦bDatebookDB¤¤¦³¥¼ª¾ repeatType (%d)\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "­«½Æ¤è¦¡:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "­«½Æ©ó:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "­«½Æ¤è¦¡:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "­«½Æ©ó:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "­«½Æ©ó:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "­«½Æ©ó:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "¤é" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "¤@" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "¤G" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "¤T" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "¥|" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "¤­" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "¤»" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "²×§ô¤é´Á" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "­«½Æ©ó:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "¬ö¿ý¼Æ¥Ø = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "µùÄÀ" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "¾x¹a" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "­«½Æ¤è¦¡:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "¨C¶g­«½Æ" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "¬ù·|´y­z¤å¦r > %d, ºIÂ_¬° %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "¿ù»~" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Àɮצü¥G¤£¬O datebook.dat ®æ¦¡\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "¥¼ª¾¶×¥XÃþ«¬" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "¶×¥X" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "¶×¥X¥þ³¡ Datebook ¬ö¿ý" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "¥t¦s¬°" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "ÂsÄý" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "¦æ¨Æ¾äÃþ§O" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "µL" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "¶}©l¤é´Á" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "²×§ô¤é´Á" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "¬P´Á¤é" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "¬P´Á¤@" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "¬P´Á¤G" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "¬P´Á¤T" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "¬P´Á¥|" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "¬P´Á¤­" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "¬P´Á¤»" #: ../datebook_gui.c:1760 msgid "4th" msgstr "²Ä¥|¶g" #: ../datebook_gui.c:1760 msgid "Last" msgstr "¤ë§À¶g" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "³o­Ó¬ù·|¥i¥H¦b¥»¤ëªº\n" "²Ä¥|¶g %s ©Î¬O \n" "³Ì«á¤@¶g %s­«½Æ\n" "½Ð°Ý¦p¦ó¿ï¾Ü?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "ºÃ°Ý?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "³o¬O¤@­Ó­«½Æµo¥Íªº¨Æ¥ó.\n" "±z­è°µªº­×§ï, ¬O¶È¾A¥Î©ó\n" "¡y¥Ø«e¡z¨Æ¥ó§í©Î¬O³o¨Æ¥ó\n" "¡y¨C¦¸µo¥Í¡z®É³£¾A¥Î?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "¥Ø«e¨Æ¥ó" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "¤Ñ" #: ../datebook_gui.c:2028 msgid "week" msgstr "¶g" #: ../datebook_gui.c:2029 msgid "month" msgstr "­Ó¤ë" #: ../datebook_gui.c:2030 msgid "year" msgstr "¦~" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "±z¥[¤Jªº¬ù·|µLªk¨C %d %s­«½Æ¤@¦¸.\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "±z³]©w¤F¤@­Ó¨C¶g­«½Æªº¬ù·|, ¦ý±z¥¼©w¦b¥ô¦ó¤@¤Ñ­«½Æ." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "¥¼©w®É¶¡" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "µL®Ä¬ù·|" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "³o­Ó¬ù·|ªºµ²§ô¤é´Á\n" "¤ñ¶}©l¤é´ÁÁÙ¦­." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "µL­­´Á" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "DateBookDB ¤¤¦³¿ù»~advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "¶g" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "¶gÀ˵ø" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "¤ë" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "¤ëÀ˵ø" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Ãþ§O" #: ../datebook_gui.c:5021 msgid "Time" msgstr "®É¶¡" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Åã¥Ü¥N¿ì¨Æ¶µ" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "¤u§@" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "¨ì´Á¤é" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "¾x¹a" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "¤é´Á:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "¶}©l©ó" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "µ²§ô©ó" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk ¼Ð°O" #: ../datebook_gui.c:5447 msgid "Day" msgstr "¤Ñ" #: ../datebook_gui.c:5450 msgid "Year" msgstr "¦~" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "¦¹¨Æ¥ó¤£·|­«½Æ" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "­«½ÆÀW²v¬O¨C" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "¤Ñ" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "µ²§ô©ó" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "¶g" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "¤ë" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "­«½Æ¤è¦¡:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "¨C¶g­«½Æ" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "¸Ó¤ëªº²Ä´X¤Ñ" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "¨C¦~" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "¹q¸Ü¼·¸¹­û" #: ../dialer.c:230 msgid "Prefix 1" msgstr "«e¸m½X 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "«e¸m½X 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "«e¸m½X 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "¹q¸Ü¸¹½X:" #: ../dialer.c:319 msgid "Extension" msgstr "¤À¾÷¸¹½X" #: ../dialer.c:341 msgid "Dial Command" msgstr "¼·¸¹©R¥O" #: ../export_gui.c:121 msgid "File Browser" msgstr "ÀÉ®×ÂsÄý¾¹" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "½Ð¿ï¾Ü­n¶×¥Xªº¬ö¿ý" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "¨Ï¥Î Ctrl ©M Shift Áä" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "¶×¤J" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "¬ö¿ý¤w¼Ð°O¬°\"¨p¤H\"" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "¬ö¿ý¥¼¼Ð°O¬°\"¨p¤H\"" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "¶×¤J«eªºÃþ§O¬°: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "¬ö¿ý±N©ñ¸m©óÃþ§O [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "¶×¤J¥þ³¡" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "¸õ¹L" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "­Y­n¤Á´«¨ìÁôÂåؿý, ½Ð¦b¤U­±¿é¤J«á«ö TAB Áä" #: ../import_gui.c:484 msgid "Import File Type" msgstr "¶×¤JÀÉ®×Ãþ«¬" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "±N¦w¸ËªºÀÉ®×" #: ../install_gui.c:372 msgid "Install" msgstr "¦w¸Ë" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/ÀÉ®×(F)/¦w¸Ë(I)" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "¨Ï¥ÎªÌ¦WºÙ" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "¨Ï¥ÎªÌ ID" #: ../jpilot.c:317 msgid "Print" msgstr "¦C¦L" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "³o­Ó¦P¨B³q¹D¤£¤ä´©¦C¦L." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "³o­Ó¦P¨B³q¹D¤£¤ä´©¶×¤J." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "³o­Ó¦P¨B³q¹D¤£¤ä´©¶×¥X." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "¨ú®ø¦P¨B" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "³o­ÓPalm PDA©MJ-Pilot¤Wªº¨Ï¥ÎªÌ¦WºÙ¤£¦P,\n" "©Î¬O¨Ï¥ÎªÌID¨Ã¤£¬O³Ì«á¤@¦¸¦P¨Bªº¨º¤@­Ó,\n" "¦pªG¦P¨B±N¥i¯à³y¦¨§AµLªkÀ±¸Éªº·l¥¢.\n" "¦pªG¤£½T©wªº¸Ü½Ð¸Ô²Ó¾\Ū¨Ï¥ÎªÌ¤â¥U." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "³o­Ó Palm PDA ¤¤ªº¨Ï¥ÎªÌ ID ¬O\"ªÅªº\"\n" "¨C¤@­Ó Palm ³£¥²»Ý¨ã³Æ¤@­Ó¿W¤@µL¤Gªº\n" "¨Ï¥ÎªÌID¤~¥i¥H¥¿±`ªº¦P¨B. ¦pªG³o­ÓPalm\n" "¤§«e´¿¸g§@¹L hard reset, ½Ð¨Ï¥Î¿ï³æ¤¤ªº\n" "\"´_­ì\"¨Ó¦^´_¤§«eªº³nÅé³]©w, ©Î¬O±z¤]¥i¥H¨Ï¥Î\n" " pilot-xfer ªº¤u¨ãµ{¦¡ install-user. ¨Ó¼W¥[¤@­Ó\n" "¨Ï¥ÎªÌ¦WºÙ©M ID, \n" "¨Ò¦p install-user \"¦WºÙ\" 12345.\n" "¦pªG¤£½T©wªº¸Ü½Ð¸Ô²Ó¾\Ū¨Ï¥ÎªÌ¤â¥U." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "¨ú®ø¦P¨B" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "©¿²¤°ÝÃD, ·Ó¼Ë¦P¨B" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "¦P¨B°ÝÃD" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " ¨Ï¥ÎªÌ: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "¦P¨Bªº¹Lµ{¤¤¨Ï¥Î¤F¥¼ª¾ªº©R¥O\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Ãö©ó %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/ÀÉ®×(F)" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/ÀÉ®×(F)/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/ÀÉ®×(F)/´M§ä(F)" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/ÀÉ®×(F)/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/ÀÉ®×(F)/¦w¸Ë(I)" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/ÀÉ®×(F)/¶×¤J" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/ÀÉ®×(F)/¶×¥X" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/ÀÉ®×(F)/°¾¦n³]©w" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/ÀÉ®×(F)/¦C¦L(P)" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/ÀÉ®×(F)/¦w¸Ë(I)" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/ÀÉ®×(F)/´_­ìPDA" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/ÀÉ®×(F)/Â÷¶}(Q)" #: ../jpilot.c:1121 msgid "/_View" msgstr "/À˵ø(V)" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/À˵ø(V)/ÁôÂèp¤H¬ö¿ý" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/À˵ø(V)/Åã¥Ü¨p¤H¬ö¿ý" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/À˵ø(V)/¾B¸n¨p¤H¬ö¿ý" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/À˵ø(V)/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/À˵ø(V)/¦æ¨Æ¾ä" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/À˵ø(V)/¦a§}ï" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/À˵ø(V)/«Ý¿ì¨Æ¶µ" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/À˵ø(V)/³Æ§Ñ¿ý" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/¥~±¾µ{¦¡(P)" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/Web(W)" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web(W)/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web(W)/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web(W)/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web(W)/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web(W)/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web(W)/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web(W)/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web(W)/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web(W)/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/»¡©ú(H)" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/»¡©ú(H)/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/¥~±¾µ{¦¡(P)/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/»¡©ú(H)/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "¦æ¨Æ¾ä:¨C¶gªº¶}©l:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "¥¼¸ü¤J¥~±¾µ{¦¡.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "©¿²¤©Ò¦³ªº¾x¹a³]©w.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "©¿²¤¹L©¹¾x¹a³]©w.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "µLªk¶}±ÒºÞ½u\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Åã¥Ü¨p¤H¬ö¿ý Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "ÁôÂèp¤H¬ö¿ý Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "¾B¸n¨p¤H¬ö¿ý Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Åý Palm »P J-Pilot ¦P¨B Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "¦P¨B¦a§}" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "¦P¨B Palm »P J-Pilot \n" "¨Ã§@³Æ¥÷" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "¦æ¨Æ¾ä/¸õ¨ì\"¤µ¤Ñ\"" #: ../jpilot.c:2144 msgid "Address Book" msgstr "¦a§}ï" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "«Ý¿ì¨Æ¶µ" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "³Æ§Ñ¿ý" #: ../jpilot.c:2174 msgid "Do it now" msgstr "´N³o»ò°µ§a" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "µy«á´£¿ô§Ú" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "§O¦A·Ð§Ú, §Ú¤w¸gª¾¹D¤F!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "¥Ø«eªº J-Pilot ¨Ï¥Î GTK2 graphical toolkit. ³o­Óª©¥»ªº GTK2 ¨Ï¥Î UTF-8 §@¬°¹w" "³]½s½X.\n" "§A¥²¶·¿ï¾Ü¤@­Ó UTF-8 ¦r¤¸¶°¤~¯à¬Ý¨ì«DASCIIªº¦r¤¸ (¨Ò¦p­µ½Õ).\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "¦r¤¸¶° " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "¿ï¾Ü¤@­Ó UTF-8 ¦r¤¸¶°" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +B +M +A +T ®æ¦¡¬Ûªñ©ó date +®æ¦¡ (½Ð¨Ï¥Î -? ¤F¸Ñ§ó¦h¸Ô²Ó¸ê°T).\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v ±NÅã¥Üjpilotª©¥»¨ÃÂ÷¶}\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h ±NÅã¥Ü¨D§U¨ÃÂ÷¶}.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -h ±NÅã¥Ü¨D§U¨ÃÂ÷¶}.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -B ¶É¦L¦æ¨Æ¾ä.\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N ¶É¦L¦æ¨Æ¾äªº¤µ¤é¸ê®Æ.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD ±N·|¥Î YYYY/MM/DD ®æ¦¡¶É¦L¦æ¨Æ¾äªº¸ê®Æ.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A ¶É¦L¦a§}ï.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T ±N¥N¿ì¨Æ¶µ¥ÎCSV®æ¦¡¶É¦L¥X¨Ó.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M ¶É¦L³Æ§Ñ¿ý.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "µLªk¶}±ÒÀÉ®×: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " J-Pilot ªº°¾¦n³]©w±N·|Ū¨ú³s±µ¥Î¨º­Ó°ð, ³s±µ³t²v©Î¬O­n«O¯d´X¥÷³Æ¥÷µ¥µ¥.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v Åã¥Üª©¥»¥H¤Î½sĶ¿ï¶µ«á¸õ¥X.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d ±N°£¿ù¸ê°T¾É¦Ü¼Ð·Ç¿é¥X.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "¥¼¸ü¤J¥~±¾µ{¦¡.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = ¤£°±­«½Æ, §_«h±N¥u¦P¨B¤@¦¸¨Ã¥BÂ÷¶}.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {port} = ¨Ï¥Î³o­Ó³s±µ°ð¦P¨B¦Ó¤£¨Ï¥Î°¾¦n³]©w¤¤©Ò«ü©wªº³s±µ°ð.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "¶}±ÒÀɮ׮ɵo¥Í¿ù»~: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "¶}±ÒÀɮ׮ɵo¥Í¿ù»~: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "¿ù»~" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "±zªº HOME Àô¹ÒÅܼƹï J-Pilot ¨Ó»¡¤Óªø\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "³o­Ó¬ö¿ý¤w¸g³Q§R°£.\n" "¥¦¤§«e³Q³]©w±Æµ{±N¦b¤U¤@¦¸¦P¨B®É±qPalm§R°£.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "µLªk¶}±Ò PC ¤Wªº¬ö¿ýÀÉ®×\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "§ä¤£¨ì­n§R°£ªº¬ö¿ý\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "¥¼ª¾ÀÉÀYª©¥» %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d ¶}±ÒÀɮ׮ɵo¥Í¿ù»~: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Ū¤JÀɮ׿ù»~: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "¶}±ÒÀɮ׮ɵo¥Í¿ù»~: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Ū¤JÀɮ׿ù»~ %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Ū¤J PC Àɮ׿ù»~ 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Ū¤J PC Àɮ׿ù»~ 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "¥¼ª¾ PC ÀÉÀYª©¥» = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "µLªk¶}±Ò¤é»xÀÉ, ©ñ±ó¾Þ§@.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "µLªk¶}±Ò¤é»xÀÉ\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "³Æ§Ñ¿ý¤å¦r¤j©ó 65535 ¦r¤¸, ºIÂ_¤¤\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "¤w¶×¤J³Æ§Ñ¿ý %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Àɮצü¥G¤£¬O memopad.dat ®æ¦¡\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "µLªk¶×¥X³Æ§Ñ¿ý %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "³Æ§Ñ¿ý" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "¤ë¥÷À˵ø" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm ±K½X" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "¤£¥¿½T, ½Ð­«·s¿é¤J PalmOS ±K½X" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "½Ð¿é¤J PalmOS ±K½X" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Ū¨úÀɮ׿ù»~: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "µL­­°j°é" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "·íŪ¨ú %s%s ²Ä¤@¦æ®É:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "¿ù»~ª©¥»\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Àˬd °¾¦n³]©w->¦P¨B³q¹D\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "¶}±Ò¥~±¾µ{¦¡ [%s] ®É\n" "µo¥Í¿ù»~ [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " ¦¹¥~±¾µ{¦¡µL®Ä: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "¥~±¾µ{¦¡:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "¦¹¥~±¾µ{¦¡ª©¥»¬° (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "¥¦¹ï©ó³o­Óª©¥»ªº J-Pilot ¨Ó»¡¹ê¦b¤Ó¦Ñ¤F.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "°¾¦n³]©w" #: ../prefs_gui.c:483 msgid "Locale" msgstr "»y¨t³]©w" #: ../prefs_gui.c:485 msgid "Settings" msgstr "³]©w" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "¦æ¨Æ¾ä" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "«Ý¿ì¨Æ¶µ" #: ../prefs_gui.c:493 msgid "Memo" msgstr "³Æ§Ñ¿ý" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "ĵ§i" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "¦P¨B³q¹D" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "µu¤é´Á®æ¦¡ " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "ªø¤é´Á®æ¦¡ " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "®É¶¡®æ¦¡ " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "§Úªº GTK ÃC¦âÀɬO " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "¦P¨B°ÝÃD" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "«O¯d´X¥÷³Æ¥÷" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Åã¥Ü¤w§R°£ªº¬ö¿ý (¹w³] §_)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Åã¥Ü¤w§R°£¬ö¿ý (¹w³] §_)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "¦b¦w¸Ëµ{¦¡®É½T»{ (J-Pilot -> PDA) (¹w³] ¬O)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Åã¥Ü¼u¥X¦¡±K§Þ´£¥Ü (¹w³] ¬O)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "¦b¦æ¨Æ¾ä¤W°ª«G«×Åã¥Ü¦³¬ù·|ªº¤é¤l" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "¨Ï¥Î DateBk µùÄÀ¼Ð°O" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "¦¹ª©¥»¨S¦³±Ò¥Î DateBk ¤ä´©" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "µo«H©R¥O" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s ¤w¸g³Q¹q¤l¶l¥ó¦ì§}¨ú¥N" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "ÁôÂäw§¹¦¨ªº«Ý¿ì¨Æ¶µ" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "ÁôÂÃ¥¼¨ì´Áªº«Ý¿ì¨Æ¶µ" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "¬ö¿ý§¹¦¨¤é´Á" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "¨Ï¥Î Manana ¸ê®Æ®w" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "¹w³]ªº¨ì´Á¤é¬°" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "¨Ï¥Î Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "¬ù·|´£¿ô®É¶}±Ò¾x¹aµøµ¡" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "°õ¦æ¦¹©R¥O" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "ĵ§i: ¥ô·N°õ¦æ¨t²Î´ß©R¥O¦³¬Û·íªº¦MÀI©Ê!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "¾x¹a©R¥O" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t ¤w¸g³Q¾x¹a®É¶¡¨ú¥N" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d ¤w¸g³Q¾x¹a¤é´Á¨ú¥N" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D ¤w¸g³Q¾x¹a´y­z¨ú¥N" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N ¤w¸g³Q¾x¹aµùÄÀ¨ú¥N" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "¦¹ª©¥»¨S¦³±Ò¥Î %D (´y­z´À¥N²Å) ¥\¯à" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "¦¹ª©¥»¨S¦³±Ò¥Î %N (µùÄÀ´À¥N²Å) ¥\¯à" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "¦P¨B¦æ¨Æ¾ä" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "¦P¨B¦a§}" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "¦P¨B«Ý¿ì¨Æ¶µ" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "¦P¨B³Æ§Ñ¿ý" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "¦P¨B Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "¨Ï¥Î J-OS («D¤é¤å PalmOS: WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "¦P¨B %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "¦C¦L¿ï¶µ" #: ../print_gui.c:196 msgid "Paper Size" msgstr "¯È±i¤j¤p" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "¨C¤é³øªí" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "¨C¶g³øªí" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "¨C¤ë³øªí" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "§R°£¤F¤@µ§ %s ¬ö¿ý." #: ../print_gui.c:268 msgid "All records in this category" msgstr "¸ÓÃþ§Oªº¥þ³¡¬ö¿ý" #: ../print_gui.c:272 msgid "Print all records" msgstr "¦C¦L¥þ³¡¬ö¿ý" #: ../print_gui.c:294 msgid "One record per page" msgstr "¨C­¶¦C¦L¤@µ§¬ö¿ý" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " ¨Cµ§¬ö¿ý¤¤¶¡¥[ªÅ¦æ" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "¦C¦L©R¥O (¨Ò¦p lpr, ©Î cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "´_­ìPDA" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "±N¦w¸ËªºÀÉ®×" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "¦p¦ó´_­ì±zªºPDA:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. ¿ï¾Ü©Ò¦³±z­n´_­ìªºÀ³¥Îµ{¦¡. ¹w³]¬O¥þ³¡." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. ¿é¤J¨Ï¥ÎªÌ¦WºÙ©M¨Ï¥ÎªÌ ID." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. ÂIÀ»¡§½T©w¡¨«ö¶s." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "¦¹¶µ¾Þ§@·|Âмg¥Ø«e¦bPDA¤Wªº©Ò¦³¸ê®Æ." #: ../search_gui.c:142 msgid "datebook" msgstr "¦æ¨Æ¾ä" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "¦a§}ï" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "«Ý¿ì¨Æ¶µ" #: ../search_gui.c:359 msgid "memo" msgstr "³Æ§Ñ¿ý" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "³Æ§Ñ¿ý" #: ../search_gui.c:419 msgid "plugin ?" msgstr "¥~±¾µ{¦¡ ?" #: ../search_gui.c:499 msgid "No records found" msgstr "§ä¤£¨ì¬ö¿ý" #: ../search_gui.c:598 msgid "Search" msgstr "·j´M" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "·j´M: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "°Ï¤À¤j¤p¼g" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "Âê©wÀÉ®×¥¢±Ñ.\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "¥¢±Ñ.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "¦P¨BÀɮפw¸g¥Ñ pid %d Âê©w\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "¸Ñ°£Âê©w¥¢±Ñ\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "¦P¨B¤w¸g¥Ñ pid %d Âê©w\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Àˬd±zªº§Ç¦C°ð©M³]©w\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "µLªkŪ¨ú®a¥Ø¿ý\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s («Ø¥ßªÌ ID '%s') ¤w¸g¬O³Ì·sªº¤F, ¸õ¹LÂ^¨ú.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "¥¿¦bÂ^¨ú '%s' («Ø¥ßªÌ ID '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "§@·~¥¢±Ñ, µLªk«Ø¥ßÀÉ®× %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "§@·~¥¢±Ñ, µLªk³Æ¥÷¸ê®Æ®w %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "½T©w\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "¸õ¹L %s («Ø¥ßªÌ ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "¥¿¦b¦w¸Ë %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "µLªk¶}±Ò '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "µLªk¦P¨BÀÉ®×: '%s': ÀÉ®×·´·l?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(«Ø¥ßªÌ ID ¬O '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(«Ø¥ßªÌ ID ¬O '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "µLªk¶}±ÒÀÉ®×: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "¦w¸Ë %s ¥¢±Ñ" #: ../sync.c:1619 msgid "Failed.\n" msgstr "¥¢±Ñ.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "¤w¦w¸Ë %s " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d ¨ú±oÀ³¥Îµ{¦¡¸ê®Æ %s ¿ù»~\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d ¸ÑÀ£ÁYÀ³¥Îµ{¦¡¸ê®Æ %s ¿ù»~\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Ū¨úÀ³¥Îµ{¦¡¸ê®Æ°Ï¶ô %s ¿ù»~\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "µLªk¥[¤JÃþ§O %s ¨ì»·ºÝ.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "»·ºÝ¦³¤Ó¦hÃþ§O.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "¥þ³¡¦bJ-Pilot %s ¤¤ªº¬ö¿ý±N²¾¦Ü %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "¥¿¦b¦P¨B %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "¼g¤F¤@µ§ %s ¬ö¿ý." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "¼g¤J¤@µ§ %s ¬ö¿ý¥¢±Ñ." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "§R°£¤@µ§ %s ¬ö¿ý¥¢±Ñ." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "§R°£¤F¤@µ§ %s ¬ö¿ý." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "§R°£¤F¤@µ§ %s ¬ö¿ý." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "¼g¤F¤@µ§ %s ¬ö¿ý." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "¼g¤J¤@µ§ %s ¬ö¿ý¥¢±Ñ." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "§R°£¤@µ§ %s ¬ö¿ý¥¢±Ñ." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "§R°£¤F¤@µ§ %s ¬ö¿ý." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord ¥¢±Ñ\n" "¥i¯à¬O¦]¬°³oµ§¬ö¿ý¤w¸g¦b Palm ¤W§R°£¤F\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " ¥¿¦b»P¸Ë¸m %s ¦P¨B\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " ²{¦b½Ð«ö HotSync Áä\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "¤W¦¸¦P¨Bªº¨Ï¥ÎªÌ¦WºÙ-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "¤W¦¸¦P¨Bªº¨Ï¥ÎªÌ ID->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " ¦¹¨Ï¥ÎªÌ¦WºÙ-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " ¦¹¨Ï¥ÎªÌ ID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "¨Ï¥ÎªÌ¦WºÙ¬O \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "¨Ï¥ÎªÌ ID ¬O %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "¤W¦¸¦P¨BªºPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "³o³¡ PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "¦P¨B¤w¨ú®ø\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "´_­ìPDA§¹²¦.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "±z¥i¯à»Ý­n\"¦P¨B\"¥H§ó·s J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "¥¿¦b¶i¦æ§Ö³t¦P¨B.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "¥¿¦b¶i¦æºC³t¦P¨B.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "·PÁ±z¨Ï¥Î J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "§¹¦¨.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Â÷¶}¤¤, ª¬ºA %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "«Ý¿ì¨Æ¶µªº´y­z¤j©ó %d, ºIÂ_¬° %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "«Ý¿ì¨Æ¶µªºµùÄÀ¤j©ó %d, ºIÂ_¬° %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "¨ì´Á¤é" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Àɮצü¥G¤£¬O todo.dat ®æ¦¡\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "µLªk¶×¥X«Ý¿ì¨Æ¶µ %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "¨ì´Á¤é" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "¨ì´Á¤é" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Àu¥ý­È: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "¤w§¹¦¨" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Àu¥ý­È¶W¹L®e³\½d³ò\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "µL­­´Á" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "¤w§¹¦¨" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Àu¥ý­È: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "¨ì´Á¤é:" #: ../utils.c:330 msgid "Today" msgstr "¤µ¤Ñ" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "§ä¤£¨ìªÅªº DB ÀÉ®×%s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " ¥i¯à¥¼¦w¸Ë¥¿½T.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "µLªk·s¼W¥Ø¿ý %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s ¬O¥Ø¿ý" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "§ÚµLªk¼g¤JÀɮצܥؿý %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Àx¦s¬ö¿ý­×§ï?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "±z­nÀx¦s¹ï©ó¦¹µ§¬ö¿ýªº­×§ï¶Ü?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Àx¦s·s¬ö¿ý?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "±z­nÀx¦s¦¹µ§·s¼Wªº¬ö¿ý¶Ü?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "µL­­°j°é, ¼È°±\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "¥¼¸ü¤J¥~±¾µ{¦¡.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ©¿²¤¤W¦¸J-Pilot°õ¦æ¨ì²{¦bªº¤w¿ù¹L¾x¹a.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ©¿²¤©Ò¦³¾x¹a³]©w)); ¥]¬A¹L¥h¥H¤Î¥¼¨Ó.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " PILOTPORT, ¥H¤Î PILOTRATE Àô¹ÒÅܼƤw¸g³]©w\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " ¨Ï¥Î¨º­Ó°ð¦P¨B, ¥H¤Î¨Ï¥Î¦h§Öªº³t²v.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " ¦pªG PILOTPORT ¥¼³]©w, «h¨Ï¥Î¹w³]­È /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Ū¤JÀɮ׿ù»~" #: ../utils.c:1973 msgid "Date compiled" msgstr "½sͤé´Á" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "¨Ï¥Î¥H¤U¿ï¶µ½sĶ:" #: ../utils.c:1976 msgid "Installed Path" msgstr "¦w¸Ë¸ô®|" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link ª©¥»" #: ../utils.c:1982 msgid "USB support" msgstr "USB ¤ä´©" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "¬O" #: ../utils.c:1984 msgid "Private record support" msgstr "¨p¤H¬ö¿ý¤ä´©" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "§_" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk ¤ä´©" #: ../utils.c:1996 msgid "Plugin support" msgstr "¥~±¾µ{¦¡¤ä´©" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana ¤ä´©" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS ¤ä´© (¥»¦a»y¨¥¤ä´©)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 ¤ä´©" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "µLªk¨ú±o HOME Àô¹ÒÅܼÆ\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "±zªº HOME Àô¹ÒÅܼƹï J-Pilot ¨Ó»¡¤Óªø\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "½s¿èÃþ§O" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID ¬O 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "§Ú²£¥Í¤F¤@­Ó·sªº PC ID, ¥¦¬O %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "¤µ¤Ñ¬O %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "¤µ¤Ñ¬O %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "¼g¤J PC ÀÉÀY¦ÜÀÉ®×: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "¼g¤J¤U¤@­Ó id ¦ÜÀɮ׿ù»~: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "¨C¶gÀ˵ø" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "¿D¬w" #: ../Expense/expense.c:96 msgid "Austria" msgstr "¶ø¦a§Q" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "¤ñ§Q®É" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "¤Ú¦è" #: ../Expense/expense.c:99 msgid "Canada" msgstr "¥[®³¤j" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "¤¦³Á" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "¼Ú·ù (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "ªâÄõ" #: ../Expense/expense.c:103 msgid "France" msgstr "ªk°ê" #: ../Expense/expense.c:104 msgid "Germany" msgstr "¼w°ê" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "­»´ä" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "¦B®q" #: ../Expense/expense.c:107 msgid "India" msgstr "¦L«×" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "¦L¥§" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "·Rº¸Äõ" #: ../Expense/expense.c:110 msgid "Italy" msgstr "¸q¤j§Q" #: ../Expense/expense.c:111 msgid "Japan" msgstr "¤é¥»" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Áú°ê" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "¿c´Ë³ù" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "°¨¨Ó¦è¨È" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "¾¥¦è­ô" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "¥§¼wÄõ (²üÄõ)" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "¯Ã¦èÄõ" #: ../Expense/expense.c:118 msgid "Norway" msgstr "®¿«Â" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "¤¤µØ¤H¥Á¦@©M°ê" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "µá«ß»«" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "·s¥[©Y" #: ../Expense/expense.c:122 msgid "Spain" msgstr "¦è¯Z¤ú" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "·ç¨å" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "·ç¤h" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "¥xÆW" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "®õ°ê" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "­^°ê" #: ../Expense/expense.c:128 msgid "United States" msgstr "¬ü°ê" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "¶}¤ä" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "­¸¾÷²¼" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "¦­À\" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "¤½¦@¨T¨®" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "°Ó°ÈÀ\·|" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "¯²¨®" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "±ßÀ\" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "®T¼Ö" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "¶Ç¯u" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "¨Tªo" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "§«~" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "¶º©±" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Âø¶O" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "¬~¦ç" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "»¨µØÃ⨮" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "±H±J" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "¤ÈÀ\" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "¨½µ{" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "°±¨®¶O" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "¶l¶O" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "¹s¼L" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "¦a¤UÅK" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "¥Í¬¡¥Î«~" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "­pµ{¨®" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "¹q¸Ü¶O" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "¤p¶O" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "³q¦æ¶O" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "¤õ¨®" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "¶}¤ä: ¥¼ª¾¶}¤äÃþ«¬\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "¶}¤ä: ¥¼ª¾¥I´Ú¤è¦¡\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "¬ü°ê¹B³q (American Express)" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "²{ª÷" #: ../Expense/expense.c:1377 msgid "Check" msgstr "¤ä²¼" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "«H¥Î¥d" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "¸U¨Æ¹F¥d (MasterCard)" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "¹w¥I" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA ¥d" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Ãþ«¬:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "ª÷ÃB:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Ãþ§O:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Ãþ«¬:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "¥I´Ú¤è¦¡:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "¶×²v:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "¤ë:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "¤é:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "¦~:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "ª÷ÃB:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "¼t°Ó:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "«°¥«:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "¥X®uªÌ" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "Æ_°Í°é: pack_Æ_°Í°é(): buf_size ¤Ó¤p\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "¤£¥¿½T, ½Ð­«·s¿é¤JÆ_°Í°é±K½X" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "½Ð¿é¤J·sªºÆ_°Í°é±K½X" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "¿é¤JÆ_°Í°é±K½X" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "Æ_°Í°é: ÀÉ®× %s §ä¤£¨ì.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "Æ_°Í°é: À|¸Õ¦P¨B.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "Æ_°Í°é" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "µLªk¶×¥X³Æ§Ñ¿ý %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "§ïÅÜ\n" "Æ_°Í°é\n" "±K½X" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "¨ú®ø" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "±b¸¹" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "¦W¦r: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "±b¸¹: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "±K½X: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "¦Û°Ê²£¥Í±K½X" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "¦P¨B³Æ§Ñ¿ý" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "§¹¦¨" #, fuzzy #~ msgid "Overwrite" #~ msgstr "ÂмgÀÉ®×" #~ msgid "Field" #~ msgstr "Ãþ«¬" #~ msgid "kana(" #~ msgstr "°²¦W(" #~ msgid "Quick View" #~ msgstr "§Ö³tÀ˵ø" #~ msgid "Unable to open %s%s file\n" #~ msgstr "µLªk¶}±Ò %s%s ÀÉ®×\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "µLªk¶}±Ò %s ¾x¹aÀÉ®×\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "µLªk½s¿èÃþ§O %s \n" #~ msgid "You can't delete category %s.\n" #~ msgstr "µLªk§R°£Ãþ§O %s \n" #~ msgid "category name" #~ msgstr "Ãþ§O¦WºÙ" #~ msgid "debug" #~ msgstr "°£¿ù" #~ msgid "Close" #~ msgstr "Ãö³¬" #~ msgid "none" #~ msgstr "µL" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "¦bDatebookDB¤¤¦³¥¼ª¾repeatType\n" #~ msgid "W" #~ msgstr "©P" #~ msgid "M" #~ msgstr "¤ë" #~ msgid "This Event has no particular time" #~ msgstr "¦¹¨Æ¥óµL¯S©w®É¶¡" #~ msgid "Start Time" #~ msgstr "¶}©l®É¶¡" #~ msgid "End Time" #~ msgstr "µ²§ô®É¶¡" #~ msgid "Dismiss" #~ msgstr "µ²§ô" #~ msgid "Done" #~ msgstr "§¹¦¨" #~ msgid "Add" #~ msgstr "¥[¤J" #, fuzzy #~ msgid "User name" #~ msgstr "¨Ï¥ÎªÌ¦WºÙ" #~ msgid " -v = version\n" #~ msgstr " -v = ª©¥»\n" #~ msgid " -h = help\n" #~ msgstr " -h = ¨D§U\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = ¥H°£¿ù¼Ò¦¡°õ¦æ\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = ¤£¸ü¤J¥~±¾µ{¦¡.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = ¦P¨B¨Ã¥B³Æ¥÷, §_«h±N¥u¦P¨B.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "¤£¦X²zªºµøµ¡¦ì¸m¤Îµøµ¡¤j¤p³]©w: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/»¡©ú(H)/PayBack program" #~ msgid "Font Selection Dialog" #~ msgstr "¦r«¬¿ï¾Ü¹ï¸Ü®Ø" #~ msgid "Clear" #~ msgstr "²M°£" #, fuzzy #~ msgid "Show private records" #~ msgstr "Åã¥Ü¨p¤H¬ö¿ý Ctrl-Z" #, fuzzy #~ msgid "Hide private records" #~ msgstr "ÁôÂèp¤H¬ö¿ý Ctrl-Z" #, fuzzy #~ msgid "Mask private records" #~ msgstr "¾B¸n¨p¤H¬ö¿ý Ctrl-Z" #~ msgid "Font" #~ msgstr "¦r«¬" #~ msgid "Go to the menu \"" #~ msgstr "¦Ü¿ï³æ \"" #~ msgid "\" and change the \"" #~ msgstr "\" ¨Ã¥B§ïÅܨº \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "µLªk¶}±Ò PC ªº¬ö¿ýÀÉ\n" #~ msgid "The first day of the week is " #~ msgstr "¤@¶gªº²Ä¤@¤Ñ¬O " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "§Ç¦C°ð (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "§Ç¦C°ð³t²v (¤£¼vÅT USB ¤¶­±)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "¦P¨B memo32 (pedit32)" #~ msgid "One record" #~ msgstr "¤@µ§¬ö¿ý" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: «ö¤U¦P¨B®y¤Wªº Hotsync «ö¶s©Î¬O°õ¦æ©R¥O \"kill %d\"\n" #~ msgid "Finished\n" #~ msgstr "§¹¦¨\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "¤W¤@­Ó¨Ï¥ÎªÌ¦WºÙ = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "¤W¤@­Ó¨Ï¥ÎªÌ ID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "¨Ï¥ÎªÌ¦WºÙ = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "¨Ï¥ÎªÌ ID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "Palm: ¬ö¿ý¼Æ¥Ø = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "µwºÐ: ¬ö¿ý¼Æ¥Ø = %d\n" #, fuzzy #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i J-Pilot±Ò°Ê®É³Ì¤p¤Æ\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s ¦ü¥G¤£¬O¥Ø¿ý.\n" #~ "§Ú­n¨D¥¦¬O­Ó¥Ø¿ý.\n" #~ msgid "AmEx" #~ msgstr "¬ü°ê¹B³q (AmEx)" #~ msgid "CreditCard" #~ msgstr "«H¥Î¥d" #~ msgid "MasterCard" #~ msgstr "¸U¨Æ¹F¥d (MasterCard)" #~ msgid "Expense: Unknown category\n" #~ msgstr "¶}¤ä: ¥¼ª¾Ãþ§O\n" #, fuzzy #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "±zªº HOME Àô¹ÒÅܼƹï J-Pilot ¨Ó»¡¤Óªø\n" #~ msgid "Quit" #~ msgstr "Â÷¶}" #~ msgid "Help" #~ msgstr "¨D§U" #~ msgid "Directory" #~ msgstr "¥Ø¿ý" #~ msgid "Filename" #~ msgstr "ÀɦW" #~ msgid "Answer: " #~ msgstr "µªÂÐ: " #~ msgid "Sync" #~ msgstr "¦P¨B" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p ¤£¸ü¤J¥~±¾µ{¦¡.\n" #, fuzzy #~ msgid "Cancel the modifications ESC" #~ msgstr "®M¥Î­×§ï Ctrl+Enter" #~ msgid "Delete the selected record Ctrl+D" #~ msgstr "§R°£¿ï¾Üªº¬ö¿ý Ctrl+D" #~ msgid "Copy the record Ctrl+O" #~ msgstr "½Æ»s³oµ§¬ö¿ý Ctrl+O" #~ msgid "Add a new record Ctrl+N" #~ msgstr "¥[¤J¤@­Ó·s¬ö¿ý Ctrl+N" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "¥[¤J³o­Ó·s¬ö¿ý Ctrl+R" #~ msgid "Commit the modifications Ctrl+Enter" #~ msgstr "®M¥Î­×§ï Ctrl+Enter" #~ msgid "Backup" #~ msgstr "³Æ¥÷" jpilot-1.8.2/po/zh_CN.po0000664000175000017500000025434712340261240011736 00000000000000# Chinese (simplified) translation for jpilot. # Copyright (C) 2002 Judd Montgomery # This file is distributed under the same license as the jpilot package. # Funda Wang , 2004. # Anthony Fok , 2002. # msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.8-pre12\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2005-10-18 13:58+0800\n" "Last-Translator: Funda Wang \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "内存溢出" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d 读å–ç±»åˆ«ä¿¡æ¯ %s 出错\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "è¯»å–æ–‡ä»¶å‡ºé”™ï¼š%s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "错误" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "此记录已删除。\n" "è¯·å…ˆå–æ¶ˆåˆ é™¤ï¼Œæˆ–者å¤åˆ¶è¯¥è®°å½•,å†è¿›è¡Œæ›´æ”¹ã€‚\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "无法打开文件:%s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "无法打开文件:%s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "æ–‡ä»¶ä¼¼ä¹Žä¸æ˜¯ address.dat æ ¼å¼\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "未归档" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "确定" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "å¦" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "是" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s 是目录" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "打开文件时å‘生错误" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "您è¦è¦†ç›–文件 %s å—?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "覆盖文件?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "打开文件时出错:%s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "无法导出第%d个地å€\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "类别:" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "ç§æœ‰" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "电å­é‚®ä»¶" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "未知的导出类型\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "å§“å/å…¬å¸" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "å§“å/å…¬å¸" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "å…¬å¸/å§“å" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "您无法修改已删除的记录\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "ç±»åˆ«éžæ³•\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "执行此命令 = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "é”定失败\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "类别:" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "邮件" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "拨å·" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-未命å-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 项记录" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%2$d 项记录(å…± %1$d 项)" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "å§“å" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "地å€" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "å…¶ä»–" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "注释" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "电è¯" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "快速查找:" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "å–æ¶ˆ" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "å–æ¶ˆä¿®æ”¹" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "删除" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "删除选中的记录" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "å–æ¶ˆåˆ é™¤" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "å–æ¶ˆé€‰ä¸­è®°å½•的删除" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "å¤åˆ¶" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "å¤åˆ¶é€‰ä¸­çš„记录" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "新建记录" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "添加新记录" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "添加记录" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "添加新记录" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "应用更改" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "确认修改" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "ç§æœ‰" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "å–æ¶ˆ" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "删除" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "在列表\n" "显示" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "æé†’我" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "天" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "全部" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "分钟" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "å°æ—¶" #: ../alarms.c:253 msgid "Remind me" msgstr "æé†’我" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "无法打开文件:%s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "约会æé†’" #: ../alarms.c:513 msgid "Past Appointment" msgstr "过往约会" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "延迟约会" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "约会" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "J-Pilot æé†’" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC 文件æŸå了?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek 失败 - 严é‡é”™è¯¯\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "é‡å‘½å失败" #: ../category.c:407 msgid "Move" msgstr "移动" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "编辑类别" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "达到了å¯ä½¿ç”¨çš„æœ€å¤§ç±»åˆ«æ•°(16)" #: ../category.c:440 msgid "Enter New Category" msgstr "输入新类别" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "编辑类别" #: ../category.c:452 msgid "You must select a category to rename" msgstr "您必须选择è¦é‡å‘½å的类别" #: ../category.c:461 msgid "Enter New Category Name" msgstr "输入新类别åç§°" #: ../category.c:476 msgid "You must select a category to delete" msgstr "您必须选择è¦åˆ é™¤çš„类别" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%2$s 中有 %1$d 项记录。\n" "您是想è¦å°†å…¶ç§»åŠ¨åˆ° %3$s 中,还是删除?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "æ— æ•ˆçš„çŠ¶æ€æ–‡ä»¶ %s 第 %d 行\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "无法多次使用类别 %s" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "类别:" #: ../category.c:834 msgid "New" msgstr "新建" #: ../category.c:841 msgid "Rename" msgstr "é‡å‘½å" #: ../dat.c:512 msgid "unknown type =" msgstr "未知类型 =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "æ¯è¡ŒåŸŸæ•°ä¸ç­‰äºŽ %dï¼Œæ ¼å¼æœªçŸ¥\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "域数ä¸ç­‰äºŽ %dï¼Œæ ¼å¼æœªçŸ¥\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "æ ¼å¼æœªçŸ¥ï¼Œæ–‡ä»¶çš„大纲ä¸å¯¹\n" #: ../dat.c:636 msgid "File schema is:" msgstr "文件大纲为:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "应该为:" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d 第%dæ¡è®°å½•,第%d个域:无效的类型。应该是 %dï¼Œå´æ˜¯ %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "读到文件结æŸ\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "行事历中有未知的é‡å¤ç±»åž‹(%d)\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "é‡å¤æ–¹å¼ï¼š" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "哪天é‡å¤ï¼š" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "é‡å¤æ–¹å¼ï¼š" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "哪天é‡å¤ï¼š" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "哪天é‡å¤ï¼š" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "哪天é‡å¤ï¼š" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "æ—¥" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "一" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "二" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "三" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "å››" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "五" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "å…­" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "ç»ˆæŸæ—¥æœŸ" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "哪天é‡å¤ï¼š" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "记录数目 = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "注释" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "闹铃" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "é‡å¤æ–¹å¼ï¼š" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "第几周第几天" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "约会æè¿°æ–‡æœ¬ > %d,截断为 %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "错误" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "æ–‡ä»¶ä¼¼ä¹Žä¸æ˜¯ datebook.dat æ ¼å¼\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "未知导出类型" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "导出" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "导出全部 Datebook 记录" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "å¦å­˜ä¸º" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "æµè§ˆ" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "行事历类别" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "æ— " #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "开始日期" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "ç»ˆæŸæ—¥æœŸ" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "星期日" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "星期一" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "星期二" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "星期三" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "星期四" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "星期五" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "星期六" #: ../datebook_gui.c:1760 msgid "4th" msgstr "第四周" #: ../datebook_gui.c:1760 msgid "Last" msgstr "月尾周" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "您约会å¯ä»¥åœ¨æ¯æœˆçš„第四个%sé‡å¤ï¼Œ\n" "也å¯ä»¥åœ¨æ¯æœˆçš„æœ€åŽä¸€ä¸ª%sé‡å¤ã€‚\n" "您想è¦å“ªç§é‡å¤ï¼Ÿ" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "问题?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "这是一个é‡å¤å‘生的事生。\n" "您刚åšçš„修改,是仅适用于“当å‰â€äº‹ä»¶ï¼Œ\n" "æŠ‘æˆ–æ˜¯è¿™äº‹ä»¶â€œæ¯æ¬¡å‘ç”Ÿâ€æ—¶éƒ½é€‚用?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "当å‰äº‹ä»¶" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "天" #: ../datebook_gui.c:2028 msgid "week" msgstr "周" #: ../datebook_gui.c:2029 msgid "month" msgstr "个月" #: ../datebook_gui.c:2030 msgid "year" msgstr "å¹´" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "您添加的约会ä¸å¯ä»¥æ¯ %d %sé‡å¤ä¸€æ¬¡ã€‚\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "您添加了一个æ¯å‘¨é‡å¤çº¦ä¼šï¼Œä½†è¯¥çº¦ä¼šæœªåœ¨ä¸€å‘¨çš„任何一天é‡å¤ã€‚" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "未定时间" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "无效约会" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "æ­¤çº¦ä¼šçš„ç»“æŸæ—¥æœŸæ—©äºŽå¼€å§‹æ—¥æœŸã€‚" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "æ— é™æœŸ" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "DateBookDB 中有错,advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a.,%s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (今天)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "周" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "按周查看约会" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "月" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "按月查看约会" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "类别" #: ../datebook_gui.c:5021 msgid "Time" msgstr "æ—¶é—´" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "显示待办" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "任务" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "到期日" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "闹铃" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "日期:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "开始日期:" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "ç»“æŸæ—¥æœŸï¼š" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "DateBk 标记" #: ../datebook_gui.c:5447 msgid "Day" msgstr "天" #: ../datebook_gui.c:5450 msgid "Year" msgstr "å¹´" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "此事件ä¸ä¼šé‡å¤" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "é‡å¤é¢‘率是æ¯" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "天" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "ç»“æŸæ—¥æœŸï¼š" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "周" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "月" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "é‡å¤æ–¹å¼ï¼š" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "第几周第几天" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "该月的第几天" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "å¹´" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "ç”µè¯æ‹¨å·å™¨" #: ../dialer.c:230 msgid "Prefix 1" msgstr "å‰ç¼€ 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "å‰ç¼€ 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "å‰ç¼€ 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "电è¯å·ç ï¼š" #: ../dialer.c:319 msgid "Extension" msgstr "分机" #: ../dialer.c:341 msgid "Dial Command" msgstr "拨å·å‘½ä»¤" #: ../export_gui.c:121 msgid "File Browser" msgstr "文件æµè§ˆå™¨" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "请选择è¦å¯¼å‡ºçš„记录" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "使用 Ctrl å’Œ Shift é”®" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "导入" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "记录已标记为ç§äººçš„" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "记录未标记为ç§äººçš„" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "导入å‰çš„类别是:[%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "记录将被存放于类别 [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "全部导入" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "跳过" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "è‹¥è¦åˆ‡æ¢åˆ°éšè—目录,请在下é¢è¾“å…¥åŽæŒ‰ TAB é”®" #: ../import_gui.c:484 msgid "Import File Type" msgstr "导入文件类型" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "è¦å®‰è£…的文件" #: ../install_gui.c:372 msgid "Install" msgstr "安装" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/文件(F)/安装用户" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "用户å" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "用户 ID" #: ../jpilot.c:317 msgid "Print" msgstr "打å°" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "这个管é“䏿”¯æŒæ‰“å°ã€‚" #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "这个管é“䏿”¯æŒå¯¼å…¥" #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "这个管é“䏿”¯æŒå¯¼å‡º" #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "å–æ¶ˆåŒæ­¥" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "æ­¤ Palm ä¸­çš„ç”¨æˆ·åæˆ–用户 ID ä¸Žä¸Šæ¬¡åŒæ­¥æ‰€ç”¨\n" "的用户åä¸åŒã€‚åŒæ­¥å¯èƒ½é€ æˆæ„外的效果。\n" "如果您ä¸ç¡®å®šçš„è¯ï¼Œè¯·é˜…读用户手册。" #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "æ­¤ Palm 的用户 ID 为 NULL。\n" "æ¯å° Palm 都必须有一个唯一的用户 ID ä»¥ä¾¿æ­£ç¡®è¿›è¡ŒåŒæ­¥ã€‚\n" "如果进行了硬件é‡ç½®ï¼Œå¯ä»¥ä»Žèœå•中选择æ¢å¤è¿›è¡Œæ¢å¤ï¼Œæ‚¨ä¹Ÿå¯ä»¥ä½¿ç”¨ pilot-xfer。\n" "è¦æ·»åŠ ç”¨æˆ·åå’Œ ID,请使用 install-user 命令行工具,或者从èœå•中选择安装用" "户。\n" "如果您ä¸ç¡®å®šçš„è¯ï¼Œè¯·é˜…读用户手册。" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "å–æ¶ˆåŒæ­¥" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "å¿½ç•¥é—®é¢˜ï¼Œç…§æ ·åŒæ­¥" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "åŒæ­¥é—®é¢˜" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " 用户:" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "åŒæ­¥è¿›ç¨‹ä¸­æœ‰æœªçŸ¥å‘½ä»¤\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "关于 %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/文件(_F)" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/文件(F)/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "文件(F)/查找(_F)" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/文件(F)/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/文件(F)/安装(_I)" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/文件(F)/导入" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/文件(F)/导出" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/文件(F)/首选项" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/文件(F)/打å°(_P)" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/文件(F)/安装用户" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/文件(F)/æ¢å¤æ‰‹æŒè®¾å¤‡" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/文件(F)/退出" #: ../jpilot.c:1121 msgid "/_View" msgstr "/查看(_V)" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/查看(V)/éšè—ç§äººè®°å½•" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/查看(V)/显示ç§äººè®°å½•" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/查看(V)/å±è”½ç§äººè®°å½•" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/查看(V)/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/查看(V)/行事历" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/查看(V)/地å€ç°¿" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/查看(V)/待办工作" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/查看(V)/备忘录" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/æ’ä»¶(_P)" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/帮助(_H)" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/帮助(H)/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/æ’ä»¶(_P)/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/帮助(_H)/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "未装入æ’件。\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "忽略全部æé†’。\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "忽略过去的æé†’。\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "无法打开管é“\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "显示ç§äººè®°å½• Ctrl+Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "éšè—ç§äººè®°å½• Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "å±è”½ç§äººè®°å½• Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "把您的 Palm 与桌é¢åŒæ­¥ Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "åŒæ­¥åœ°å€" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "把您的 Palm 与桌é¢åŒæ­¥\n" "并作备份" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "行事历/跳到今天" #: ../jpilot.c:2144 msgid "Address Book" msgstr "地å€ç°¿" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "待办工作" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "备忘录" #: ../jpilot.c:2174 msgid "Do it now" msgstr "ç«‹å³æ‰§è¡Œ" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "ç¨åŽæé†’æˆ‘" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "别å†é€šçŸ¥æˆ‘了" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot 使用 GTK2 图形å‰ç«¯ã€‚此版本的图形å‰ç«¯ä½¿ç”¨ UTF-8 对字符编ç ã€‚\n" "您应该选择 UTF-8 字符集,æ‰èƒ½çœ‹åˆ°éž ASCII 字符(如中文)。\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "字符集 " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "选择 UTF-8 ç¼–ç " #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr " +B +M +A +T æ ¼å¼å°±æ˜¯æ—¥æœŸ+æ ¼å¼(请查看 -? 中的更多信æ¯)。\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v 显示版本并退出。\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h 显示帮助并退出。\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -h 显示帮助并退出。\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -B 转存行事历。\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N 将今天的应用转存到行事历。\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NYYYY/MM/DD 转存行事历中 YYYY/MM/DD 中的应用。\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A 转存地å€ç°¿ã€‚\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -M 将待办工作列表转存为 CSV。\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M 转存备忘。\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "无法打开文件:%s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr " J-Pilot 首选项å¯è¯»å–端å£ã€é€Ÿçއã€å¤‡ä»½æ•°ï¼Œç­‰ç­‰ã€‚\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v 显示版本和编译选项并退出。\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d å°†è°ƒè¯•ä¿¡æ¯æ˜¾ç¤ºåœ¨æ ‡å‡†è¾“出上。\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "未装入æ’件。\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = 循环,å¦åˆ™åªåŒæ­¥ä¸€æ¬¡å¹¶é€€å‡ºã€‚\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr " -p {端å£} = 使用此端å£åŒæ­¥ï¼Œè€Œä¸æ˜¯ä»Žé¦–选项获å–端å£ã€‚\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "打开文件时å‘生错误:%s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "打开文件时出错:next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "错误" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "您的 HOME 环境å˜é‡å¤ªé•¿\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "此记录已删除。\n" "该记录已ç»è®¡åˆ’ä¸ºåœ¨ä¸‹æ¬¡åŒæ­¥æ—¶ä»Ž Palm 删除。\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "无法打开 PC 记录文件\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "找ä¸åˆ°è¦åˆ é™¤çš„记录\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "未知头版本 %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d 打开文件错误:%s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d è¯»å–æ–‡ä»¶é”™è¯¯ï¼š%s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "打开文件时å‘生错误:%s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "è¯»å– %s 5 出错\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "è¯»å– PC 文件1 出错\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "è¯»å– PC 文件2出错\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "未知的 PC 头版本 = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "无法打开日志文件,放弃æ“作。\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "无法打开日志文件\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "备忘文本 > 65535,已截断\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "导入了备忘 %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "æ–‡ä»¶ä¼¼ä¹Žä¸æ˜¯ memopad.dat æ ¼å¼\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "无法导出备忘 %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "备忘录" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "月份视图" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm 密ç " #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "䏿­£ç¡®ï¼Œè¯·é‡æ–°è¾“å…¥ PalmOS 密ç " #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "请输入 PalmOS 密ç " #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "è¯»å–æ–‡ä»¶å‡ºé”™ï¼š%s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "无穷循环" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "è¯»å– %s%s 第一行时:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "版本错误\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "检查首选项->管é“\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "打开æ’ä»¶ [%s] 出错\n" "错误[%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " æ’件无效:[%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "æ’件:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "æ­¤æ’件的版本是(%d.%d)。\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "无法与此版本的 J-Pilot å…±åŒå·¥ä½œã€‚\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%Y-%m-%d" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%Y-%m-%d" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%Y-%m-%d" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%Y-%m-%d" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Yå¹´%m月%dæ—¥" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Yå¹´%m月%dæ—¥" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "首选项" #: ../prefs_gui.c:483 msgid "Locale" msgstr "语系" #: ../prefs_gui.c:485 msgid "Settings" msgstr "设置" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "行事历" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "待办" #: ../prefs_gui.c:493 msgid "Memo" msgstr "备忘录" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "警告" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "管é“" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "çŸ­æ—¥æœŸæ ¼å¼ " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "é•¿æ—¥æœŸæ ¼å¼ " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "æ—¶é—´æ ¼å¼ " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "我的 GTK 色彩文件是 " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "åŒæ­¥é—®é¢˜" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "è¦å½’档的备份数目" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "显示已删除的记录(默认为å¦)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "显示已修改的已删除记录(默认为å¦)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "请求文件安装确认(J-Pilot -> PDA)(默认为是)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "显示弹出æç¤º(默认为是)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "日历上çªå‡ºæ˜¾ç¤ºæœ‰çº¦ä¼šçš„æ—¥å­" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "在天ã€å‘¨å’Œæœˆè§†å›¾ä¸­æ‰¹æ³¨ä»Šå¤©" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "在天ã€å‘¨å’Œæœˆè§†å›¾ä¸­è¿½åŠ å¹´ä»½çºªå¿µæ—¥" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "使用 DateBk 记事标记" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "此版本没有å¯ç”¨ DateBk 支æŒ" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "邮件命令" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s 将替æ¢ä¸ºç”µå­é‚®ä»¶åœ°å€" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "éšè—已完æˆçš„工作" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "éšè—未到期的待办" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "è®°å½•å®Œæˆæ—¥æœŸ" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "使用 Manana æ•°æ®åº“" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "使用默认的到期日" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "使用 Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "约会æé†’时打开闹铃窗å£" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "执行此命令" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "è­¦å‘Šï¼šä»»æ„æ‰§è¡Œ shell 命令有相当的å±é™©æ€§!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "闹铃命令" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t 代表闹铃时间" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d 代表闹铃日期" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D 代表闹铃æè¿°" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N 代表闹铃记事" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "此版本没有å¯ç”¨ %D (æè¿°æ›¿ä»£ç¬¦) 功能" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "此版本没有å¯ç”¨ %N (记事替代符) 功能" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "åŒæ­¥è¡Œäº‹åކ" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "åŒæ­¥åœ°å€" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "åŒæ­¥å¾…办" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "åŒæ­¥å¤‡å¿˜å½•" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "åŒæ­¥ Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "使用 J-OS(䏿˜¯æ—¥æœ¬ PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "åŒæ­¥ %s(%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "打å°é€‰é¡¹" #: ../print_gui.c:196 msgid "Paper Size" msgstr "纸张尺寸" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "一天报告" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "一周报告" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "月份报告" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "删除了一项 %s 记录。" #: ../print_gui.c:268 msgid "All records in this category" msgstr "该类别里的全部记录" #: ../print_gui.c:272 msgid "Print all records" msgstr "打å°å…¨éƒ¨è®°å½•" #: ../print_gui.c:294 msgid "One record per page" msgstr "æ¯é¡µæ‰“å°ä¸€é¡¹è®°å½•" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " æ¯é¡¹è®°å½•中间加空行" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "打å°å‘½ä»¤ (例如 lpr, 或 cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "æ¢å¤æ‰‹æŒè®¾å¤‡" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "è¦å®‰è£…的文件" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "è¦æ¢å¤æ‚¨çš„æ‰‹æŒè®¾å¤‡ï¼š" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. é€‰æ‹©æ‰€æœ‰æ‚¨è¦æ¢å¤çš„应用程åºã€‚默认是全部。" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. 输入用户å和用户 ID。" #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. ç‚¹å‡»â€œç¡®å®šâ€æŒ‰é’®ã€‚" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "此项æ“作会覆盖当å‰åœ¨æ‰‹æŒè®¾å¤‡ä¸Šçš„全部数æ®ã€‚" #: ../search_gui.c:142 msgid "datebook" msgstr "行事历" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "地å€" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "待办" #: ../search_gui.c:359 msgid "memo" msgstr "备忘" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "备忘" #: ../search_gui.c:419 msgid "plugin ?" msgstr "æ’ä»¶ ?" #: ../search_gui.c:499 msgid "No records found" msgstr "找ä¸åˆ°è®°å½•" #: ../search_gui.c:598 msgid "Search" msgstr "æœç´¢" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "æœç´¢ï¼š" #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "区分大å°å†™" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "æ‰“å¼€é”æ–‡ä»¶å¤±è´¥\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "é”定失败\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "åŒæ­¥æ–‡ä»¶è¢« pid %d é”定\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "è§£é”失败\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "åŒæ­¥ç”± pid %d é”定\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "检查您的串å£å’Œè®¾ç½®\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "无法读å–主目录\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (创建者 ID '%s') å·²ç»æ˜¯æœ€æ–°çš„了,跳过获å–。\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "æ­£åœ¨èŽ·å– '%s' (创建者 ID '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "失败,无法创建文件 %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "失败,无法备份数æ®åº“ %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "确定\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "跳过 %s (创建者 ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "安装 %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "无法打开文件:“%sâ€ï¼š%sï¼\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "æ— æ³•åŒæ­¥æ–‡ä»¶ï¼šâ€œ%sâ€ï¼šæ–‡ä»¶å¯èƒ½å·²æŸå。\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(创建者 ID 是“%sâ€)..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(创建者 ID 是“%sâ€)..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "无法打开文件:%s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "安装 %s 失败" #: ../sync.c:1619 msgid "Failed.\n" msgstr "失败。\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "已安装 %s " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d 获å–应用程åºä¿¡æ¯ %s 出错\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d æå–应用程åºä¿¡æ¯å‡ºé”™ %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "è¯»å– %s 的应用程åºä¿¡æ¯å—出错\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "无法将类别 %s 添加到远程。\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "远程的类别太多。\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "桌é¢ä¸Š %s 中的全部记录都将移动到 %s 中。\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "åŒæ­¥ %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "写了一项 %s 记录。" #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "写入一项 %s 记录失败。" #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "删除一项 %s 记录失败。" #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "删除了一项 %s 记录。" #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "删除了一项 %s 记录。" #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "写了一项 %s 记录。" #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "写入一项 %s 记录失败。" #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "删除一项 %s 记录失败。" #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "删除了一项 %s 记录。" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord 失败\n" "å¯èƒ½æ˜¯å› ä¸ºè¿™é¡¹è®°å½•å·²ç»åœ¨ Palm 上删除了\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "安装用户信æ¯å®Œæˆã€‚\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " 正在与设备 %s åŒæ­¥\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " 现在请按 HotSync é”®\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "ä¸Šæ¬¡åŒæ­¥çš„用户å-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ä¸Šæ¬¡åŒæ­¥çš„用户 ID->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " 此用户å-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " 此用户 ID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "ç”¨æˆ·åæ˜¯â€œ%sâ€\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "用户 ID 是 %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "ä¸Šæ¬¡åŒæ­¥çš„PC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "这部 PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "åŒæ­¥å·²å–消\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "æ¢å¤æ‰‹æŒè®¾å¤‡å®Œæ¯•。\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "您å¯èƒ½éœ€è¦åŒæ­¥ä»¥æ›´æ–° J-Pilot。\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "æ­£åœ¨è¿›è¡Œå¿«é€ŸåŒæ­¥ã€‚\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "æ­£åœ¨è¿›è¡Œæ…¢é€ŸåŒæ­¥ã€‚\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "感谢您使用 J-Pilot。" #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "完æˆã€‚\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "离开中,状æ€å·æ˜¯ %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "待办工作的æè¿°é•¿åº¦ > %d,截断为 %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "待办工作的记事长度 > %d,截断为 %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "到期日" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "æ–‡ä»¶ä¼¼ä¹Žä¸æ˜¯ todo.dat æ ¼å¼\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "无法导出待办 %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "到期日" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "到期日" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "优先级:" #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "已完æˆ" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "优先级超出范围\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "æ— é™æœŸ" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "已完æˆ" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "优先级:" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "到期日:" #: ../utils.c:330 msgid "Today" msgstr "今天" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "找ä¸åˆ°ç©ºçš„ DB 文件 %s:%s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " å¯èƒ½æœªå®‰è£…。\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "无法创建目录 %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s 是目录" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "无法在目录 %s 中写入文件\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "ä¿å­˜è®°å½•修改?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "您è¦ä¿å­˜å¯¹äºŽæ­¤é¡¹è®°å½•的修改å—?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "ä¿å­˜æ–°è®°å½•?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "您è¦ä¿å­˜æ­¤é¡¹æ–°å»ºçš„记录å—?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "无穷询问,跳出\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "未装入æ’件。\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a 忽略自从程åºä¸Šæ¬¡è¿è¡ŒåŽé”™è¿‡çš„æé†’。\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A 忽略全部æé†’,包括过去的未æ¥çš„。\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " PILOTPORT åŠ PILOTRATE 环境å˜é‡ç”¨äºŽæŒ‡å®šè¦ä½¿ç”¨å“ªä¸ªç«¯å£\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " æ¥åŒæ­¥ï¼Œä»¥åŠç«¯å£çš„速度。\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " 如果没有设置 PILOTPORT,则默认为 /dev/pilot。\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "读入文件出错" #: ../utils.c:1973 msgid "Date compiled" msgstr "编译日期" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "带这些选项编译:" #: ../utils.c:1976 msgid "Installed Path" msgstr "安装路径" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link 版本" #: ../utils.c:1982 msgid "USB support" msgstr "USB 支æŒ" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "是" #: ../utils.c:1984 msgid "Private record support" msgstr "ç§äººè®°å½•支æŒ" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "å¦" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk 支æŒ" #: ../utils.c:1996 msgid "Plugin support" msgstr "æ’件支æŒ" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana 支æŒ" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS 支æŒ(外语)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 支æŒ" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "无法获得 HOME 环境å˜é‡\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "您的 HOME 环境å˜é‡å¤ªé•¿\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "编辑类别" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID 是 0。\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "我生æˆäº†ä¸€é¡¹æ–°çš„ PC ID,是 %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "今天是%A,%x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "今天是%%A,%s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "å°† PC 头写入文件出错:next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "å°† next id 写入文件出错:next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "æ¯å‘¨è§†å›¾" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "澳大利亚" #: ../Expense/expense.c:96 msgid "Austria" msgstr "澳大利亚" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "比利时" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "巴西" #: ../Expense/expense.c:99 msgid "Canada" msgstr "加拿大" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "丹麦" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "欧盟(欧洲)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "芬兰" #: ../Expense/expense.c:103 msgid "France" msgstr "法国" #: ../Expense/expense.c:104 msgid "Germany" msgstr "德国" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "香港" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "冰岛" #: ../Expense/expense.c:107 msgid "India" msgstr "å°åº¦" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "å°åº¦å°¼è¥¿äºš" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "爱尔兰" #: ../Expense/expense.c:110 msgid "Italy" msgstr "æ„大利" #: ../Expense/expense.c:111 msgid "Japan" msgstr "日本" #: ../Expense/expense.c:112 msgid "Korea" msgstr "韩国" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "墿£®å ¡" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "马æ¥è¥¿äºš" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "墨西哥" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "è·å…°" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "新西兰" #: ../Expense/expense.c:118 msgid "Norway" msgstr "挪å¨" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "中国" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "è²å¾‹å®¾" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "新加å¡" #: ../Expense/expense.c:122 msgid "Spain" msgstr "西ç­ç‰™" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "瑞典" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "瑞士" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "䏭国尿¹¾" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "泰国" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "英国" #: ../Expense/expense.c:128 msgid "United States" msgstr "美国" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "开支" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "飞机票" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "æ—©é¤" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "公共汽车" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "商务客饭" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "租车" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "晚é¤" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "娱ä¹" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "传真" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "汽油" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "礼å“" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "酒店" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "附带开支" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "æ´—è¡£" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "豪åŽè½¿è½¦" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "寄宿" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "åˆé¤" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "里程" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "泊车" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "邮费" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "å¿«é¤" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "地é“" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "用å“" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "的士" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "电è¯" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "å°å¸" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "通行费" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "ç«è½¦" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "花费:未知花费类型\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "花费:未知支付类型\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "美国è¿é€š (American Express)" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "现金" #: ../Expense/expense.c:1377 msgid "Check" msgstr "支票" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "信用å¡" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "ä¸‡äº‹è¾¾å¡ (MasterCard)" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "预付费" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA å¡" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "类型:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "金é¢ï¼š" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "类别:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "类型:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "支付:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "è´§å¸ï¼š" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "月:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "日:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "年:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "金é¢ï¼š" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "商户:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "城市:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "å‚加者" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "密钥环:pack_KeyRing():buf_size 太å°\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "䏿­£ç¡®ï¼Œè¯·é‡æ–°è¾“入密钥环密ç " #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "输入新的密钥环密ç " #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "输入密钥环密ç " #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "密钥环:文件 %s 未找到。\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "密钥环:å°è¯•åŒæ­¥ã€‚\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "密钥环" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "无法导出备忘 %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "更改\n" "密钥环\n" "密ç " #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "å–æ¶ˆ" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "账户" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "å字:" #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "账户:" #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "密ç ï¼š" #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "生æˆå¯†ç " #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "åŒæ­¥å¤‡å¿˜å½•" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "完æˆ" #, fuzzy #~ msgid "Overwrite" #~ msgstr "覆盖文件" #~ msgid "Field" #~ msgstr "域" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "快速查看" #~ msgid "Unable to open %s%s file\n" #~ msgstr "无法打开 %s%s 文件\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "无法打开 %s.alarms 文件\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "您无法编辑类别 %s。\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "您无法删除类别 %s。\n" #~ msgid "category name" #~ msgstr "类别åç§°" #~ msgid "debug" #~ msgstr "调试" #~ msgid "Close" #~ msgstr "关闭" #~ msgid "none" #~ msgstr "æ— " #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "DateBookDB 中有未知的 repeatType\n" #~ msgid "W" #~ msgstr "周" #~ msgid "M" #~ msgstr "月" #~ msgid "This Event has no particular time" #~ msgstr "此事件无特定时间" #~ msgid "Start Time" #~ msgstr "开始时间" #~ msgid "End Time" #~ msgstr "ç»“æŸæ—¶é—´" #~ msgid "Dismiss" #~ msgstr "未接" #~ msgid "Done" #~ msgstr "完æˆ" #~ msgid "Add" #~ msgstr "添加" #, fuzzy #~ msgid "User name" #~ msgstr "用户å" #~ msgid " -v = version\n" #~ msgstr " -v = 版本\n" #~ msgid " -h = help\n" #~ msgstr " -h = 帮助\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = 以调试模å¼è¿è¡Œ\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = ä¸è£…å…¥æ’件。\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = æ‰§è¡ŒåŒæ­¥å¹¶å¤‡ä»½ï¼Œå¦åˆ™åªåŒæ­¥ã€‚\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "指定了无效的地ç†ä½ç½®ï¼šâ€œ%sâ€\n" #~ msgid "/Help/PayBack program" #~ msgstr "/帮助(H)/PayBack 计划" #~ msgid "Font Selection Dialog" #~ msgstr "å­—ä½“é€‰æ‹©å¯¹è¯æ¡†" #~ msgid "Clear" #~ msgstr "清除" #~ msgid "Show private records" #~ msgstr "显示ç§äººè®°å½•" #~ msgid "Hide private records" #~ msgstr "éšè—ç§äººè®°å½•" #~ msgid "Mask private records" #~ msgstr "å±è”½ç§äººè®°å½•" #~ msgid "Font" #~ msgstr "字体" #~ msgid "Go to the menu \"" #~ msgstr "转到èœå•“" #~ msgid "\" and change the \"" #~ msgstr "â€ç„¶åŽæ›´æ”¹â€œ" #~ msgid "\"." #~ msgstr "â€ã€‚" #~ msgid "Couldn't open PC records file\n" #~ msgstr "无法打开 PC 记录文件\n" #~ msgid "The first day of the week is " #~ msgstr "一周的第一天是 " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "ä¸²è¡ŒæŽ¥å£ (/dev/ttyS0,/dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "串å£é€Ÿçއ(ä¸å½±å“ USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "åŒæ­¥ memo32 (pedit32)" #~ msgid "One record" #~ msgstr "一项记录" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s:请按 HotSync 按钮,或者“kill %dâ€\n" #~ msgid "Finished\n" #~ msgstr "完æˆ\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "上一个用户å = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "上一个用户 ID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "用户å [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "用户 ID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "Palm:记录数目 = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "ç£ç›˜ï¼šè®°å½•æ•°ç›® = %d\n" #, fuzzy #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i 调用åŽå°† jpilot 缩å°ä¸ºå›¾æ ‡ã€‚\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s ä¼¼ä¹Žä¸æ˜¯ç›®å½•。\n" #~ "但需è¦ç›®å½•。\n" #~ msgid "AmEx" #~ msgstr "美国è¿é€š(AmEx)" #~ msgid "CreditCard" #~ msgstr "信用å¡" #~ msgid "MasterCard" #~ msgstr "万事达å¡(MasterCard)" #~ msgid "Expense: Unknown category\n" #~ msgstr "花费:未知类别\n" #, fuzzy #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "您的 HOME 环境å˜é‡å¤ªé•¿\n" #~ msgid "Quit" #~ msgstr "退出" #~ msgid "Help" #~ msgstr "帮助" #~ msgid "Directory" #~ msgstr "目录" #~ msgid "Filename" #~ msgstr "文件å" #~ msgid "Answer: " #~ msgstr "答案:" #~ msgid "Sync" #~ msgstr "åŒæ­¥" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p ä¸è£…å…¥æ’件。\n" jpilot-1.8.2/po/sv.po0000664000175000017500000024770712340261240011367 00000000000000# J-Pilot på svenska/J-Pilot in Swedish # Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. # Erik Bågfors , 2000. # Göran Uddeborg , 2001. # Johan Hilding , 2002. # msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2002-10-04 17:01+0100\n" "Last-Translator: Johan Hilding \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Slut på minne" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "Fel vid läsning av %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Fel vid läsning av %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "fel" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "Kunde inte öppna %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kunde inte öppna %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Filen verkar inte vara i address.dat-format\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Oarkiverad" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Nej" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Ja" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s är en katalog" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Fel vid filöppning" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Vill du skriva över filen %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Vill du skriva över filen?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Fel vid filöppning" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Kategori: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privat" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Namn/Företag" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Namn/Företag" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Företag/Namn" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Kör det här kommandot" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Misslyckades.\n" #: ../address_gui.c:2660 #, fuzzy msgid "Add Photo" msgstr "Lägg till" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Kategori: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 poster" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d av %d poster" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Namn" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adress" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Annat" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Anteckning" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 #, fuzzy msgid "Quick Find: " msgstr "Snabbsök" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Avbryt" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Ta bort" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "Tog bort en %s-post." #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Ta bort" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "Tog bort en %s-post." #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopiera" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "Lägg till post" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Ny post" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "Lägg till post" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Lägg till post" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "Lägg till post" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Verkställ ändringar" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privat" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Avbryt" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Ta bort" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Visa\n" "i lista" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Påminn mig" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dagar" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Alla" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minuter" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Timmar" #: ../alarms.c:253 msgid "Remind me" msgstr "Påminn mig" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "Kunde inte öppna %s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Mötespåminnare" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Förflutet möte" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Senarelagt möte" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Möte" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PC-fil korrupt?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek misslyckades - ödestigert fel\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "Installering av %s misslyckades" #: ../category.c:407 #, fuzzy msgid "Move" msgstr "Må" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "" #: ../category.c:440 msgid "Enter New Category" msgstr "" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "" #: ../category.c:452 msgid "You must select a category to rename" msgstr "" #: ../category.c:461 msgid "Enter New Category Name" msgstr "" #: ../category.c:476 msgid "You must select a category to delete" msgstr "" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Kategori: " #: ../category.c:834 msgid "New" msgstr "Ny" #: ../category.c:841 #, fuzzy msgid "Rename" msgstr "namn: " #: ../dat.c:512 msgid "unknown type =" msgstr "" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "" #: ../dat.c:636 msgid "File schema is:" msgstr "" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Upprepa på:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Återkommer följande dagar:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Upprepa på:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Återkommer följande dagar:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Återkommer följande dagar:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Återkommer följande dagar:" # These days of the week are put in the buttons above the calendar and # the little buttons in the repeat weekly window. # They should be one letter if possible. The English ones get truncated to # one letter. #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Sö" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Må" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ti" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "On" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "To" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Fr" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Lö" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Slutdatum" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Återkommer följande dagar:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "antal poster = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Anteckning" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarm" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Upprepa på:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Veckodag" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 #, fuzzy msgid "Error" msgstr "fel" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Filen verkar inte vara i datebook.dat-format\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportera" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exportera alla kalenderposter" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Spara som" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Bläddra" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ingen" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Startdatum" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Slutdatum" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Söndag" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Måndag" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Tisdag" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Onsdag" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Torsdag" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Fredag" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Lördag" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4:e" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Sista" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Detta är en återkommande händelse.\n" "Vill du att ändringarna ska gälla alla\n" "händelser, eller bara den här händelsen?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Aktuell" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dag" #: ../datebook_gui.c:2028 msgid "week" msgstr "vecka" #: ../datebook_gui.c:2029 msgid "month" msgstr "månad" #: ../datebook_gui.c:2030 msgid "year" msgstr "år" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Du kan inte ha ett möte som repeteras var %d %s\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Du kan inte ha ett möte med veckovis upprepning som inte upprepas på någon " "veckodag.\n" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Ingen tid" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 #, fuzzy msgid "Invalid Appointment" msgstr "Förflutet möte" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Inget datum" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Vecka" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Månad" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Kategorier" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Tid" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Uppgift" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Förfallen" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 #, fuzzy msgid "Date:" msgstr "Datum" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Börjar på" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Sluta på" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Dag" # msgid "WeekView" # msgstr "Veckovy" # msgid "MonthView" # msgstr "Månadsvy" #: ../datebook_gui.c:5450 msgid "Year" msgstr "År" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Denna händelse återkommer inte" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Återkommer var" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Dag(ar)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Sluta på" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Vecka(or)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Månad(er)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Upprepa på:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Veckodag" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Datum" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "År" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "" #: ../dialer.c:230 msgid "Prefix 1" msgstr "" #: ../dialer.c:252 msgid "Prefix 2" msgstr "" #: ../dialer.c:274 msgid "Prefix 3" msgstr "" #: ../dialer.c:289 msgid "Phone number:" msgstr "" #: ../dialer.c:319 #, fuzzy msgid "Extension" msgstr "Expense" #: ../dialer.c:341 #, fuzzy msgid "Dial Command" msgstr "Alarmkommando" #: ../export_gui.c:121 msgid "File Browser" msgstr "Filbläddrare" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Välj poster som ska exporteras" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Använd Ctrl- och Skift-knapparna" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importera" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Posten var markerad som privat" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Posten var inte markerad som privat" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Alla poster i den här kategorin" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importera alla" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Hoppa över" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "För att flytta till en dold katalog, skriv in det nedan och tryck TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importera filtyp" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Filer att installera" #: ../install_gui.c:372 msgid "Install" msgstr "Installera" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Arkiv/_Installera" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Användarnamn" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Användar-ID" #: ../jpilot.c:317 msgid "Print" msgstr "Skriv ut" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Det finns inget utskriftsstöd för detta tillägg." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Det finns inget importstöd för detta tillägg." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Det finns inget exportstöd för detta tillägg." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Avbryt" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 #, fuzzy msgid "Cancel Sync" msgstr "Avbryt" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Synka ändå" #: ../jpilot.c:697 ../jpilot.c:701 #, fuzzy msgid "Sync Problem" msgstr "Synka minnesanteckningar" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "Användar-ID" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Om %s" #: ../jpilot.c:1107 #, fuzzy msgid "/_File" msgstr "/_Arkiv" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Arkiv/Riv av" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Arkiv/_Sök" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Arkiv/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Arkiv/_Installera" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Arkiv/Importera" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Arkiv/Exportera" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Arkiv/Inställningar" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Arkiv/Skriv ut" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/Arkiv/_Installera" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Arkiv/Återställ handdatorn" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Arkiv/Avsluta" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Visa" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 #, fuzzy msgid "/View/Hide Private Records" msgstr "/Visa/Dölj-Visa privata poster" #: ../jpilot.c:1123 ../jpilot.c:1373 #, fuzzy msgid "/View/Show Private Records" msgstr "/Visa/Dölj-Visa privata poster" #: ../jpilot.c:1124 ../jpilot.c:1376 #, fuzzy msgid "/View/Mask Private Records" msgstr "/Visa/Dölj-Visa privata poster" #: ../jpilot.c:1125 #, fuzzy msgid "/View/sep1" msgstr "/Arkiv/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Visa/Kalender" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Visa/Adresser" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Visa/Att göra-lista" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Visa/Minnesanteckningar" #: ../jpilot.c:1130 ../jpilot.c:1261 #, fuzzy msgid "/_Plugins" msgstr "/Insticksmoduler" #: ../jpilot.c:1132 #, fuzzy msgid "/_Web" msgstr "On" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Hjälp" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/Hjälp/J-Pilot" #: ../jpilot.c:1229 #, fuzzy, c-format msgid "/_Plugins/%s" msgstr "/Insticksmoduler/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Hjälp/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "Kunde inte öppna %s\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "/Visa/Dölj-Visa privata poster" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "/Visa/Dölj-Visa privata poster" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Skriv ut alla poster" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synkronisera din palm med datorn" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Synka adress" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synkronisera din palm med datorn\n" "och gör sedan en säkerhetskopia" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Kalender/Gå till idag" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adressbok" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Att göra-lista" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Anteckningsblock" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 #, fuzzy msgid "Remind me later" msgstr "Påminn mig" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" # Lite svårt att översätta, hjälp kan behövas. #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Teckenuppsättning" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "Adressbok" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "Adressbok" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Adressbok" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "Adressbok" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kunde inte öppna %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Fel vid läsning av %s\n" #: ../jpilot-sync.c:223 #, fuzzy, c-format msgid "Error: pi_listen\n" msgstr "Fel i %s\n" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Fel vid filöppning" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "fel" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "Kunde inte öppna %s\n" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Kunde inte hitta en tom databas-fil.\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "Fel vid läsning av %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "Fel vid läsning av %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Fel vid filöppning" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Fel vid läsning av %s\n" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Fel vid läsning av %s\n" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Fel vid läsning av %s\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kan inte öppna loggfil, ger upp.\n" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "Kunde inte öppna %s\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Filen verkar inte vara i memopad.dat format\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Anteckningsblock" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Månadsvy" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palmlösenord" #: ../password.c:306 #, fuzzy msgid "Incorrect, Reenter PalmOS Password" msgstr "Skriv PalmOSlösenord" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Skriv PalmOSlösenord" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "Kan inte öppna jpilot_to_install-filen\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Fel vid läsning av %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, fuzzy, c-format msgid "Plugin:[%s]\n" msgstr "/Insticksmoduler/%s" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Inställningar" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Lokal" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Inställningar" #: ../prefs_gui.c:487 #, fuzzy msgid "Datebook" msgstr "Synka kalender" #: ../prefs_gui.c:491 #, fuzzy msgid "ToDo" msgstr "Att göra-lista" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "Synka minnesanteckningar" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarm" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Tillägg" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Kort datumformat " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Långt datumformat " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Tidsformat " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Min GTK-färgfil är " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Synka minnesanteckningar" #. Serial Rate #: ../prefs_gui.c:605 #, fuzzy msgid "Serial Rate" msgstr "Seriell överföringshastighet " #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Antal säkerhetskopior som skall arkiveras?" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Visa borttagna poster (standard: Nej)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Visa modifierade borttagna poster (standard: Nej)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Markera kalenderdagar med möten" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 #, fuzzy msgid "Use DateBk note tags" msgstr "Använd DateBk-anteckningstaggar" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 #, fuzzy msgid "Mail Command" msgstr "Alarmkommando" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%t ersätts med alarmtiden" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Dölj avklarade att göra-poster?" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Använd Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Öppna alarmfönster för mötespåminnelser" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Kör det här kommandot" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "VARNING: att köra godtyckliga skalkommandon kan vara farligt!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarmkommando" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t ersätts med alarmtiden" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d ersätts med alarmdatumet" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D erätts alarmbeskrivningen" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N ersätts med alarmanteckningen" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Synka kalender" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Synka adress" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Synka att göra-lista" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Synka minnesanteckningar" #. Show sync Manana check box #: ../prefs_gui.c:1001 #, fuzzy msgid "Sync Manana" msgstr "Synka ändå" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Synkroniserar %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Utskriftsinställningar" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Papperstorlek" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Dagsutskrift" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Veckoutskrift" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Månadsutskrift" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Tog bort en %s-post." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Alla poster i den här kategorin" #: ../print_gui.c:272 msgid "Print all records" msgstr "Skriv ut alla poster" #: ../print_gui.c:294 msgid "One record per page" msgstr "En post per sida" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Blanka rader mellan varje post" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Utskriftskommando (tex. lpr, eller cat > fil.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Återställ handdator" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Filer att installera" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "För att återställa din handdator:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Välj alla program du vill återställa. Standard är att återställa alla." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Skriv in användarnamnet och användar-ID." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Tryck på OK-knappen nu" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Det här kommer att skriva över data som just nu finns på handdatorn." #: ../search_gui.c:142 #, fuzzy msgid "datebook" msgstr "Synka kalender" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 #, fuzzy msgid "address" msgstr "Adress" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 #, fuzzy msgid "todo" msgstr "Synka att göra-lista" #: ../search_gui.c:359 #, fuzzy msgid "memo" msgstr "Synka minnesanteckningar" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Synka minnesanteckningar" #: ../search_gui.c:419 #, fuzzy msgid "plugin ?" msgstr "/Insticksmoduler" #: ../search_gui.c:499 msgid "No records found" msgstr "Inga poster funna" #: ../search_gui.c:598 msgid "Search" msgstr "Sök" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Sök efter: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Skilj på gemener/versaler" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "Kan inte öppna loggfil\n" #: ../sync.c:131 #, fuzzy msgid "lock failed\n" msgstr "Misslyckades.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Kontrollera din serieport och inställningar\n" #: ../sync.c:677 #, fuzzy msgid "Unable to read home dir\n" msgstr "Kunde inte öppna %s\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (Skapar-ID \"%s\") är redan uppdaterad, hoppar över nerladdning\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Hämtar \"%s\" (Skapar-ID \"%s\")... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Hoppar över %s (Skapar-ID \"%s\")\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installerar %s " #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Kan inte öppna \"%s\"!\n" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Kan inte öppna \"%s\"!\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(Skapar ID är \"%s\")..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(Skapar ID är \"%s\")..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "Kunde inte öppna %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installering av %s misslyckades" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Misslyckades.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "Installerade %s " #: ../sync.c:1736 #, fuzzy, c-format msgid "%s:%d Error getting app info %s\n" msgstr "Fel vid läsning av %s\n" #: ../sync.c:1742 ../sync.c:1772 #, fuzzy, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "Fel vid läsning av %s\n" #: ../sync.c:1763 #, fuzzy, c-format msgid "Error reading appinfo block for %s\n" msgstr "Fel vid läsning av %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synkroniserar %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Skrev en %s-post." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Skrivandet av en %s-post misslyckades." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Borttagandet av en %s-post misslyckades." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Tog bort en %s-post." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Tog bort en %s-post." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Skrev en %s-post." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Skrivandet av en %s post misslyckades." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Borttagandet av en %s-post misslyckades." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Tog bort en %s-post." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord misslyckades\n" "Det kan bero på att posten redan var borttagen på Palmen\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Synkroniserar enhet %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Tryck på HotSync-knappen nu\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, fuzzy, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Senaste användarnamn-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, fuzzy, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Senaste användar-ID-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, fuzzy, c-format msgid " This Username-->\"%s\"\n" msgstr "Användarnamn-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, fuzzy, c-format msgid " This User ID-->%d\n" msgstr "Användar-ID-->%d\n" #: ../sync.c:3204 #, fuzzy, c-format msgid "Username is \"%s\"\n" msgstr "Användarnamn-->\"%s\"\n" #: ../sync.c:3205 #, fuzzy, c-format msgid "User ID is %d\n" msgstr "Användar-ID-->%d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Denna PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Synkronisering avbruten\n" #: ../sync.c:3255 #, fuzzy msgid "Finished restoring handheld.\n" msgstr "/Arkiv/Återställ handdatorn" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Du kanske behöver synkronisera för att uppdatera J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "En snabb synkronisering utförs.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "En långsam synkronisering utförs.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Tack för att du använder J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Färdig.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Förfallodatum" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Filen verkar inte var i todo.dat-format\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Förfallodatum" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Förfallodatum" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioritet: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Avslutad" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Inget datum" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Avslutad" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioritet: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Förfallodatum:" #: ../utils.c:330 msgid "Today" msgstr "Idag" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Kunde inte hitta en tom databas-fil.\n" #: ../utils.c:578 #, fuzzy msgid " may not be installed.\n" msgstr "jpilot är kanske inte installerat.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s är en katalog" #: ../utils.c:628 #, c-format msgid "Unable to get write permission for directory %s\n" msgstr "" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Spara ändrad post?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Vill du spara ändringarna i den här posten?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Spara denna nya posten?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Vill du spara den nya posten?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Fel vid läsning" #: ../utils.c:1973 msgid "Date compiled" msgstr "" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "" #: ../utils.c:1976 #, fuzzy msgid "Installed Path" msgstr "Installerade %s " #: ../utils.c:1978 msgid "pilot-link version" msgstr "" #: ../utils.c:1982 msgid "USB support" msgstr "" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 #, fuzzy msgid "yes" msgstr "Ja" #: ../utils.c:1984 #, fuzzy msgid "Private record support" msgstr "Skriv ut alla poster" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 #, fuzzy msgid "no" msgstr "ingen" #: ../utils.c:1990 msgid "Datebk support" msgstr "" #: ../utils.c:1996 #, fuzzy msgid "Plugin support" msgstr "/Insticksmoduler" #: ../utils.c:2002 #, fuzzy msgid "Manana support" msgstr "/Insticksmoduler" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "" #: ../utils.c:2014 #, fuzzy msgid "GTK2 support" msgstr "/Insticksmoduler" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 msgid "Edit Categories..." msgstr "" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC-ID är 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Jag genererade ett nytt PC-ID. Det är %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Idag är det %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Idag är det %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Fel vid läsning av %s\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Fel vid läsning av %s\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Veckovy" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "" #: ../Expense/expense.c:96 msgid "Austria" msgstr "" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "" #: ../Expense/expense.c:99 msgid "Canada" msgstr "" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "" #: ../Expense/expense.c:102 msgid "Finland" msgstr "" #: ../Expense/expense.c:103 #, fuzzy msgid "France" msgstr "Avbryt" #: ../Expense/expense.c:104 msgid "Germany" msgstr "" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "" #: ../Expense/expense.c:107 msgid "India" msgstr "" #: ../Expense/expense.c:108 #, fuzzy msgid "Indonesia" msgstr "ingen" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "" #: ../Expense/expense.c:110 #, fuzzy msgid "Italy" msgstr "Installera" #: ../Expense/expense.c:111 msgid "Japan" msgstr "" #: ../Expense/expense.c:112 msgid "Korea" msgstr "" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "" #: ../Expense/expense.c:118 msgid "Norway" msgstr "" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "" #: ../Expense/expense.c:122 #, fuzzy msgid "Spain" msgstr "Tåg" #: ../Expense/expense.c:123 #, fuzzy msgid "Sweden" msgstr "vecka" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "" #: ../Expense/expense.c:125 #, fuzzy msgid "Taiwan" msgstr "Tåg" #: ../Expense/expense.c:126 #, fuzzy msgid "Thailand" msgstr "Tåg" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "" #: ../Expense/expense.c:128 msgid "United States" msgstr "" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Expense" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Flygbiljetter" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Frukost" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Buss" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Affärsmåltider" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Hyrbil" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Middag" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Underhållning" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Bensin" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Gåvor" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotell" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Oförutsedda" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Tvätt" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limousine" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Logi" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Lunch" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Milkostnad" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parkering" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Porto" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Tilltugg" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Tunnelbana" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Förnödenheter" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Tips" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Avgifter" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Tåg" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Kontant" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Check" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Kreditkort" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Förbetald" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Typ: " #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Summa: " #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "Kategori: " #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Typ: " #. Payment Menu #: ../Expense/expense.c:1718 #, fuzzy msgid "Payment:" msgstr "Betalning: " #. Currency Menu #: ../Expense/expense.c:1726 #, fuzzy msgid "Currency:" msgstr "Aktuell" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Månad:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Dag:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "År:" #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Summa: " #. Vendor Entry #: ../Expense/expense.c:1797 #, fuzzy msgid "Vendor:" msgstr "Försäljare: " #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Stad: " #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Närvarande" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s är skrivet av\n" "Judd Montgomery © 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 #, fuzzy msgid "Incorrect, Reenter KeyRing Password" msgstr "Skriv KeyRing-lösenord" #: ../KeyRing/keyring.c:1699 #, fuzzy msgid "Enter a NEW KeyRing Password" msgstr "Skriv KeyRing-lösenord" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Skriv KeyRing-lösenord" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, c-format msgid "Can't export key %d\n" msgstr "" #. Change Password button #: ../KeyRing/keyring.c:2451 #, fuzzy msgid "" "Change\n" "KeyRing\n" "Password" msgstr "Skriv KeyRing-lösenord" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Avbryt" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Konto" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "namn: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "konto: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "lösenord: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 #, fuzzy msgid "Generate Password" msgstr "Skriv PalmOSlösenord" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Synka minnesanteckningar" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s är skrivet av\n" "Judd Montgomery © 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Klar" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Skriv över filen" #, fuzzy #~ msgid "Field" #~ msgstr "Misslyckades.\n" #~ msgid "Quick View" #~ msgstr "Snabbvisning" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "Kunde inte öppna %s\n" #, fuzzy #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Kunde inte öppna %s\n" #, fuzzy #~ msgid "category name" #~ msgstr "Kategori: " #~ msgid "Close" #~ msgstr "Stäng" #~ msgid "none" #~ msgstr "ingen" #, fuzzy #~ msgid "W" #~ msgstr "On" #, fuzzy #~ msgid "M" #~ msgstr "Må" #~ msgid "This Event has no particular time" #~ msgstr "Denna händelse har ingen speciell tid" #, fuzzy #~ msgid "Start Time" #~ msgstr "Börjar på" #, fuzzy #~ msgid "End Time" #~ msgstr "Tid" #~ msgid "Done" #~ msgstr "Klar" #~ msgid "Add" #~ msgstr "Lägg till" #, fuzzy #~ msgid "User name" #~ msgstr "Användarnamn" #~ msgid "/Help/PayBack program" #~ msgstr "/Hjälp/PayBack program" #~ msgid "Clear" #~ msgstr "Töm" #, fuzzy #~ msgid "Show private records" #~ msgstr "/Visa/Dölj-Visa privata poster" #, fuzzy #~ msgid "Hide private records" #~ msgstr "/Visa/Dölj-Visa privata poster" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Skriv ut alla poster" #, fuzzy #~ msgid "Font" #~ msgstr "Månad" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Kunde inte öppna filen %s\n" #~ msgid "The first day of the week is " #~ msgstr "Första dagen i veckan är " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Seriell port (/dev/ttyS0, /dev/pilot)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Synka memo32 (pedit32)" #~ msgid "One record" #~ msgstr "En post" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr " Tryck på HotSync-knappen nu\n" #, fuzzy #~ msgid "Finished\n" #~ msgstr "Färdig.\n" #, fuzzy #~ msgid "Last Username = [%s]\n" #~ msgstr "Senaste användarnamn-->\"%s\"\n" #, fuzzy #~ msgid "Last UserID = %d\n" #~ msgstr "Senaste användar-ID-->\"%d\"\n" #, fuzzy #~ msgid "Username = [%s]\n" #~ msgstr "Användarnamn-->\"%s\"\n" #, fuzzy #~ msgid "userID = %d\n" #~ msgstr "Användar-ID-->%d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: antal poster = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: antal poster = %d\n" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "Filen verkar inte vara i address.dat-format\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Kreditkort" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Quit" #~ msgstr "Avsluta" #~ msgid "Help" #~ msgstr "Hjälp" #, fuzzy #~ msgid "Directory" #~ msgstr "%s är en katalog" #, fuzzy #~ msgid "Filename" #~ msgstr "namn: " #~ msgid "Sync" #~ msgstr "Synka" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "/Visa/Dölj-Visa privata poster" #~ msgid "Backup" #~ msgstr "Säkerhetskopiera" #~ msgid "Quit!" #~ msgstr "Avsluta!" #, fuzzy #~ msgid "Show Preferences" #~ msgstr "Inställningar" #~ msgid "About Expense" #~ msgstr "Om Expense" #, fuzzy #~ msgid "About KeyRing" #~ msgstr "Om Expense" #, fuzzy #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ "\n" #~ "jpilot [ [-v] || [-h] || [-d] || [-a] || [-A]\n" #~ " -v visar versionsinformationen och avslutar.\n" #~ " -h visar hjälptexten och avslutar.\n" #~ " -d skriver felsökningsinformationen på standard ut.\n" #~ " -p laddar inte insticksmoduler.\n" #~ " -a ignorerar missade alarm sedan senaste gången programmet kördes.\n" #~ " -A ignorera alla alarm, passerade och kommande.\n" #~ " PILOTPORT och PILOTRATE är miljövariabler som bestämmer vilken\n" #~ " port som synkronisering skall ske över och med vilken hastighet.\n" #~ " Om PILOTPORT inte är satt så är standardvärdet /dev/pilot.\n" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): Slut på minne\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "dlp_WriteRecord misslyckades\n" #~ msgid "" #~ "\n" #~ "Unable to open '%s'!\n" #~ msgstr "" #~ "\n" #~ "Kan inte öppna \"%s\"!\n" #, fuzzy #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "Kan inte öppna loggfil\n" #, fuzzy #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "Kan inte öppna jpilot_to_install.tmp-filen\n" #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): Slut på minne\n" #, fuzzy #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Fel vid läsning av %s\n" #, fuzzy #~ msgid "Cannot open " #~ msgstr "Kan inte öppna loggfil\n" #~ msgid "Time:" #~ msgstr "Tid:" #~ msgid "RTh" #~ msgstr "To" #~ msgid "/_Help/About %s" #~ msgstr "/Hjälp/Om %s" #~ msgid "Out of Memory\n" #~ msgstr "Slut på minne\n" #~ msgid "Out of memory 1\n" #~ msgstr "Slut på minne 1\n" #~ msgid "Out of memory 2\n" #~ msgstr "Slut på minne 2\n" #~ msgid "Out of memory 3\n" #~ msgstr "Slut på minne 3\n" #~ msgid "Out of memory 4\n" #~ msgstr "Slut på minne 4\n" #~ msgid "Add or Modify a Record" #~ msgstr "Lägg till eller ändra en post" #~ msgid "Out of memory\n" #~ msgstr "Slut på minne\n" #~ msgid "Go backward 1 year" #~ msgstr "Gå bakåt 1 år" #~ msgid "Go backward 1 month" #~ msgstr "Gå bakåt 1 månad" #~ msgid "Go forward 1 month" #~ msgstr "Gå framåt 1 månad" #~ msgid "Go forward 1 year" #~ msgstr "Gå framåt 1 år" #~ msgid "Daily Schedule" #~ msgstr "Dagligt schema" #~ msgid "Details" #~ msgstr "Detaljer" #~ msgid "out of memory\n" #~ msgstr "slut på minne\n" #~ msgid "Serial Port " #~ msgstr "Serieport " #~ msgid "Hour:" #~ msgstr "Timmar:" #~ msgid "Min:" #~ msgstr "Min:" #~ msgid "Hide this window" #~ msgstr "Dölj detta fönster" jpilot-1.8.2/po/nl.po0000664000175000017500000024471712340261240011346 00000000000000# Dutch translations for jpilot. # This file is distributed under the same license as the jpilot package. # # Bram Schoenmakers , 2003. # Benno Schulenberg , 2008. msgid "" msgstr "" "Project-Id-Version: jpilot-1.6.0-pre2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2008-05-04 12:53+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Onvoldoende geheugen beschikbaar" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Fout bij het lezen van category informatie %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Fout bij lezen van bestand: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "fout" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Kan bestand niet openen: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Kan bestand niet openen: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Bestand lijkt niet de 'address.dat'-indeling te hebben\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Onbekend" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Nee" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Ja" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s is een map" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Fout bij openen van bestand" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Wilt u het bestand %s overschrijven?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Bestand overschrijven?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Fout bij openen van bestand: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Kan adres %d niet exporteren\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Categorie: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privé" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Onbekend exporttype\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Naam/Bedrijf" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Naam/Bedrijf" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Bedrijf/Naam" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Ongeldige categorie\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Voer dit commando uit" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "vergrendelen is mislukt\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Categorie: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Mail" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Bel" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Naamloos-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 items" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d van de %d items" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Naam" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adres" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Diversen" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Notitie" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefoonnummer" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Snelzoeken: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Annuleren" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "De wijzigingen annuleren" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Verwijderen" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Het geselecteerde item verwijderen" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Verwijderen" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Het geselecteerde item terughalen" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopiëren" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Het geselecteerde item kopiëren" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nieuw item" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Een nieuw item toevoegen" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Item toevoegen" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Het nieuwe item toevoegen" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Wijzigingen toepassen" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "De gemaakte wijzigingen doorvoeren" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privé" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Gewijzigd" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Verwijderen" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Laat in\n" "lijst zien" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Herinner me" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "dagen" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Alles" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "minuten" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "uren" #: ../alarms.c:253 msgid "Remind me" msgstr "Herinner me" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Kan bestand niet openen: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Herinnering afspraak" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Gemiste herinnering" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Uitgestelde afspraak" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Afspraak" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Bestand op PC ongeldig?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek() is mislukt - ernstige fout\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "hernoemen is mislukt" #: ../category.c:407 msgid "Move" msgstr "Verplaatsen" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Categorieën bewerken" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "" #: ../category.c:440 msgid "Enter New Category" msgstr "Voer nieuwe categorie in" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "" #: ../category.c:452 msgid "You must select a category to rename" msgstr "U dient een categorie te selecteren om te hernoemen" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Voer nieuwe naam van categorie in" #: ../category.c:476 msgid "You must select a category to delete" msgstr "U dient een categorie te selecteren om te verwijderen" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Er zitten %d items in %s.\n" "Wilt u ze naar %s verplaatsen, of ze verwijderen?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Categorie %s kan niet meer dan één keer gebruikt worden" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Categorie:" #: ../category.c:834 msgid "New" msgstr "Nieuw" #: ../category.c:841 msgid "Rename" msgstr "Hernoemen" #: ../dat.c:512 msgid "unknown type =" msgstr "" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "" #: ../dat.c:636 msgid "File schema is:" msgstr "" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Herhaal elke" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Herhaal op dagen:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Herhaal elke" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Herhaal op dagen:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Herhaal op dagen:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Herhaal op dagen:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Zo" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Ma" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Di" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Wo" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Do" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Vr" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Za" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Eindigt op datum " #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Herhaal op dagen:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "aantal items = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Notitie" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarm" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Herhaal elke" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Dag van de week" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, fuzzy, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Waarschuwing: ToDo beschrijving te lang, inkorten naar %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Fout" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Bestand lijkt niet de 'datebook.dat'-indeling te hebben\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exporteren..." #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exporteer alle agenda-items" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Opslaan als..." #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Bladeren..." #: ../datebook_gui.c:1432 #, fuzzy msgid "Datebook Categories" msgstr "Bewerk categorien" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Geen" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Begint op datum" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Eindigt op datum " #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Zondag" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Maandag" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Dinsdag" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Woensdag" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Donderdag" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Vrijdag" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Zaterdag" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4de" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Vorige" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Dit item herhaalt zich.\n" "Wilt u deze veranderingen\n" "toepassen op het huidige\n" "item of op allemaal?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Huidige" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dag" #: ../datebook_gui.c:2028 msgid "week" msgstr "week" #: ../datebook_gui.c:2029 msgid "month" msgstr "maand" #: ../datebook_gui.c:2030 msgid "year" msgstr "jaar" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, fuzzy, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "U kunt geen afspraak maken die zich elke %d %s(s) herhaalt\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "U kunt geen wekelijkse afspraak maken die zich op geen enkele dag van de " "week herhaalt." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Geen tijd" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Ongeldige afspraak" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "The einddatum van deze afspraak\n" "is voor de begindatum." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Geen datum" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (vandaag)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Week" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Maand" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Categorieën" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Tijd" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Taak" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Datum" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarm" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Datum:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Begint op" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Eindigt op" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Dag" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Jaar" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Deze gebeurtenis herhaalt zich niet" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Frequentie is iedere" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "dag(en)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Eindigt op" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "week/weken" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "maand(en)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Herhaal elke" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Dag van de week" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Datum" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "jaar/jaren" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Telefoonkiezer" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Voorvoegsel 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Voorvoegsel 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Voorvoegsel 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Telefoonnummer:" #: ../dialer.c:319 msgid "Extension" msgstr "Uitbreiding" #: ../dialer.c:341 msgid "Dial Command" msgstr "Kiescommando" #: ../export_gui.c:121 msgid "File Browser" msgstr "Bestandsbrowser" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Selecteer de items die u wilt exporteren" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Gebruik Ctrl en Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importeren..." #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Item was als prive gemarkeerd" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Item was niet als prive gemarkeerd" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Alle items in deze categorie" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Alles importeren" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Overslaan" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Om naar een verborgen map te gaan, type het hieronder en druk op TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Bestandstype importeren" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Bestanden die geinstalleerd zullen worden" #: ../install_gui.c:372 msgid "Install" msgstr "Installeren" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Bestand/_Installeren" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Gebruikersnaam" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Gebruikers ID" #: ../jpilot.c:317 msgid "Print" msgstr "Afdrukken" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Er is geen printondersteuning voor dit onderdeel." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Er is geen import-ondersteuning voor dit onderdeel." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Er is geen export-ondersteuning voor dit onderdeel." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "synchroniseren annuleren" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "synchroniseren annuleren" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Synchroniseer toch" #: ../jpilot.c:697 ../jpilot.c:701 #, fuzzy msgid "Sync Problem" msgstr "Synchroniseer memoblok" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "Gebruikers ID" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Info over %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Bestand" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Bestand/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Bestand/_Zoeken" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Bestand/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Bestand/_Installeren" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Bestand/Importeren" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Bestand/Exporteren" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Bestand/Voorkeuren..." #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Bestand/_Afdrukken" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/Bestand/_Installeren" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Bestand/Handheld herstellen" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Bestand/Afsluiten" #: ../jpilot.c:1121 msgid "/_View" msgstr "/B_eeld" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 #, fuzzy msgid "/View/Hide Private Records" msgstr "/Beeld/Verberg-maak prive-items zichtbaar" #: ../jpilot.c:1123 ../jpilot.c:1373 #, fuzzy msgid "/View/Show Private Records" msgstr "/Beeld/Verberg-maak prive-items zichtbaar" #: ../jpilot.c:1124 ../jpilot.c:1376 #, fuzzy msgid "/View/Mask Private Records" msgstr "/Beeld/Verberg-maak prive-items zichtbaar" #: ../jpilot.c:1125 #, fuzzy msgid "/View/sep1" msgstr "/Bestand/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Beeld/Agenda" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Beeld/Adresboek" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Beeld/Takenlijst" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Beeld/Memo's" #: ../jpilot.c:1130 ../jpilot.c:1261 #, fuzzy msgid "/_Plugins" msgstr "/_Plugins" #: ../jpilot.c:1132 #, fuzzy msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konequeror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Hulp" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "" #: ../jpilot.c:1229 #, fuzzy, c-format msgid "/_Plugins/%s" msgstr "/Plugins/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Help/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "Kon %s niet openen\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Laat prive-items zien" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Prive-items verbergen" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Prive-items bedekken" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synchroniseer uw Palm met uw computer" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Synchroniseer adresboek" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synchroniseer uw Palm met uw computer\n" "en maak dan een backup" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Agenda / Ga naar vandaag" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Adresboek" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Takenlijst" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Memoblok" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 #, fuzzy msgid "Remind me later" msgstr "Herinner me" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Tekenset " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "Adresboek" #: ../jpilot-dump.c:97 #, fuzzy, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "Adresboek" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "Adresboek" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Adresboek" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "Adresboek" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Kan bestand niet openen: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Fout bij openen bestand" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Fout bij openen bestand: next_id()\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Fout" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "Kon %s niet openen\n" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Kon categorie %s niet vanaf hier toevoegen\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Fout bij lezen van %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Fout bij lezen van %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Fout bij openen bestand" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Fout bij lezen van %s\n" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Fout bij lezen van %s\n" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Fout bij lezen van %s\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Kan logbestand niet openen, ik geef op.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Kan logbestand niet openen\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Bestand lijkt niet de 'memopad.dat'-indeling te hebben\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Kan memo %d niet exporteren\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Memoblok" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Maandoverzicht" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "laatst gewijzigd: " #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Palm-wachtwoord" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Incorrect, geef PalmOS-wachtwoord opnieuw" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Geef PalmOS-wachtwoord" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Fout bij lezen van bestand: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Plugin:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Voorkeuren" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Taalregio" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Instellingen" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Agenda" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Takenlijst" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "Memo" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Herinneringen" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Onderdelen" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Korte datumopmaak " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Lange datumopmaak " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Tijdopmaak " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Mijn GTK-kleurenbestand is " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Synchroniseer memoblok" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Aantal te archiveren backups" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Verwijderde items tonen (Standaard: Nee)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Gewijzigde verwijderde items tonen (standaard: Nee)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Laat afspraken zien op kalender" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 #, fuzzy msgid "Use DateBk note tags" msgstr "Gebruik DateBk notitie-opties" #: ../prefs_gui.c:713 #, fuzzy msgid "DateBk support disabled in this build" msgstr "Geen DateBk ondersteuning in deze build" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Mailcommando" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s wordt vervangen door het e-mailadres" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Verberg voltooide taken" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Gebruik Manana database" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 #, fuzzy msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Gebruik Memo32 (pedit32)" #: ../prefs_gui.c:859 #, fuzzy msgid "Use Memos database (Palm OS > 5.2)" msgstr "Gebruik Memo32 (pedit32)" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Gebruik Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Open vensters voor afspraakherinneringen" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Voer dit commando uit" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "WAARSCHUWING: willekeurige shell-commando's invoeren kunnen gevaarlijk " "zijn!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Alarm commando" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t wordt vervangen door de alarmtijd" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d wordt vervangen door de alarmdatum" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D wordt vervangen door de alarmbeschrijving" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N wordt vervangen door de alarmnotitie" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (vervangende omschrijving) is uitgeschakeld in deze build" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (vervangende notitie) is uitgeschakeld in deze build" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Synchroniseer agenda" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Synchroniseer adresboek" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Synchroniseer takenlijst" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Synchroniseer memoblok" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Synchroniseer Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Gebruik J-OS (Niet-Japanse PalmOS: Workpad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Synchronisatie van %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Afdrukopties" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Paperformaat" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Dagprint" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Weekprint" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Maandprint" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "%s item verwijderd." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Alle items in deze categorie" #: ../print_gui.c:272 msgid "Print all records" msgstr "Print alle items" #: ../print_gui.c:294 msgid "One record per page" msgstr "Een item per pagina" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr "Lege lijnen tussen ieder item" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Print commando (bijv. lpr of cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Handheld herstellen" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Bestanden die geinstalleerd zullen worden" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Om uw handheld te herstellen:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. Kies alle applicaties die u wilt terugplaatsen. Standaard: Alles." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Voer de gebruikersnaam en de gebruikers-ID in." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Druk op OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Dit zal alle data op de handheld overschrijven." #: ../search_gui.c:142 msgid "datebook" msgstr "Agenda" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "Adresboek" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "" #: ../search_gui.c:359 msgid "memo" msgstr "Memo" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Memo" #: ../search_gui.c:419 msgid "plugin ?" msgstr "Plugin ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Geen items gevonden" #: ../search_gui.c:598 msgid "Search" msgstr "Zoeken" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Zoeken naar: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Hoofdlettergevoelig" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "openen van vergrendelingsbestand is mislukt\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "vergrendelen is mislukt\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "synchronisatiebestand is vergrendeld door PID %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "ontgrendelen is mislukt\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Kijk uw seriele poort en instellingen na\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Kan persoonlijke map niet lezen\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "" "%s (Creator ID '%s') is up to date, het ophalen daarvan wordt overgeslagen.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Ophalen van '%s' (Creator ID '%s')..." #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Mislukt, het was onmogelijk om het bestand %s aan te maken\n" #: ../sync.c:1100 ../sync.c:1438 #, fuzzy, c-format msgid "Failed, unable to back up database %s\n" msgstr "Mislukt, het was onmogelijk om de database te backuppen\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "%s overgeslagen (Creator ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installeren van %s" #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Kon '%s' niet openen!\n" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Kon '%s' niet openen!\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(Creator-ID is '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(Creator-ID is '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Kan bestand niet openen: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installeren van %s is mislukt" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Mislukt.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s is geïnstalleerd " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Fout bij het ophalen van programma-info %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Fout bij uitpakken van programma-info %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Fout bij lezen van programma-info, blok voor %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Kon categorie %s niet vanaf hier toevoegen\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Te veel categorien op andere kant.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Alle items op de pc in %s worden verplaatst naar %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synchronisatie van %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Een %s item is geschreven." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Het schrijven van een %s item is mislukt." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Het verwijderen van een %s item is mislukt." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "%s item verwijderd." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "%s item verwijderd." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "%s geschreven." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Het schrijven van een %s item is mislukt." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Het verwijderen van een %s item is mislukt." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "%s item verwijderd." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord mislukt\n" "Dit zou veroorzaakt kunnen zijn omdat het item al verwijderd was op de Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr "Synchronisatie van apparaat aan %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr "Druk nu op de HotSync knop\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Laatst gesynchroniseerde gebruikersnaam-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Laatst gesynchroniseerde gebruikers ID-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "Deze gebruikersnaam-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "Deze UserID-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Gebruikersnaam is \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "Gebruikers ID is %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Deze PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Synchronisatie geannuleerd\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Klaar met herstelling handheld.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "U dient misschien te synchroniseren om J-Pilot te updaten.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Snel synchroniseren.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Langzaam synchroniseren.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Bedankt voor het gebruiken van J-Pilot" #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Klaar.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Verlaten met status %s\n" #: ../todo.c:264 #, fuzzy, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Waarschuwing: ToDo beschrijving te lang, inkorten naar %d\n" #: ../todo.c:270 #, fuzzy, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Waarschuwing: ToDo notitie te lang, inkorten naar %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Einddatum" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Bestand lijkt niet de 'todo.dat'-indeling te hebben\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Einddatum" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Einddatum" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioriteit" #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Voltooid" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Geen datum" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Voltooid" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioriteit" #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Einddatum" #: ../utils.c:330 msgid "Today" msgstr "Vandaag" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Kon geen leeg DB bestand vinden.\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " mag niet geïnstalleerd zijn\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Kan map %s niet aanmaken\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s is een map" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Kan geen bestanden in map %s schrijven\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Gewijzigd item bewaren?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Wilt u de wijzigingen voor dit item bewaren?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Nieuw item opslaan?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Wilt u dit nieuwe item opslaan?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 msgid "Error reading file" msgstr "Fout bij lezen van bestand" #: ../utils.c:1973 msgid "Date compiled" msgstr "Compilatiedatum: " #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Gecompileerd met deze opties:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Geinstalleerd in" #: ../utils.c:1978 msgid "pilot-link version" msgstr "pilot-link versie" #: ../utils.c:1982 msgid "USB support" msgstr "USB ondersteuning" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "ja" #: ../utils.c:1984 msgid "Private record support" msgstr "Prive-items ondersteuning" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "nee" #: ../utils.c:1990 msgid "Datebk support" msgstr "Datebk ondersteuning" #: ../utils.c:1996 msgid "Plugin support" msgstr "Plugin ondersteuning" #: ../utils.c:2002 msgid "Manana support" msgstr "Manana ondersteuning" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "NLS ondersteuning (vreemde talen)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "GTK2 ondersteuning" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Categorieën bewerken" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID is 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Ik heb een nieuwe PC ID aangemaakt. Het is %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Vandaag is het %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Vandaag is het %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Fout bij schrijven van volgend ID naar bestand: next_id()\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Fout bij schrijven van volgend ID naar bestand: next_id()\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Weekoverzicht" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australië" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Oostenrijk" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "België" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brazilië" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Denemarken" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finland" #: ../Expense/expense.c:103 msgid "France" msgstr "Frankrijk" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Duitsland" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hongkong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "IJsland" #: ../Expense/expense.c:107 msgid "India" msgstr "India" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonesië" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Ierland" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italië" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japan" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Korea" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Luxemburg" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Maleisië" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mexico" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Nederland" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nieuw-Zeeland" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Noorwegen" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "China" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipijnen" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapore" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Spanje" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Zweden" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Zwitserland" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taiwan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Thailand" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Verenigd Koninkrijk" #: ../Expense/expense.c:128 msgid "United States" msgstr "Verenigde Staten" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Uitgaven" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Vlucht" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Ontbijt" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Bus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Zakendiners" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Autohuur" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Diner" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Ontspanning" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Benzine" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Cadeau" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Ongelukken" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Wasgoed" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limo" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Herberg" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Lunch" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Kilometervergoeding" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parkeren" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Post" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Snack" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metro" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Voorraad" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefoon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Fooien" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Tol" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Trein" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Contant" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Cheque" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Creditcard" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "MasterCard" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Prepaid" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Type:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Hoeveelheid:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Categorie:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Type:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Betaling:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Valuta:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Maand:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Dag:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Jaar:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Hoeveelheid:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Winkel:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Stad:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Incorrect, geef het KeyRing wachtwoord opnieuw" #: ../KeyRing/keyring.c:1699 #, fuzzy msgid "Enter a NEW KeyRing Password" msgstr "Voer KeyRing wachtwoord in" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Voer KeyRing wachtwoord in" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Kan memo %d niet exporteren\n" #. Change Password button #: ../KeyRing/keyring.c:2451 #, fuzzy msgid "" "Change\n" "KeyRing\n" "Password" msgstr "Voer KeyRing wachtwoord in" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Gewijzigd" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Account" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "naam: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "account: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "wachtwoord: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "laatst gewijzigd: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Wachtwoord aanmaken" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Synchroniseer memoblok" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Klaar\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Bestand overschrijven?" #~ msgid "Field" #~ msgstr "Veld" #, fuzzy #~ msgid "email command empty\n" #~ msgstr "Mailcommando" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Kan bestand %s%s niet openen\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Kan bestand %s.alarms niet openen\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "U kunt categorie %s niet bewerken.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "U kunt categorie %s niet verwijderen.\n" #~ msgid "category name" #~ msgstr "categorienaam" #~ msgid "Close" #~ msgstr "Sluiten" #~ msgid "none" #~ msgstr "geen" #~ msgid "W" #~ msgstr "W" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "Deze gebeurtenis heeft geen bepaalde tijd" #~ msgid "Start Time" #~ msgstr "Begintijd" #, fuzzy #~ msgid "End Time" #~ msgstr "Tijd" #~ msgid "Dismiss" #~ msgstr "Annuleren" #~ msgid "Done" #~ msgstr "Klaar" #~ msgid "Add" #~ msgstr "Toevoegen" #~ msgid "Remove" #~ msgstr "Verwijderen" #, fuzzy #~ msgid "User name" #~ msgstr "Gebruikersnaam" #~ msgid "Clear" #~ msgstr "Wissen" #, fuzzy #~ msgid "Show private records" #~ msgstr "Laat prive-items zien" #, fuzzy #~ msgid "Hide private records" #~ msgstr "Prive-items verbergen" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Prive-items bedekken" #~ msgid "Font" #~ msgstr "Lettertype" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Kon bestand %s niet openen\n" #~ msgid "The first day of the week is " #~ msgstr "De eerste dag van de week is " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Seriële poort (/dev/ttyS0, /dev/pilot)" #~ msgid "One record" #~ msgstr "Een item" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "Druk nu op de HotSync knop\n" #~ msgid "Finished\n" #~ msgstr "Klaar\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Laatste gebruikersnaam = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Laatste gebruikers ID = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Gebruikersnaam = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "Gebruikers ID = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: aantal items = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "pc: aantal items = %d\n" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "Bestand lijkt geen address.dat formaat te hebben\n" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Overzicht" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Seriële sneldheid (heeft geen effect op USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Synchroniseer memo32 (pedit32)" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Creditcard" #~ msgid "MasterCard" #~ msgstr "MasterCard" jpilot-1.8.2/po/ru.po0000664000175000017500000030310312340261240011344 00000000000000# Russian translation for J-Pilot. # # Alexander Bokovoy , 2001, 2002. # Andrey Brindeew , 2003. # Eugene Morozov , 2004. # Sergey Klimov , 2010. msgid "" msgstr "" "Project-Id-Version: JPilot\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2010-04-28 18:14+0300\n" "Last-Translator: Sergey Klimov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Ðехватка памÑти" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о категории %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "ошибка" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Файл не в формате address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Различное" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "ОК" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Ðет" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Да" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "ПерезапиÑать файл %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "ПерезапиÑать файл?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Ðе могу ÑкÑпортировать адреÑ\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "КатегориÑ" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Личное" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "ÐеизвеÑтный формат ÑкÑпорта\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 #, fuzzy msgid "vCard" msgstr "ОчиÑтить" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "ИмÑ/КомпаниÑ" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "ИмÑ/КомпаниÑ" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "КомпаниÑ/ИмÑ" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Ð’Ñ‹ не можете редактировать удаленную запиÑÑŒ \n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Выполнить команду\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "День рождениÑ" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Ошибка.\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "Добавить фото" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "КатегориÑ" #: ../address_gui.c:2902 ../address_gui.c:4237 #, fuzzy msgid "Mail" msgstr "БразилиÑ" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Звонить" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-БезÐазваниÑ-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 запиÑей" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d запиÑей из %d" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "ИмÑ" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "ÐдреÑ" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Другое" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Заметка" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Тел." #: ../address_gui.c:3997 #, fuzzy msgid "Quick Find: " msgstr "БыÑтрый поиÑк" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Отменить" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 #, fuzzy msgid "Cancel the modifications" msgstr "Собрано Ñо Ñледующими опциÑми:" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Удалить" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "Удалена запиÑÑŒ %s" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Удалить" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "Удалена запиÑÑŒ %s" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Копировать" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "Добавить запиÑÑŒ" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "Добавить запиÑÑŒ" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Добавить запиÑÑŒ" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "Добавить запиÑÑŒ" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Применить" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 #, fuzzy msgid "Commit the modifications" msgstr "Собрано Ñо Ñледующими опциÑми:" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Личное" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Отменить" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Удалить" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Показать\n" "ÑпиÑком" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Ðапоминание" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Дни" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Ð’Ñе" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Минуты" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "ЧаÑÑ‹" #: ../alarms.c:253 msgid "Remind me" msgstr "Ðапоминание" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Ðапоминание о вÑтречах" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Прошлые вÑтречи" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Пропущенные вÑтречи" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Ð’Ñтреча" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "ÐžÐ¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "Файл на Ñтороне PC поврежден?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ fseek провалилаÑÑŒ - Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "УÑтановку %s не удалоÑÑŒ завершить" #: ../category.c:407 msgid "Move" msgstr "ПеремеÑтить" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Редактирование категорий" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "МакÑимальное чиÑло категорий (16) уже иÑпользовано" #: ../category.c:440 msgid "Enter New Category" msgstr "Добавление новой категории" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Редактирование категорий" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Перед переименованием категорию нужно выбрать" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Введите название новой категории" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Перед удалением категорию необходимо выбрать" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "%d запиÑей в %s.\n" "ПеремеÑтить их в %s или удалить?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "неправильное ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° %s в Ñтроке %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ %s не может иÑпользоватьÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ‹" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "КатегориÑ" #: ../category.c:834 msgid "New" msgstr "Создать" #: ../category.c:841 msgid "Rename" msgstr "Переименовать" #: ../dat.c:512 msgid "unknown type =" msgstr "неизвеÑтный тип =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "полей в Ñтроке != %d, неизвеÑтный формат\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "полей != %d, неизвеÑтный формат\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "ÐеизвеÑтный формат, у файла Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñхема\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Схема файла:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Должно быть: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "чтение файла прекращено\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 msgid "Repeat Never" msgstr "Ðе повторÑть" #: ../datebook_gui.c:240 msgid "Repeat Daily" msgstr "Ежедневно" #: ../datebook_gui.c:241 msgid "Repeat Weekly" msgstr "Еженедельно" #: ../datebook_gui.c:242 msgid "Repeat MonthlyByDay" msgstr "ЕжемеÑÑчно по дню" #: ../datebook_gui.c:243 msgid "Repeat MonthlyByDate" msgstr "ЕжемеÑÑчно по дате" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "ПовторÑть каждую дату" #: ../datebook_gui.c:245 msgid "Repeat YearlyDay" msgstr "Ежегодно" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Ð’Ñ" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Пн" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ð’Ñ‚" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Ср" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Чт" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Пт" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Сб" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 msgid "End Date: " msgstr "Дата окончаниÑ:" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "ЧаÑтота повторениÑ: %d\n" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "День ежемеÑечного Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ %d\n" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "ПовторÑетÑÑ:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "чиÑло запиÑей = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 msgid "Note:" msgstr "Заметка:" #: ../datebook_gui.c:360 ../datebook_gui.c:388 msgid "Alarm:" msgstr "Оповещение:" #: ../datebook_gui.c:361 ../datebook_gui.c:389 msgid "Repeat Type:" msgstr "Тип повторениÑ:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 msgid "Start of Week:" msgstr "Ðачало недели:" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "ОпиÑание ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð´Ð»Ð¸Ð½Ð½ÐµÐµ %d Ñимволов, обрезано до %d Ñимволов\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Ошибка" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Файл не в формате datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "iCalendar" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "ЭкÑпортировать" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "ЭкÑпортировать вÑе запиÑи Datebook" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Сохранить как" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "ПроÑмотреть" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Категории календарÑ" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Ðет" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Ðачало" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Окончание" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "ВоÑкреÑенье" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Понедельник" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Вторник" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Среда" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Четверг" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "ПÑтница" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Субота" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4-й" #: ../datebook_gui.c:1760 msgid "Last" msgstr "ПоÑледний" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "ВопроÑ?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Это повторÑющееÑÑ Ñобытие.\n" "Хотите ли Ð’Ñ‹ иÑпользовать указанные\n" "наÑтройки только Ð´Ð»Ñ Ð­Ð¢ÐžÐ™ даты или\n" "также и Ð´Ð»Ñ Ð’Ð¡Ð•Ð¥ поÑледующих?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Текущее" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "день" #: ../datebook_gui.c:2028 msgid "week" msgstr "неделÑ" #: ../datebook_gui.c:2029 msgid "month" msgstr "меÑÑц" #: ../datebook_gui.c:2030 msgid "year" msgstr "год" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Ðевозможно назначить вÑтречи Ñ Ð¿ÐµÑ€Ð¸Ð¾Ð´Ð¾Ð¼ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ %d %s\n" #: ../datebook_gui.c:2339 msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "Ðевозможно назначить еженедельную вÑтречу без выбора Ð´Ð½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Ðет времени" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²Ñтреча" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Дата ÐžÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñтой вÑтречи\n" "предшеÑтвует дате начала." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Ðет даты" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "(СЕГОДÐЯ)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "ÐеделÑ" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "ПроÑмотреть ÑобытиÑ, запланированные на Ñту неделю" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "МеÑÑц" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "ПроÑмотреть ÑобытиÑ, запланированные на Ñтот меÑÑц" # Make Category button #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Категории" #: ../datebook_gui.c:5021 msgid "Time" msgstr "ВремÑ" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Показать задачи" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Задача" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Цель" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Будильник" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Дата:" #. Start date and time #: ../datebook_gui.c:5280 msgid "Start" msgstr "ÐачинаетÑÑ:" #. End date and time #: ../datebook_gui.c:5297 msgid "End" msgstr "ЗаканчиваетÑÑ:" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "ТÑги DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "День" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Год" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Это Ñобытие не повторитÑÑ" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "ЧаÑтота повторениÑ:" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "день (дней)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "ЗаканчиваетÑÑ:" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Ð½ÐµÐ´ÐµÐ»Ñ (недель)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "меÑÑц(Ñ‹)" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "ПовторÑетÑÑ:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "День недели" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Дата" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "год(Ñ‹)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "Ðомеронабиратель" #: ../dialer.c:230 msgid "Prefix 1" msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Ðомер телефона:" #: ../dialer.c:319 msgid "Extension" msgstr "РаÑширение" #: ../dialer.c:341 msgid "Dial Command" msgstr "Команда дозвона" #: ../export_gui.c:121 msgid "File Browser" msgstr "ПроÑмотр файлов" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Выберите заметки Ð´Ð»Ñ ÑкÑпорта" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "ИÑпользуйте клавиши Ctrl и Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Импортировать" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "ЗапиÑÑŒ была помечена как личнаÑ" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "ЗапиÑÑŒ не была помечена как личнаÑ" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "ЗапиÑÑŒ будет помещена в категорию [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Импортировать вÑе" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "ПропуÑтить" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° в Ñкрытую директорию, наберите ее Ð¸Ð¼Ñ Ð½Ð¸Ð¶Ðµ и нажмите TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Тип импортируемого файла" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Файлы Ð´Ð»Ñ ÑƒÑтановки" #: ../install_gui.c:372 msgid "Install" msgstr "УÑтановить" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "УÑтановить ID пользователÑ" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" "БольшинÑтво людей выбирают Ð¸Ð¼Ñ Ð¸Ð»Ð¸ ник, но мы Ñоветуем поÑтавить вам " "'kracked dude', чтобы проще было ломать программы" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "ID должен быть Ñлучайным чиÑлом." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID пользователÑ" #: ../jpilot.c:317 msgid "Print" msgstr "Печать" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Этот кондуит не поддерживает печать." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Этот кондуит не поддерживает импорт." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Этот кондуит не поддерживает ÑкÑпорт." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Отменить Ñинхронизацию" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Отменить Ñинхронизацию" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Синхронизировать в любом Ñлучае" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Проблема Ñинхронизации" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr "ID пользователÑ:" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "О %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Файл" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Файл/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Файл/_ПоиÑк" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Файл/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Файл/УÑтановить" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Файл/Импорт" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Файл/ЭкÑпорт" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Файл/ÐаÑтройки" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Файл/Печать" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Файл/УÑтановить HotSync ID" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Файл/ВоÑÑтановить Palm" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Файл/Выход" #: ../jpilot.c:1121 msgid "/_View" msgstr "/ПроÑмотр" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/ПроÑмотр/СпрÑтать личные запиÑи" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/ПроÑмотр/Показать личные запиÑи" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/ПроÑмотр/ЗамаÑкировать личные запиÑи" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/ПроÑмотр/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/ПроÑмотр/Календарь" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/ПроÑмотр/ÐдреÑа" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/ПроÑмотр/Задачи" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/ПроÑмотр/Заметки" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_ДополнениÑ" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Сеть" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Сеть/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Сеть/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Сеть/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Сеть/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Сеть/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Сеть/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "Сеть/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Сеть/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Сеть/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/Справка" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Справка/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_ДополнениÑ/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/Справка/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Показать личные запиÑи" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "СпрÑтать-показать личные запиÑи" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Скрыть личные запиÑи" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Синхронизировать Palm Ñ Ð´ÐµÑктоп" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Синхронизировать адреÑную книгу" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Синхронизировать вначале Palm и деÑктоп,\n" "а затем выполнить архивирование" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Календарь/СегоднÑ" #: ../jpilot.c:2144 msgid "Address Book" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "СпиÑок задач" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Заметки" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 #, fuzzy msgid "Remind me later" msgstr "Ðапоминание" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Кодировка " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot-dump.c:97 #, fuzzy, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, fuzzy, c-format msgid " -b sync, and then do a backup\n" msgstr "" "Синхронизировать вначале Palm и деÑктоп,\n" "а затем выполнить архивирование" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Ошибка" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "Ðевозможно добавить категорию %s удалённо.\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "Ðевозможно открыть файл протокола.\n" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Файл не в формате memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Заметки" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "ВеÑÑŒ меÑÑц" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Пароль Palm" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Ðеверно, введите пароль PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Введите пароль PalmOS" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "_to_install файл\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, fuzzy, c-format msgid "Plugin:[%s]\n" msgstr "/_ДополнениÑ/%s" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "ПредпочтениÑ" #: ../prefs_gui.c:483 msgid "Locale" msgstr "ЛокализациÑ" #: ../prefs_gui.c:485 msgid "Settings" msgstr "УÑтановки" #: ../prefs_gui.c:487 #, fuzzy msgid "Datebook" msgstr "календарь" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "СпиÑок задач" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "заметки" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Будильники" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Кондуиты" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Краткий формат даты " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Полный формат даты " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Формат времени " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Файл цветовых наÑтроек GTK+ " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Проблема Ñинхронизации" #. Serial Rate #: ../prefs_gui.c:605 #, fuzzy msgid "Serial Rate" msgstr "СкороÑть порта " #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "КоличеÑтво архивных копий" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Показывать удаленные запиÑи (по умолчанию -- ÐЕТ)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Показывать модифицированные удаленные запиÑи (по умолчанию -- ÐЕТ)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "ПодÑвечивать дни Ñо вÑтречами в календаре" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "ИÑпользовать Ñ‚Ñги DateBk Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Ð”Ð°Ð½Ð½Ð°Ñ Ñборка не поддерживает DateBk" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 #, fuzzy msgid "Mail Command" msgstr "Команда дозвона" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%t будет заменено временем напоминаниÑ" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Ðе показывать завершенные задачи" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Скрыть задачи Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… еще не пришло времÑ" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "СохранÑть дату Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "ИÑпользовать базу данных Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "ИÑпользовать Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Открывать окна напоминаний Ð´Ð»Ñ Ð²Ñтреч" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Выполнить команду" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "Ð’ÐИМÐÐИЕ: выполнение произвольных команд ÑиÑтемной оболочки может быть " "опаÑным!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Команда Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t будет заменено временем напоминаниÑ" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d будет заменено датой напоминаниÑ" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D заменено опиÑанием напоминаниÑ" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N заменено примечанием к напоминанию" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¾Ð¿Ð¸ÑаниÑ) запрещен в Ñтой Ñборке" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%N (Ð¼Ð°ÐºÑ€Ð¾Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¸) запрещен в Ñтой Ñборке" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Синхронизировать календарь" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Синхронизировать адреÑную книгу" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Синхронизировать ÑпиÑок задач" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Синхронизировать заметки" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Синхронизировать Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "ИÑпользовать J-OS (Ðе ÑпонÑкую PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Опции печати" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Размер бумаги" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Дневной отчет" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Еженедельный отчет" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "МеÑÑчный отчет" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Удалена запиÑÑŒ %s" #: ../print_gui.c:268 msgid "All records in this category" msgstr "Ð’Ñе запиÑи в Ñтой категории" #: ../print_gui.c:272 msgid "Print all records" msgstr "Ðапечатать вÑе запиÑи" #: ../print_gui.c:294 msgid "One record per page" msgstr "Одна запиÑÑŒ на Ñтраницу" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " ПуÑтые Ñтроки между запиÑÑми" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Команда Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (например, lpr или cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "ВоÑÑтановить наладонник" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Файлы Ð´Ð»Ñ ÑƒÑтановки" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Чтобы воÑÑтановить Ваш наладоник:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "1. Выберите приложениÑ, подлежащие воÑÑтановлению (по умолчанию вÑе)." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пользовательÑкий ID." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Ðажмите кнопку OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Ð’Ñе данные на наладоннике будут перезапиÑаны." #: ../search_gui.c:142 msgid "datebook" msgstr "календарь" #: ../search_gui.c:144 #, fuzzy msgid "calendar" msgstr "ОчиÑтить" #: ../search_gui.c:231 msgid "address" msgstr "адреÑ" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 #, fuzzy msgid "todo" msgstr "Синхронизировать ÑпиÑок задач" #: ../search_gui.c:359 msgid "memo" msgstr "заметки" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "заметки" #: ../search_gui.c:419 msgid "plugin ?" msgstr "дополнение ?" #: ../search_gui.c:499 msgid "No records found" msgstr "ЗапиÑей не найдено" #: ../search_gui.c:598 msgid "Search" msgstr "ПоиÑк" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Ðайти: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "С учетом региÑтра" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "Ðевозможно открыть файл протокола\n" #: ../sync.c:131 #, fuzzy msgid "lock failed\n" msgstr "Ошибка.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Проверьте наÑтройки Ñерийного порта\n" #: ../sync.c:677 #, fuzzy msgid "Unable to read home dir\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID автора '%s') не изменÑлаÑÑŒ, пропуÑкаетÑÑ.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Получение '%s' (ID автора '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Ðе удалоÑÑŒ Ñоздать файл %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Ðе удалоÑÑŒ выполнить архивацию базы данных %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "ОК\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "ПропуÑк '%s' (ID автора '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "УÑтановка %s " #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Ðевозможно открыть '%s': %s!\n" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Ðевозможно Ñинхронизировать '%s': файл поврежден?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ID автора '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ID автора '%s')..." #: ../sync.c:1530 #, fuzzy, c-format msgid "(SDcard dir %s)... " msgstr "(ID автора '%s')..." #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "УÑтановку %s не удалоÑÑŒ завершить" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Ошибка.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "УÑтановлен %s" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ app info %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Ошибка раÑпаковки app info %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ° appinfo Ð´Ð»Ñ %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Ðевозможно добавить категорию %s удалённо.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Слишком много категорий на удалённом.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Ð’Ñе запиÑи на деÑктопе в %s перемещены на %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "ЗапиÑÑŒ %s Ñохранена." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Ðе удалоÑÑŒ напечатать запиÑÑŒ %s." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Ðе удалоÑÑŒ удалить запиÑÑŒ %s." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "ЗапиÑÑŒ %s удалена." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "ЗапиÑÑŒ %s удалена." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "ЗапиÑÑŒ %s перепиÑана." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Ðе удалоÑÑŒ перепиÑать запиÑÑŒ %s." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Ðе удалоÑÑŒ удалить запиÑÑŒ %s." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Удалена запиÑÑŒ %s" #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord завершилаÑÑŒ неудачно\n" "Причина, возможно, в том, что запиÑÑŒ уже была удалена Ñ Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ ÑƒÑтройÑтвом %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Ðажмите кнопку HotSync\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "ПоÑледний пользователь-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "ID поÑледнего пользователÑ-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr "ID пользователÑ-->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "ПоÑледний PC, иÑпользовавшийÑÑ Ð´Ð»Ñ Ñинхронизации = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Этот PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð°\n" # Do not translate this text #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "ВоÑÑтановление компьютера завершено\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Проведите Ñинхронизацию Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ в J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Выполнение быÑтрой Ñинхронизации.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Выполнение медленной Ñинхронизации.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "СпаÑибо Вам за иÑпользование J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Завершено\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, fuzzy, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr " Ðажмите кнопку HotSync\n" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Выход Ñо ÑтатуÑом %s\n" #: ../todo.c:264 #, fuzzy, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "ОпиÑание ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð´Ð»Ð¸Ð½Ð½ÐµÐµ %d Ñимволов, обрезано до %d Ñимволов\n" #: ../todo.c:270 #, fuzzy, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Заметка ToDo Ñлишком длиннаÑ, обрезана до %d Ñимволов\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Дата иÑполнениÑ" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Файл не в формате todo.dat\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Дата иÑполнениÑ" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Дата иÑполнениÑ" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Приоритет: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Завершена" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Ðет даты" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Завершена" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Приоритет: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Дата завершениÑ:" #: ../utils.c:330 msgid "Today" msgstr "СегоднÑ" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Ðевозможно найти заготовку пуÑтого файла базы данных %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " не был корректно уÑтановлен.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, fuzzy, c-format msgid "Can't create directory %s\n" msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ñть категорию %s.\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ñть категорию %s.\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Сохранить измененную запиÑÑŒ?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñтой запиÑи?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Сохранить новую запиÑÑŒ?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Сохранить Ñту новую запиÑÑŒ?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "беÑконечный цикл, выходим\n" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../utils.c:1973 msgid "Date compiled" msgstr "Дата Ñкомпилирована" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Собрано Ñо Ñледующими опциÑми:" #: ../utils.c:1976 msgid "Installed Path" msgstr "УÑтановленный Путь" #: ../utils.c:1978 msgid "pilot-link version" msgstr "верÑÐ¸Ñ pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Поддержка USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "да" #: ../utils.c:1984 msgid "Private record support" msgstr "Поддержка личных запиÑей" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "нет" #: ../utils.c:1990 msgid "Datebk support" msgstr "Поддержка Datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Поддержка дополнений" #: ../utils.c:2002 msgid "Manana support" msgstr "Поддерка Macana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Поддержка NSL (иноÑтранные Ñзыки)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Поддержка GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Редактирование категорий" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID равен 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Сгенерирован новый PC ID, равный %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Ð’ÑÑ Ð½ÐµÐ´ÐµÐ»Ñ" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "ÐвÑтралиÑ" #: ../Expense/expense.c:96 msgid "Austria" msgstr "ÐвÑтриÑ" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "БельгиÑ" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "БразилиÑ" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Канада" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "ДаниÑ" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "ЕС (Евро)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "ФинлÑндиÑ" #: ../Expense/expense.c:103 msgid "France" msgstr "ФранциÑ" #: ../Expense/expense.c:104 msgid "Germany" msgstr "ГерманиÑ" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Гонконг" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "ИÑландиÑ" #: ../Expense/expense.c:107 msgid "India" msgstr "ИндиÑ" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "ИндонезиÑ" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "ИрландиÑ" #: ../Expense/expense.c:110 msgid "Italy" msgstr "ИталиÑ" #: ../Expense/expense.c:111 msgid "Japan" msgstr "ЯпониÑ" #: ../Expense/expense.c:112 msgid "Korea" msgstr "КореÑ" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "ЛюкÑембург" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "МалайзиÑ" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "МекÑика" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Ðидерланды" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ" #: ../Expense/expense.c:118 msgid "Norway" msgstr "ÐорвегиÑ" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "КитайÑÐºÐ°Ñ ÐÐ°Ñ€Ð¾Ð´Ð½Ð°Ñ Ð ÐµÑпублика" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Филиппины" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Сингапур" #: ../Expense/expense.c:122 msgid "Spain" msgstr "ИÑпаниÑ" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "ШвециÑ" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "ШвейцариÑ" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Тайвань" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Таиланд" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Соединённое КоролевÑтво" #: ../Expense/expense.c:128 msgid "United States" msgstr "СШÐ" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Затраты" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Ðвиабилеты" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Завтрак" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "ÐвтобуÑ" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Обеды по работе" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Ðренда машины" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Ужины" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Развлечение" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "ФакÑ" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Топливо" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Подарки" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Отель" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "ÐеожиданноÑти" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "ПрачечнаÑ" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limo" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Квартира" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Обеды" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "РаÑÑтоÑние" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "СтоÑнка" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Почтовые раÑходы" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "ЗакуÑки" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Метро" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "РаÑходники" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "ТакÑи" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Телефон" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Ðа чай" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Пошлина" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Поезд" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Ðаличными" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Чеком" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "ÐšÑ€ÐµÐ´Ð¸Ñ‚Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Предоплачено" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Тип: " #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Сумма: " #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "КатегориÑ" #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Тип: " #. Payment Menu #: ../Expense/expense.c:1718 #, fuzzy msgid "Payment:" msgstr "Платеж: " #. Currency Menu #: ../Expense/expense.c:1726 #, fuzzy msgid "Currency:" msgstr "Валюта: " #: ../Expense/expense.c:1746 msgid "Month:" msgstr "МеÑÑц:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "День:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Год:" #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Сумма: " #. Vendor Entry #: ../Expense/expense.c:1797 #, fuzzy msgid "Vendor:" msgstr "ПоÑтавщик: " #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Город: " #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "ПоÑетители" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s %s был напиÑан\n" "Джаддом Монтгомери (c) 1999-2002\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Ðеверно, введите пароль Ð´Ð»Ñ KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Введите ÐОВЫЙ пароль Ð´Ð»Ñ KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Введите пароль Ð´Ð»Ñ KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, fuzzy, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" "%s %s был напиÑан\n" "Джаддом Монтгомери (c) 1999-2002\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Ðе могу ÑкÑпортировать адреÑ\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Сменить\n" "пароль\n" "KeyRing" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Отменить" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "имÑ: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "пароль: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Сгенерировать пароль" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Синхронизировать заметки" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s %s был напиÑан\n" "Джаддом Монтгомери (c) 1999-2002\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Завершить" #, fuzzy #~ msgid "Overwrite" #~ msgstr "ПерезапиÑать файл" #, fuzzy #~ msgid "W" #~ msgstr "Ср" #, fuzzy #~ msgid "M" #~ msgstr "Пн" #, fuzzy #~ msgid "Serial Port" #~ msgstr "СкороÑть порта " #, fuzzy #~ msgid "Field" #~ msgstr "ФинлÑндиÑ" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "БыÑтрый проÑмотр" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #, fuzzy #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ %s\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Редактировать категорию %s нельзÑ.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ñть категорию %s.\n" #~ msgid "category name" #~ msgstr "название категории" #~ msgid "debug" #~ msgstr "debug" #~ msgid "Close" #~ msgstr "Закрыть" #~ msgid "none" #~ msgstr "нет" #~ msgid "This Event has no particular time" #~ msgstr "Ð”Ð»Ñ Ñтого ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð½Ðµ назначено времÑ" #~ msgid "Start Time" #~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°" #~ msgid "End Time" #~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ" #~ msgid "Dismiss" #~ msgstr "Отмена" #~ msgid "Done" #~ msgstr "Завершить" #~ msgid "Add" #~ msgstr "Добавить" #, fuzzy #~ msgid "User name" #~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" #~ msgid "/Help/PayBack program" #~ msgstr "/Справка/Программа PayBack" #, fuzzy #~ msgid "Show private records" #~ msgstr "Показать личные запиÑи" #, fuzzy #~ msgid "Hide private records" #~ msgstr "СпрÑтать-показать личные запиÑи" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Скрыть личные запиÑи" #~ msgid "Font" #~ msgstr "Шрифт" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "Ðевозможно открыть файл %s\n" #~ msgid "The first day of the week is " #~ msgstr "Первый день недели " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Порт (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "СкороÑть обмена по поÑледовательному порту (не влиÑет на USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Синхронизировать заметки memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Одна запиÑÑŒ" #~ msgid "Finished\n" #~ msgstr "Завершено\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "ПоÑледний пользователь = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "ID поÑледнего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: количеÑтво запиÑей = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: количеÑтво запиÑей = %d\n" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "Файл не в формате address.dat\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "Кредитной картой" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Quit" #~ msgstr "Выход" #~ msgid "Help" #~ msgstr "Справка" #, fuzzy #~ msgid "Directory" #~ msgstr "%s ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹" #, fuzzy #~ msgid "Filename" #~ msgstr "Переименовать" #~ msgid "Sync" #~ msgstr "СинхронизациÑ" #, fuzzy #~ msgid "Cancel the modifications ESC" #~ msgstr "Собрано Ñо Ñледующими опциÑми:" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "СпрÑтать-показать личные запиÑи" #~ msgid "Backup" #~ msgstr "Ðрхив" #~ msgid "Quit!" #~ msgstr "Выход!" #~ msgid "Show Preferences" #~ msgstr "Показывать наÑтройки" #~ msgid "About Expense" #~ msgstr "О Затратах" #, fuzzy #~ msgid "About KeyRing" #~ msgstr "О Затратах" #~ msgid "\n" #~ msgstr "\n" #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ " [ [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v показать верÑию программы, параметры Ñборки и выйти.\n" #~ " -h показать Ñту Ñправку и выйти.\n" #~ " -d выводить отладочную информацию на конÑоль.\n" #~ " -p не загружать дополнениÑ.\n" #~ " -a игнорировать Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¾ ÑобытиÑÑ…, пропущенных Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑледнего " #~ "запуÑка программы.\n" #~ " -A игнорировать вÑе напоминаниÑ, о прошедших и будущих ÑобытиÑÑ….\n" #~ " -i Ñвернуть jpilot в иконку Ñразу поÑле запуÑка.\n" #~ " Переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PILOTPORT и PILOTRATE иÑпользуютÑÑ Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ\n" #~ " порта и ÑкороÑти Ñинхронизации.\n" #~ " При отÑутÑтвии PILOTPORT по умолчанию будет иÑпользован /dev/pilot.\n" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): нехватка памÑти\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "Процедура dlp_WriteRecord провалилаÑÑŒ\n" #~ msgid "" #~ "\n" #~ "Unable to open '%s'!\n" #~ msgstr "" #~ "\n" #~ "Ðевозможно открыть '%s'!\n" #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "Ðевозможно открыть файл %s_to_install\n" #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "Ðевозможно открыть файл %s_to_install.tmp\n" #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): нехватка памÑти\n" #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s : %s %d\n" #~ msgid "Warning ToDo description too long, truncating to %d\n" #~ msgstr "ОпиÑание ToDo Ñлишком длинное, обрезано до %d Ñимволов\n" #~ msgid "/Web/Netscape/%s" #~ msgstr "/Сеть/Netscape/%s" #~ msgid "/Web/Mozilla/%s" #~ msgstr "/Сеть/Mozilla/%s" #~ msgid "/Web/Galeon/%s" #~ msgstr "/Сеть/Galeon/%s" #~ msgid "/Web/Opera/%s" #~ msgstr "/Сеть/Opera/%s" #~ msgid "/Web/GnomeUrl/%s" #~ msgstr "/Сеть/GnomeUrl/%s" #~ msgid "/Web/Lynx/%s" #~ msgstr "/Сеть/Lynx/%s" #~ msgid "/Web/Links/%s" #~ msgstr "Сеть/Links/%s" #~ msgid "/Web/W3M/%s" #~ msgstr "/Сеть/W3M/%s" #~ msgid "/Web/Konqueror/%s" #~ msgstr "/Сеть/Konqueror/%s" #~ msgid "Holland" #~ msgstr "ГолландиÑ" #~ msgid "U.K." #~ msgstr "ВеликобританиÑ" #~ msgid "U.S.A." #~ msgstr "СШÐ" #~ msgid "Open jpilot.org in existing" #~ msgstr "Открыть jpilot.org в текущем окне" #~ msgid "Open jpilot.org in new window" #~ msgstr "Открыть jpilot.org в новом окне" #~ msgid "Open jpilot.org in new Netscape" #~ msgstr "Открыть jpilot.org в новом Netscape" #~ msgid "Open jpilot.org in new tab" #~ msgstr "Открыть jpilot.org в новой вкладке" #~ msgid "Open jpilot.org in new Mozilla" #~ msgstr "Открыть jpilot.org в новой Mozilla" #~ msgid "Open jpilot.org in new Galeon" #~ msgstr "Открыть jpilot.org в новом Galeon" #~ msgid "Open jpilot.org in new Opera" #~ msgstr "Открыть jpilot.org в новой Opera" #~ msgid "Gnome URL Handler for jpilot.org" #~ msgstr "Обработчик ÑÑылок Gnome Ð´Ð»Ñ jpilot.org" #~ msgid "Lynx jpilot.org" #~ msgstr "Lynx jpilot.org" #~ msgid "Links jpilot.org" #~ msgstr "Links jpilot.org" #~ msgid "w3m jpilot.org" #~ msgstr "w3m jpilot.org" #~ msgid "Konqueror jpilot.org" #~ msgstr "Konqueror jpilot.org" #~ msgid "Cannot open " #~ msgstr "Ðевозможно открыть " #~ msgid "RTh" #~ msgstr "Чт" #~ msgid "Time:" #~ msgstr "ВремÑ:" #~ msgid "Last Syned UserID-->\"%d\"\n" #~ msgstr "ID поÑледнего пользователÑ-->\"%d\"\n" jpilot-1.8.2/po/it.po0000664000175000017500000025616712340261240011353 00000000000000# Italian messages for jpilot. # This file is distributed under the same license as the jpilot package. # # Michele Mazzucchi , 2001, 2002. # Marco Colombo , 2005, 2008. msgid "" msgstr "" "Project-Id-Version: jpilot 1.6.0-pre2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2008-05-12 12:13+0100\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Memoria esaurita" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Errore durante la lettura delle informazioni categoria %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Errore durante la lettura del file: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "errore" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Questa voce è eliminata.\n" "Occorre ripristinarla o copiarla per apportare cambiamenti.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Impossibile aprire il file: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Impossibile aprire il file: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Il file non ha il formato di un file address.dat.\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "Non archiviato" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "OK" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "No" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Sì" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s è una directory" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Errore durante l'apertura del file" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Sovrascrivere il file %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Sovrascrivere il file?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Errore durante l'apertura del file: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Impossibile esportare l'indirizzo %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Categoria: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privato" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "Email" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Tipo di esportazione sconosciuto\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Nome/Società" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Nome/Società" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Società/Nome" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Impossibile modificare una voce eliminata\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Categoria non valida\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "esecuzione comando = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "lock non riuscito\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Categoria: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "Posta" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "Componi" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" # FIXME #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "- Senza nome -" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 voci" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d di %d voci" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Nome" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Indirizzo" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Altro" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Note" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefono" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Ricerca rapida: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Annulla" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "Annulla le modifiche" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Elimina" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Elimina la voce selezionata" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Ripristina" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "Ripristina la voce selezionata" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Copia" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Copia la voce selezionata" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nuova voce" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "Aggiungi una nuova voce" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Aggiungi voce" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "Aggiungi una nuova voce" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Applica" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Applica le modifiche" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privato" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Cambiato" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Rimuovi" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Mostra\n" "in lista" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "Ricordami" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Giorni" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Tutto" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minuti" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Ore" #: ../alarms.c:253 msgid "Remind me" msgstr "Ricordami" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Impossibile aprire il file: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Reminder appuntamento" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Appuntamento passato" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Appuntamento rimandato" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Impegno" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "Allarme J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "File sul computer danneggiato?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "posizionamento non riuscito - errore fatale\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "rinominazione non riuscita" #: ../category.c:407 msgid "Move" msgstr "Sposta" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Modifica categorie" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Il massimo numero di categorie (16) è già usato" #: ../category.c:440 msgid "Enter New Category" msgstr "Inserire nuova categoria" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Modifica categorie" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Selezionare una categoria da rinominare" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Inserire il nuovo nome di categoria" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Selezionare una categoria da eliminare" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "Ci sono %d voci in %s.\n" "Si vuole spostarle in %s o eliminarle?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "file di stato %s non valido, riga %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "La categoria %s non può essere usata più di una volta" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Categoria:" #: ../category.c:834 msgid "New" msgstr "Nuovo" #: ../category.c:841 msgid "Rename" msgstr "Rinomina" #: ../dat.c:512 msgid "unknown type =" msgstr "tipo sconosciuto =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "numero di campi per riga != %d, formato sconosciuto\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "numero di campi != %d, formato sconosciuto\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Formato sconosciuto, il file usa uno schema scorretto\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Lo schema del file è:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "Dovrebbe essere: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d Voce %d, campo %d: Tipo non valido. Atteso %d, trovato %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "lettura del file completata\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "repeatType (%d) sconosciuto trovato in DatebookDB\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Ripeti ogni:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Ripeti i giorni:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Ripeti ogni:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Ripeti i giorni:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Ripeti i giorni:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Ripeti i giorni:" # These days of the week are put in the buttons above the calendar and # the little buttons in the repeat weekly window. # They should be one letter if possible. The English ones get truncated to # one letter. #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Do" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Lu" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Ma" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Me" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Gi" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Ve" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Sa" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Termina il" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Ripeti i giorni:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "Numero di voci: %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Note" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Sveglia" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Ripeti ogni:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Giorno della settimana" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "" "Testo di descrizione dell'appuntamento > %d caratteri, troncato a %d " "caratteri\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Errore" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Questo file non ha il formato di un file datebook.dat.\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Tipo di esportazione sconosciuto" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Esporta" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Esporta tutte le voci dell'agenda" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Salva come" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Sfoglia" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Categorie agenda" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Nessuna" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Comincia il" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Termina il" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Domenica" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Lunedì" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Martedì" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Mercoledì" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Giovedì" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Venerdì" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Sabato" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4." #: ../datebook_gui.c:1760 msgid "Last" msgstr "Ultimo" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Questo appuntamento si può\n" "ripetere o nella quarta\n" "%s del mese, o nell'ultimo\n" "%s del mese.\n" "Quale si preferisce?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Domanda?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Questo è un impegno periodico\n" "Applicare queste modifiche\n" "unicamente a QUESTO impegno\n" "o a TUTTE le occorrenze di\n" "questo impegno?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Corrente" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "giorno" #: ../datebook_gui.c:2028 msgid "week" msgstr "settimana" #: ../datebook_gui.c:2029 msgid "month" msgstr "mese" #: ../datebook_gui.c:2030 msgid "year" msgstr "anno" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Impossibile avere un impegno che si ripete ogni %d %s\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Impossibile avere un impegno settimanale che non si ripete nessun giorno " "della settimana." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Nessun orario" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Appuntamento non valido" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "La data di fine di questo appuntamento\n" "è prima della data di inizio." #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Nessuna data" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Errore in DateBookDB advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (OGGI)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Settimana" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Visualizza appuntamenti per settimana" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Mese" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Visualizza appuntamenti per mese" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Categorie" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Orario" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Mostra impegni" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Impegno" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Scadenza" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Sveglia" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Data:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Inizio" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Termina il" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Giorno" # msgid "WeekView" # msgstr "Woche" # msgid "MonthView" # msgstr "Monat" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Anno" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Questo impegno non si ripeterà" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "La frequenza è ogni" # NdT: minuscolo è corretto, appare nel mezzo di una frase #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "giorno/i" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Termina il" # NdT: minuscolo è corretto, appare nel mezzo di una frase #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "settimana/e" # NdT: minuscolo è corretto, appare nel mezzo di una frase #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "mese/i" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Ripeti ogni:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Giorno della settimana" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Data" # NdT: minuscolo è corretto, appare nel mezzo di una frase #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "anno/i" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Prefisso 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Prefisso 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Prefisso 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Numero di telefono:" #: ../dialer.c:319 msgid "Extension" msgstr "Estensione" #: ../dialer.c:341 msgid "Dial Command" msgstr "" #: ../export_gui.c:121 msgid "File Browser" msgstr "Sfoglia" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Scegliere le voci da esportare" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Usare i tasti Ctrl e Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importa" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "La voce è stata impostata come privata" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "La voce non è stata impostata vome privata" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "La categoria prima dell'importazione era: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Le voci verranno messe nella categoria [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importa tutto" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "Salta" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Per entrare in una directory nascosta, inserirne il nome e premere TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Importa tipo file" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "File da installare" #: ../install_gui.c:372 msgid "Install" msgstr "Installa" #: ../install_user.c:116 ../install_user.c:218 msgid "Install User" msgstr "Installa utente" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Nome utente" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "L'ID dovrebbe essere un numero a caso." #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID utente" #: ../jpilot.c:317 msgid "Print" msgstr "Stampa" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Non c'è supporto per la stampa dei dati di questo canale." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Non c'è supporto per importare dati da questo canale." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Non c'è supporto per esportare dati da questo canale." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Annulla sincronizzazione" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "Annulla sincronizzazione" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Sincronizza comunque" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "problema di sincronizzazione" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Utente: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Comando sconosciuto dal processo di sincronizzazione\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Informazioni su %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_File" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/File/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/File/_Trova" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/File/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/File/_Installa" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/File/I_mporta" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/File/_Esporta" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/File/Preferenze" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/File/_Stampa" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/File/_Installa utente" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/File/Ripristina handheld" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/File/_Esci" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Visualizza" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Visualizza/Nascondi le voci private" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Visualizza/Mosta le voci private" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Visualizza/Maschera le voci private" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Visualizza/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Visualizza/Agenda" # NdT: tradotto con rubrica perché dovrebbe essere Address book #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Visualizza/Rubrica" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Visualizza/Impegni" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Visualizza/Appunti" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Plugin" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_Web" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/Web/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/Web/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/Web/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/Web/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/Web/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/Web/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/Web/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/Web/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/Web/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/A_iuto" #: ../jpilot.c:1163 msgid "/Help/About J-Pilot" msgstr "/Aiuto/Informazioni su J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Plugin/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/A_iuto/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "Plugin non caricati.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Impossibile aprire la pipe\n" # FIXME UPSTREAM: should be Ctrl+... #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Mostra le voci private Ctrl+Z" # FIXME UPSTREAM: should be Ctrl+... #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Nasconde le voci private Ctrl+Z" # FIXME UPSTREAM: should be Ctrl+... #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Maschera le voci private Ctrl+Z" # FIXME UPSTREAM: should be Ctrl+... #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Sincronizza il palmare con il computer Ctrl+Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Sincronizzare la rubrica" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Sincronizza il palmare con il computer\n" "e poi fa il backup" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Agenda/Vai a oggi" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Rubrica" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Impegni" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Appunti" #: ../jpilot.c:2174 msgid "Do it now" msgstr "Fallo adesso" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "Ricordami" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Non ricordarmi più!" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Set di caratteri " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Scegli una codifica UTF-8" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v mostra la versione ed esce.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h mostra l'aiuto ed esce.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -f mostra l'aiuto per i codici di formato.\n" #: ../jpilot-dump.c:96 #, c-format msgid " -D dump DateBook\n" msgstr "" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, c-format msgid " -N dump appts for today in DateBook\n" msgstr "" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Rubrica" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, c-format msgid " -M dump Memos\n" msgstr "" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Impossibile aprire il file: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v mostra la versione e le opzioni di compilazione ed esce.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d mostra informazioni di debug sullo standard output.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr " -p salta il caricamento dei plugin.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Errore durante l'apertura del file: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Errore durante l'apertura del file: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Errore" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "La variabile d'ambiente HOME è troppo lunga per jpilot\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Questa voce è già stata eliminata.\n" "Verrà eliminata dal Palm alla prossima sincronizzazione.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Impossibile trovare la voce da eliminare\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Versione %d dell'intestazione sconosciuta\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Errore durante l'apertura del file: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Errore durante la lettura del file: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Errore durante l'apertura del file: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Errore durante la lettura di %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Impossibile aprire il file log, rinuncio.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Impossibile aprire il file di log\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Testo appunto > 65535, troncato\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Importato apputno %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Questo file non ha il formato di un file memopad.dat.\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Impossibile esportare appunto %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Appunti" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Visualizzazione mensile" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 #, fuzzy msgid "last char truncated" msgstr "ultima modifica: " #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Password del palmare" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Sbagliata, reinserire la password del palmare" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Inserire la password del palmare" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Errore durante la lettura del file: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "loop infinito" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "Durante la lettura di %s%s riga 1: [%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Versione sbagliata\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Controllare Preferenze->Canali\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "Apertura non riuscita del plugin [%s]\n" " errore [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " il plugin non è valido: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Plugin:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Questo plugin è la versione (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "È troppo vecchio per funzionare con questa versione di J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Preferenze" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Localizzazione" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Impostazioni" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Agenda" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Impegni" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Appunti" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Sveglie" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Canali" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Data in formato breve " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Data in formato completo " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Formato orario " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Il file personale dei colori GTK è " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "problema di sincronizzazione" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Numero di backup da conservare" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Mostrare le voci eliminate (predefinito: NO)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Mostrare le voci modificate (predefinito: NO)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" "Chiedere conferma per l'installazione di file (J-Pilot -> PDA) (predefinito: " "SÃŒ)" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Evidenzia i giorni impegnati nel calendario" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Il supporto all'agenda è disabilitato in questo programma" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Comando di posta" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s è sostituito dall'indirizzo email" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Nascondere gli impegni completati" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Nascondere gli impegni non in scadenza" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Memorizzare la data di completamento" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Usare il database Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Usare il numero predefinito di giorni di scadenza" #: ../prefs_gui.c:856 #, fuzzy msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "Usare Memo32 (pedit32)" #: ../prefs_gui.c:859 #, fuzzy msgid "Use Memos database (Palm OS > 5.2)" msgstr "Usare Memo32 (pedit32)" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Usare Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Aprire finestre di avviso per ricordare gli impegni" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Eseguire questo comando" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "ATTENZIONE: l'esecuzione di comandi shell arbitrari può essere pericolosa!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Comando per la sveglia" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t è sostituito con l'ora della sveglia" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d è sostituito con la data della sveglia" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D è sostituito con la descrizione della sveglia" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N è sostituito con la nota della sveglia" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (sostituzione della descrizione) è disabilitato in questo programma" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%D (sostituzione della nota) è disabilitato in questo programma" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Sincronizzare l'agenda" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Sincronizzare la rubrica" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Sincronizzare gli impegni" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Sincronizzare gli appunti" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Sincronizzare Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Sincronizza %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Opzioni stampa" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Impostazioni pagina" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Stampa quotidiana" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Stampa settimanale" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Stampa mensile" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "Eliminata una voce %s." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Tutte le voci in questa categoria" #: ../print_gui.c:272 msgid "Print all records" msgstr "Stampa tutte le voci" #: ../print_gui.c:294 msgid "One record per page" msgstr "Una voce per pagina" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Spazio vuoto dopo ogni record" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Comando di stampa (es. lpr o cat > file.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Ripristina handheld" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "File da installare" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. Scegliere tutte le applicazioni da ripristinare. Predefinito: tutte." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Inserire il nome utente e l'ID utente." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. Premere OK." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "Questa azione sovrascriverà i dati attualmente sul palmare." #: ../search_gui.c:142 msgid "datebook" msgstr "agenda" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "indirizzo" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "impegno" #: ../search_gui.c:359 msgid "memo" msgstr "appunto" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "appunto" #: ../search_gui.c:419 msgid "plugin ?" msgstr "plugin?" #: ../search_gui.c:499 msgid "No records found" msgstr "Nessuna voce trovata" #: ../search_gui.c:598 msgid "Search" msgstr "Trova" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Cerca: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Maiuscole/minuscole" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "apertura del file di lock non riuscita\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "lock non riuscito\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "unlock non riuscito\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "la sincronizzazione è bloccata dal pid %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Controllare la porta seriale e le impostazioni\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Impossibile leggere la directory home\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID autore '%s') è aggiornato: aggiornam. saltato.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Scaricamento di '%s' (ID autore '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Non riuscito, impossibile creare il file %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Non riuscito, impossibile fare il backup del database %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "OK\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Saltando %s (ID autore '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Installando %s" #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Impossibile aprire il file: '%s': '%s'!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Impossibile sincronizzare il file: '%s': file danneggiato?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ID autore '%s') ..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ID autore '%s') ..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Impossibile aprire il file: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Installazione di %s fallita" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Fallita.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "%s installato" #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Impossibile aggiungere la categoria %s sul remoto.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "Troppe categorie sul remoto.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "Tutte le voci sul desktop in %s saranno spostate in %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Sincronizzazione di %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Scritta una voce %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Scrittura una voce %s fallita." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Eliminazione di una voce %s fallita." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Eliminata una voce %s." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Eliminata una voce %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Scritta una voce %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Scrittura di una voce %s non riuscita." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Eliminazione di una voce %s non riuscita." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "Eliminata una voce %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord non riuscita\n" "Una possibile causa è la voce è già stata eliminata sul palmare\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Installazione delle informazioni dell'utente completata.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Sincronizzazione sul dispositivo %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " Premere il tasto Hot-Sync ora\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Ultimo nome utente sinc. -->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Ultimo ID utente sinc. -->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Questo nome utente -->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Questo ID utente -->%d\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Il nome utente è \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "L'ID utente è %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "Ultima Sync = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Questo PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Sincronizzazione annullata\n" #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Ripristino handheld completato.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "È possibile che sia necessario aggiornare J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Esegui sincronizzaz. rapida.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Eseguendo sincronizzaz. lenta.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Grazie per aver scelto J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Completato.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "Uscita con stato %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "" "Testo di descrizione dell'impegno > %d caratteri, troncato a %d caratteri\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Testo dell'impegno > %d caratteri, troncato a %d caratteri\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Data di scadenza" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Il file non sembra avere un formato todo.dat.\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Impossibile esportare impegno %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Data di scadenza" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Data di scadenza" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Priorità: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Completato" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Priorità fuori dall'intervallo\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Nessuna data" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Completato" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Priorità: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Data di scadenza:" #: ../utils.c:330 msgid "Today" msgstr "Oggi" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Impossibile trovare un file DB vuoto %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " potrebbe non essere installato.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Impossibile creare la directory %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s è una directory" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Impossibili scrivere file nella directory %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Salvare le voci modificate?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Salvare le modifiche a questa voce?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Salvare la nuova voce?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Salvare questa nuova voce?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "ciclo infinito, interrotto\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr " -p salta il caricamento dei plugin.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr " -a ignora gli allarmi mancati dall'ultima esecuzione del programma.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignora tutti gli allarmi passati e futuri.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" " Le variabili d'ambiente PILOTPORT e PILOTRATE sono usate per specificare\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " su quale porta sincronizzarsi e a quale velocità.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Se PILOTPORT non è impostato, è predefinito a /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Errore durante la lettura del file" #: ../utils.c:1973 msgid "Date compiled" msgstr "Data di compilazione" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "Compilato con queste opzioni:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Percorso di installazione" #: ../utils.c:1978 msgid "pilot-link version" msgstr "" #: ../utils.c:1982 msgid "USB support" msgstr "Supporto USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "sì" #: ../utils.c:1984 msgid "Private record support" msgstr "Supporto voci private" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "no" #: ../utils.c:1990 msgid "Datebk support" msgstr "Supporto agenda" #: ../utils.c:1996 msgid "Plugin support" msgstr "Supporto plugin" #: ../utils.c:2002 msgid "Manana support" msgstr "Supporto Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Supporto NLS (lingue straniere)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Supporto GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Impossibile leggere la variabile d'ambiente HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "La variabile d'ambiente HOME è troppo lunga per jpilot\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Modifica categorie" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "Il PC ID è 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Ho generato un nuovo PC ID: è %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Oggi è %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Oggi è %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Errore durante la lettura del file: %s\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Errore durante la lettura del file: %s\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Visualizzaz. settimanale" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Australia" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Austria" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belgio" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brasile" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Canada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Danimarca" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finlandia" #: ../Expense/expense.c:103 msgid "France" msgstr "Francia" #: ../Expense/expense.c:104 msgid "Germany" msgstr "Germania" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Islanda" #: ../Expense/expense.c:107 msgid "India" msgstr "India" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonesia" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irlanda" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Italia" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Giappone" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Corea" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Lussemburgo" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malesia" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Messico" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Paesi Bassi" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nuova Zelanda" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norvegia" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "Cina" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filippine" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapore" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Spagna" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Svezia" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Svizzera" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Taiwan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Tailandia" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Regno Unito" #: ../Expense/expense.c:128 msgid "United States" msgstr "Stati Uniti" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Spese" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "AirFare" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "Colazione" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Autobus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "Pranzi di lavoro" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Affitto auto" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "Cena" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Divertimento" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Gas" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Regali" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "Varie" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Lavanderia" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limo" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Alloggio" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "Pranzo" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Chilometraggio" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parcheggio" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "Posta" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Snack" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metrò" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Supplementi" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefono" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Mance" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Pedaggi" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Treno" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Spese: tipo di spesa sconosciuto\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Spese: tipo di pagamento sconosciuto\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Contante" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Assegni" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Carta di credito" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "Prepagati" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Tipo:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Ammontare: " #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Categoria:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Tipo:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Pagamento:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "Valuta:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Mese: " #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Giorno:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Anno" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Ammontare: " #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "Città:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "Partecipanti" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size troppo piccolo\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Sbagliata, reinserire la password per KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Inserire la nuova password per KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Inserire la password per KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: file %s non trovato.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Impossibile esportare appunto %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "Cambia la\n" "password\n" "del KeyRing" #. Clist #: ../KeyRing/keyring.c:2564 msgid "Changed" msgstr "Cambiato" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "Conto" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "nome: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "conto: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "password: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "ultima modifica: " #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Genera la password" #: ../SyncTime/synctime.c:59 msgid "SyncTime" msgstr "" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 msgid "Done\n" msgstr "Fatto\n" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Sovrascrivi file" #~ msgid "Field" #~ msgstr "Campo" #, fuzzy #~ msgid "email command empty\n" #~ msgstr "Comando di posta" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Impossibile aprire il file %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Impossibile aprire il file %s.alarms\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Impossibile modificare la categoria %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Impossibile eliminare la categoria %s.\n" # NdT: è l'intestazione di una colonna, sta meglio con la maiuscola #~ msgid "category name" #~ msgstr "Nome categoria" #~ msgid "debug" #~ msgstr "debug" #~ msgid "Close" #~ msgstr "Chiudi" #~ msgid "none" #~ msgstr "nessuno" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "repeatType sconosciuto trovato in DatebookDB\n" #~ msgid "W" #~ msgstr "S" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "Questo evento non ha un orario particolare" #~ msgid "Start Time" #~ msgstr "Ora di inizio" #~ msgid "End Time" #~ msgstr "Ora di fine" #~ msgid "Dismiss" #~ msgstr "Chiudi" #~ msgid "Done" #~ msgstr "Fatto" #~ msgid "Add" #~ msgstr "Aggiungi" #~ msgid "Remove" #~ msgstr "Rimuovi" #~ msgid "User name" #~ msgstr "Nome utente" #~ msgid " -v = version\n" #~ msgstr " -v = versione\n" #~ msgid " -h = help\n" #~ msgstr " -h = aiuto\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = esegue in modalità di debug\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = non carica i plugin.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr "" #~ " -b = sincronizza e poi fa un backup, altrimenti sincronizza solamente.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Specificazione della geometria non valida: \"%s\"\n" #~ msgid "/Help/PayBack program" #~ msgstr "/Aiuto/Payback program" #~ msgid "Font Selection Dialog" #~ msgstr "Finestra di selezione carattere" #~ msgid "Clear" #~ msgstr "Pulisci" #~ msgid "Show private records" #~ msgstr "Mostra le voci private" #~ msgid "Hide private records" #~ msgstr "Nascondi le voci private" #~ msgid "Mask private records" #~ msgstr "Maschera le voci private" #~ msgid "Font" #~ msgstr "Carattere" #~ msgid "Go to the menu \"" #~ msgstr "Vai al menù \"" #~ msgid "\" and change the \"" #~ msgstr "\" e cambia il \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "The first day of the week is " #~ msgstr "Il primo giorno della settimana è " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Porta seriale (/dev/ttyS0, /dev/pilot)" #~ msgid "One record" #~ msgstr "Una voce" #~ msgid "Finished\n" #~ msgstr "Completato\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Ultimo nome utente = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Ultimo ID utente = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Nome utente = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID utente = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "Palm: numero di voci: %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "Disco: numero di voci: %d\n" #, fuzzy #~ msgid " -i makes program iconify itself upon launch.\n" #~ msgstr " -i avvia jpilot iconificato\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s non sembra essere una directory.\n" #~ "Deve esserlo.\n" #~ msgid "Expense: Unknown category\n" #~ msgstr "Spese: categoria sconosciuta\n" #~ msgid "Your HOME environment variable is too long(>1024)\n" #~ msgstr "La variabile d'ambiente HOME è troppo lunga (> 1024)\n" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Preferiti" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Velocità seriale (non riguarda USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Sincronizzare Memo32 (pedit32)" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "CartaCredito" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Quit" #~ msgstr "Esci" #~ msgid "Help" #~ msgstr "Aiuto" #~ msgid "Directory" #~ msgstr "Directory" #~ msgid "Filename" #~ msgstr "Nome del file" #~ msgid "Answer: " #~ msgstr "Risposta: " #~ msgid "Sync" #~ msgstr "Sincronizza" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p non carica i plugin.\n" jpilot-1.8.2/po/ca.po0000664000175000017500000024456612340261240011322 00000000000000# Catalan translations for jpilot. # # Hervè LETOQUEUX , 2000. # Leopold Palomo , 2001, 200 msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.2\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2002-01-24 14:20GMT\n" "Last-Translator: Leopold Palomo \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.5\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "Error llegint" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, fuzzy, c-format msgid "Error reading file: %s\n" msgstr "Error llegint" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "error" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, fuzzy, c-format msgid "Unable to open file: %s\n" msgstr "No s'ha pogut obrir %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "No s'ha pogut obrir %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "L'arxiu no sembla tenir el format d'adreces\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "No registrat" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "D'acord" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "No" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Sí" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s és un directori" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Error obrint arxiu" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Voleu sobreescriure l'arxiu %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "Sobreescriure arxiu?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, fuzzy, c-format msgid "Error opening file: %s" msgstr "Error obrint arxiu" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Categoria" #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Privat" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Nom/Empresa" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Nom/Empresa" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Empresa/Nom" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, fuzzy, c-format msgid "executing command = [%s]\n" msgstr "Executa aquesta ordre" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "Ha fallat.\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Categoria" #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "Cap registre" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d de %d registres" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Nom" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adreces" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Altres" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Cap" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telèfon" #: ../address_gui.c:3997 #, fuzzy msgid "Quick Find: " msgstr "Cerca ràpida" #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "Anul·lar" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Suprimir" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 #, fuzzy msgid "Delete the selected record" msgstr "%s registres esborrats." #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete" msgstr "Suprimir" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 #, fuzzy msgid "Undelete the selected record" msgstr "%s registres esborrats." #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Copiar" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 #, fuzzy msgid "Copy the selected record" msgstr "Afegir registre" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nou registre" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 #, fuzzy msgid "Add a new record" msgstr "Afegir registre" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "Afegir registre" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 #, fuzzy msgid "Add the new record" msgstr "Afegir registre" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Aplicar Canvis" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Privat" #: ../address_gui.c:4169 #, fuzzy msgid "Change Photo" msgstr "Anul·lar" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Suprimir" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Mostra\n" "a la llista" #: ../address_gui.c:4347 msgid "Reminder" msgstr "" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dies" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "Tot" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minuts" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Hores" #: ../alarms.c:253 msgid "Remind me" msgstr "" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, fuzzy, c-format msgid "Unable to open file: %s%s\n" msgstr "No s'ha pogut obrir %s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "Cita" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Cita" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Cita" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Cita" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "El fitxer del PC està corrupte?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek ha fallat - error greu\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 #, fuzzy msgid "rename failed" msgstr "Instal·lació de %s ha fallat" #: ../category.c:407 #, fuzzy msgid "Move" msgstr "Dll" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "" #: ../category.c:440 msgid "Enter New Category" msgstr "" #: ../category.c:451 ../category.c:475 msgid "Edit Categories Error" msgstr "" #: ../category.c:452 msgid "You must select a category to rename" msgstr "" #: ../category.c:461 msgid "Enter New Category Name" msgstr "" #: ../category.c:476 msgid "You must select a category to delete" msgstr "" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Categoria" #: ../category.c:834 msgid "New" msgstr "" #: ../category.c:841 #, fuzzy msgid "Rename" msgstr "Nom" #: ../dat.c:512 msgid "unknown type =" msgstr "" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "" #: ../dat.c:636 msgid "File schema is:" msgstr "" #: ../dat.c:640 msgid "It should be:" msgstr "" #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Repetir tots els" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Repetir els dies:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Repetir tots els" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Repetir els dies:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Repetir els dies:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Repetir els dies:" #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Di" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Dll" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Dt" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "Dc" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "Dj" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Dv" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "Ds" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "Finalitza a la data" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Repetir els dies:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "número de registres = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Cap" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "Alarma" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Repetir tots els" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Dia de la setmana" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 #, fuzzy msgid "Error" msgstr "error" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "L'arxiu no sembla tenir el format d'agenda (datebook.dat)\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportar" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exportar tots els registres de l'agenda" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Desar com" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Explorador" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Cap" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "Comença a la data" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "Finalitza a la data" #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "Diumenge" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "Dilluns" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Dimarts" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "Dimecres" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "Dijous" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Divendres" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Dissabte" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4t/4a" #: ../datebook_gui.c:1760 msgid "Last" msgstr "Últim" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Aquest és un esdeveniment que es repeteix. \n" "Voleu aplicar aquests canvis \n" "únicament a AQUEST esdeveniment \n" "o a TOTS els esdeveniments \n" "com aquest ?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Actual" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "dia" #: ../datebook_gui.c:2028 msgid "week" msgstr "setmana" #: ../datebook_gui.c:2029 msgid "month" msgstr "mes" #: ../datebook_gui.c:2030 msgid "year" msgstr "any" #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "No pot tenir una cita que es repeteix cada %d %s(s)\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "No pot tenir una cita repetida setmanalment que no es repeteix a cap dia de " "la setmana .\n" #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Sense temps" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 #, fuzzy msgid "Invalid Appointment" msgstr "Cita" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "Sense data" #: ../datebook_gui.c:3491 #, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr "" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Setmana" #: ../datebook_gui.c:4940 msgid "View appointments by week Ctrl+W" msgstr "" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "Mes" #: ../datebook_gui.c:4952 msgid "View appointments by month Ctrl+M" msgstr "" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Cats" #: ../datebook_gui.c:5021 msgid "Time" msgstr "Temps" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Tasca" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Venciment" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "Alarma" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 #, fuzzy msgid "Date:" msgstr "Data" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "Comença en" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Acaba en" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Dia" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Any" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Aquest esdeveniment no es repetirà" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "La freqüència és cada " #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Di(a)(es)" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Acaba en" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Setman(a)(es)" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "Mes" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Repetir tots els" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Dia de la setmana" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Data" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Any(s)" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "" #: ../dialer.c:230 msgid "Prefix 1" msgstr "" #: ../dialer.c:252 msgid "Prefix 2" msgstr "" #: ../dialer.c:274 msgid "Prefix 3" msgstr "" #: ../dialer.c:289 msgid "Phone number:" msgstr "" #: ../dialer.c:319 msgid "Extension" msgstr "" #: ../dialer.c:341 #, fuzzy msgid "Dial Command" msgstr "Ordre d'alarma" #: ../export_gui.c:121 msgid "File Browser" msgstr "Explorador" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importar" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "" #: ../import_gui.c:336 #, fuzzy, c-format msgid "Record will be put in category [%s]" msgstr "Tots els registres d'aquesta categoria" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importar" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Per anar dins un directori ocult escriure'l i prémer TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Fitxers per instal.lar" #: ../install_gui.c:372 msgid "Install" msgstr "Instal·lar" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Arxiu/_Instal·lar" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Nom" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "Identificador d'usuari-->%d" #: ../jpilot.c:317 msgid "Print" msgstr "Imprimir" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "No hi ha suport d'impressió per aquest conduit." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "No hi ha suport d'impressió per aquest conducte." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "No hi ha suport d'exportació per aquest conducte." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "Anul·lar" #. ------------------------------------------- #: ../jpilot.c:673 msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #. ------------------------------------------- #: ../jpilot.c:680 msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" #: ../jpilot.c:688 #, fuzzy msgid "Cancel Sync" msgstr "Anul·lar" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "Sincronitzar de totes maneres?" #: ../jpilot.c:697 ../jpilot.c:701 #, fuzzy msgid "Sync Problem" msgstr "Sincronitzar memo" #: ../jpilot.c:932 ../jpilot.c:1787 #, fuzzy msgid " User: " msgstr "Identificador d'usuari-->%d" #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "Quant a %s" #: ../jpilot.c:1107 #, fuzzy msgid "/_File" msgstr "/Arxiu" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Arxiu/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Arxiu/_Cercar" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Arxiu/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Arxiu/_Instal·lar" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Arxiu/_Importar" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Arxiu/_Exportar" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Arxiu/Preferències" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Arxiu/_Imprimir" #: ../jpilot.c:1117 #, fuzzy msgid "/File/Install User" msgstr "/Arxiu/_Instal·lar" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Arxiu/Restaurar " #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Arxiu/Eixir" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Visualitzar" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 #, fuzzy msgid "/View/Hide Private Records" msgstr "/Visualitzar/Oculta-Mostra registres privats" #: ../jpilot.c:1123 ../jpilot.c:1373 #, fuzzy msgid "/View/Show Private Records" msgstr "/Visualitzar/Oculta-Mostra registres privats" #: ../jpilot.c:1124 ../jpilot.c:1376 #, fuzzy msgid "/View/Mask Private Records" msgstr "/Visualitzar/Oculta-Mostra registres privats" #: ../jpilot.c:1125 #, fuzzy msgid "/View/sep1" msgstr "/Arxiu/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Visualitzar/Agenda" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Visualitzar/Adreces" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Visualitzar/Tasques" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Visualitzar/Memos" #: ../jpilot.c:1130 ../jpilot.c:1261 #, fuzzy msgid "/_Plugins" msgstr "/Connectors" #: ../jpilot.c:1132 #, fuzzy msgid "/_Web" msgstr "Dc" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_Ajuda" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/Ajuda/J-Pilot" #: ../jpilot.c:1229 #, fuzzy, c-format msgid "/_Plugins/%s" msgstr "/Connectors/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_Ajuda/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "" #: ../jpilot.c:1732 ../jpilot.c:1740 #, fuzzy msgid "Unable to open pipe\n" msgstr "No s'ha pogut obrir %s\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "/Visualitzar/Oculta-Mostra registres privats" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "/Visualitzar/Oculta-Mostra registres privats" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Imprimir tots els registres" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Sincronitzar el seu palm amb l'escriptori" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Sincronitzar la llibreta d'adreces" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Sincronitzar el seu palm amb l'escriptori\n" "i després fer una còpia de seguretat" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Agenda/Aneu a avui" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Llibreta d'adreces" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Llista de coses a fer" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Memo Pad" #: ../jpilot.c:2174 msgid "Do it now" msgstr "" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "" #: ../jpilot.c:2187 #, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Joc de caràcters" #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "" #: ../jpilot-dump.c:92 #, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" #: ../jpilot-dump.c:93 #, c-format msgid " -v display version and exit\n" msgstr "" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, c-format msgid " -h display help text\n" msgstr "" #: ../jpilot-dump.c:95 #, c-format msgid " -f display help for format codes\n" msgstr "" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr "Llibreta d'adreces" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr "Llibreta d'adreces" #: ../jpilot-dump.c:99 #, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr "" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr "Llibreta d'adreces" #: ../jpilot-dump.c:101 #, c-format msgid " -T dump ToDo list as CSV\n" msgstr "" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr "Llibreta d'adreces" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "No s'ha pogut obrir %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" #: ../jpilot-sync.c:65 ../utils.c:1871 #, c-format msgid " -v display version and compile options\n" msgstr "" #: ../jpilot-sync.c:67 ../utils.c:1873 #, c-format msgid " -d display debug info to stdout\n" msgstr "" #: ../jpilot-sync.c:68 #, c-format msgid " -P skip loading plugins\n" msgstr "" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr "" #: ../jpilot-sync.c:71 #, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Error obrint arxiu" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Error obrint arxiu" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "error" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 #, fuzzy msgid "Unable to open PC records file\n" msgstr "No s'ha pogut obrir %s\n" #: ../libplugin.c:77 ../utils.c:1069 #, fuzzy msgid "Couldn't find record to delete\n" msgstr "No puc trobar un fitxer buit DB. \n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "" #: ../libplugin.c:180 #, fuzzy, c-format msgid "%s:%d Error opening file: %s\n" msgstr "Error llegint" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, fuzzy, c-format msgid "%s:%d Error reading file: %s\n" msgstr "Error llegint" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, fuzzy, c-format msgid "Error opening file: %s\n" msgstr "Error obrint arxiu" #: ../libplugin.c:524 #, fuzzy, c-format msgid "Error reading %s 5\n" msgstr "Error llegint" #: ../libplugin.c:799 #, fuzzy msgid "Error reading PC file 1\n" msgstr "Error llegint" #: ../libplugin.c:815 #, fuzzy msgid "Error reading PC file 2\n" msgstr "Error llegint" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "" #: ../log.c:98 #, fuzzy, c-format msgid "Unable to open log file, giving up.\n" msgstr "No puc obrir el fitxer de registre, renuncio. \n" #: ../log.c:108 #, fuzzy, c-format msgid "Unable to open log file\n" msgstr "No s'ha pogut obrir %s\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "L'arxiu no sembla tenir el format de notes (memopad.dat)\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Memo Pad" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Vista mensual" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Contrasenya del palm" #: ../password.c:306 #, fuzzy msgid "Incorrect, Reenter PalmOS Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../pidfile.c:69 #, fuzzy msgid "removing stale pidfile\n" msgstr "No puc obrir l'arxiu jpilot_to_install.\n" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Error llegint" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr "" #: ../plugins.c:297 #, fuzzy, c-format msgid "Plugin:[%s]\n" msgstr "/Connectors/%s" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Preferències" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Local" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Paràmetres" #: ../prefs_gui.c:487 #, fuzzy msgid "Datebook" msgstr "Sincronitzar l'agenda" #: ../prefs_gui.c:491 #, fuzzy msgid "ToDo" msgstr "Llista de coses a fer" #: ../prefs_gui.c:493 #, fuzzy msgid "Memo" msgstr "Sincronitzar memo" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "Alarma" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Conductes" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Format de data curta" #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Format de data llarg " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Format d'hora " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "El meu fitxer de colors GTK és." #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Sincronitzar memo" #. Serial Rate #: ../prefs_gui.c:605 #, fuzzy msgid "Serial Rate" msgstr "Velocitat port sèrie " #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "Nombre de copies de seguretat per arxivar " #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Mostrar els registres suprimits (per defecte: NO)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Mostrar els registres modificats (per defecte: NO)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" #. Show tooltips check box #: ../prefs_gui.c:656 msgid "Show popup tooltips (default YES) (requires restart)" msgstr "" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Ressaltar els dies amb cites" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "" #. Show use DateBk check box #: ../prefs_gui.c:710 #, fuzzy msgid "Use DateBk note tags" msgstr "Utilitzar marcadors DateBk (no recomanat)" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 #, fuzzy msgid "Mail Command" msgstr "Ordre d'alarma" #: ../prefs_gui.c:771 #, fuzzy, c-format msgid "%s is replaced by the e-mail address" msgstr "%t és substituït per l'hora de l'alarma" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Amagar les tasques acabades" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Utilitzar Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Obrir la finestra d'alarmes per el recordatori de cites" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Executa aquesta ordre" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "" "ADVERTÈNCIA: executar ordres arbitràries de l'intèrpret d'ordres pot ser " "perillós!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Ordre d'alarma" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t és substituït per l'hora de l'alarma" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d és substituït per la data de l'alarma" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D és substituït per lla descripció de l'alarma" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N és substituït per la nota de l'alarma" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Sincronitzar l'agenda" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Sincronitzar la llibreta d'adreces" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Sincronitzat tasques a fer" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Sincronitzar memo" #. Show sync Manana check box #: ../prefs_gui.c:1001 #, fuzzy msgid "Sync Manana" msgstr "Sincronitzar de totes maneres?" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, fuzzy, c-format msgid "Sync %s (%s)" msgstr "Ometent %s\n" #: ../print_gui.c:183 msgid "Print Options" msgstr "Opcions d'impressió" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Tamany del paper" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Impressió dia a dia" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Impressió setmanal" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "Impressió mensual" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "%s registres esborrats." #: ../print_gui.c:268 msgid "All records in this category" msgstr "Tots els registres d'aquesta categoria" #: ../print_gui.c:272 msgid "Print all records" msgstr "Imprimir tots els registres" #: ../print_gui.c:294 msgid "One record per page" msgstr "Un registre per pàgina" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Línia en blanc entre cada registre" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Ordre d'impressió (ex. lpr, o cat > fitxer.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "/Arxiu/Restaurar " #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Fitxers per instal.lar" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "" #: ../restore_gui.c:247 msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "" #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr ".Prémer el botó HotSync ara" #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "" #: ../search_gui.c:142 #, fuzzy msgid "datebook" msgstr "Sincronitzar l'agenda" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 #, fuzzy msgid "address" msgstr "Adreces" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 #, fuzzy msgid "todo" msgstr "Sincronitzat tasques a fer" #: ../search_gui.c:359 #, fuzzy msgid "memo" msgstr "Sincronitzar memo" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "Sincronitzar memo" #: ../search_gui.c:419 #, fuzzy msgid "plugin ?" msgstr "/Connectors" #: ../search_gui.c:499 msgid "No records found" msgstr "Cap registre trobat" #: ../search_gui.c:598 msgid "Search" msgstr "Cercar" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Cercar a: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "Sensible a caixa" #: ../sync.c:118 #, fuzzy msgid "open lock file failed\n" msgstr "No puc obrir el fitxer de registre. \n" #: ../sync.c:131 #, fuzzy msgid "lock failed\n" msgstr "Ha fallat.\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "" #: ../sync.c:175 msgid "unlock failed\n" msgstr "" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Comprovi el seu port sèrie i els paràmetres\n" #: ../sync.c:677 #, fuzzy msgid "Unable to read home dir\n" msgstr "No s'ha pogut obrir %s\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (Creador d'ID '%s') està actualitzat, s'omet.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Anant a '%s' (Creador d'ID '%s')..." #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "D'acord\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "Ometent %s (Creator ID '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Instal·lant %s" #: ../sync.c:1504 ../sync.c:1540 #, fuzzy, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "No es pot obrir '%s'!\n" #: ../sync.c:1508 #, fuzzy, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "No es pot obrir '%s'!\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(Creació d'identificació és '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(Creació d'identificació és '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, fuzzy, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "No s'ha pogut obrir %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Instal·lació de %s ha fallat" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Ha fallat.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "S' ha instal·lat %s" #: ../sync.c:1736 #, fuzzy, c-format msgid "%s:%d Error getting app info %s\n" msgstr "Error llegint" #: ../sync.c:1742 ../sync.c:1772 #, fuzzy, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "Error llegint" #: ../sync.c:1763 #, fuzzy, c-format msgid "Error reading appinfo block for %s\n" msgstr "Error llegint" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Ometent %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Escrits %s registres." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Escrivint %s registre/s va fallà." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Esborrant %s registre/s va fallà." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "Esborrats %s registres." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "Esborrats %s registres." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Escrits %s registres." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Escrivint %s registres va fallà." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Esborrant %s registre/s va fallà." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "%s registres esborrats." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord ha fallat\n" "Això pot ser perquè el registre ja estava esborrat en el Palm\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr "Sincronitzant amb el dispositiu %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr ".Prémer el botó HotSync ara\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, fuzzy, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Últim nom d'usuari-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, fuzzy, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Últim identificador d'usuari-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, fuzzy, c-format msgid " This Username-->\"%s\"\n" msgstr "Nom d'usuari-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, fuzzy, c-format msgid " This User ID-->%d\n" msgstr "Identificador d'usuari-->%d\n" #: ../sync.c:3204 #, fuzzy, c-format msgid "Username is \"%s\"\n" msgstr "Nom d'usuari-->\"%s\"\n" #: ../sync.c:3205 #, fuzzy, c-format msgid "User ID is %d\n" msgstr "Identificador d'usuari-->%d" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "Última sincronització amb el PC= %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Aquest PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Sincronització anul·lada\n" #: ../sync.c:3255 #, fuzzy msgid "Finished restoring handheld.\n" msgstr "/Arxiu/Restaurar " #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "Caldria sincronitzar per actualitzar J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Fent una sincronització ràpida.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Fent una sincronització lenta.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "Gràcies per fer servir J-Pilot." #: ../sync.c:3411 ../sync.c:3479 #, fuzzy msgid "Finished.\n" msgstr "Ha fallat.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Data de venciment" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "L'arxiu no sembla tenir el format de tasques pendents (todo.dat)\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Data de venciment" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Data de venciment" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Prioritat: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "Acabat" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "Sense data" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "Acabat" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Prioritat: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Data de venciment:" #: ../utils.c:330 msgid "Today" msgstr "Avui" #: ../utils.c:575 #, fuzzy, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "No puc trobar un fitxer buit DB. \n" #: ../utils.c:578 #, fuzzy msgid " may not be installed.\n" msgstr "jpilot no pot ser instal·lat?.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s és un directori" #: ../utils.c:628 #, c-format msgid "Unable to get write permission for directory %s\n" msgstr "" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Desar registres canviats?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Voleu desar els canvis d'aquest registre?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Desar nou registre?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Voleu desar aquest nou registre?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "" #: ../utils.c:1874 #, c-format msgid " -p skip loading plugins\n" msgstr "" #: ../utils.c:1875 #, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" #: ../utils.c:1876 #, c-format msgid " -A ignore all alarms past and future\n" msgstr "" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr "" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr "" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr "" #: ../utils.c:1921 #, fuzzy msgid "Error reading file" msgstr "Error llegint" #: ../utils.c:1973 msgid "Date compiled" msgstr "" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "" #: ../utils.c:1976 #, fuzzy msgid "Installed Path" msgstr "S' ha instal·lat %s" #: ../utils.c:1978 msgid "pilot-link version" msgstr "" #: ../utils.c:1982 msgid "USB support" msgstr "" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 #, fuzzy msgid "yes" msgstr "Sí" #: ../utils.c:1984 #, fuzzy msgid "Private record support" msgstr "Imprimir tots els registres" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 #, fuzzy msgid "no" msgstr "cap" #: ../utils.c:1990 msgid "Datebk support" msgstr "" #: ../utils.c:1996 #, fuzzy msgid "Plugin support" msgstr "/Connectors" #: ../utils.c:2002 #, fuzzy msgid "Manana support" msgstr "/Connectors" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "" #: ../utils.c:2014 #, fuzzy msgid "GTK2 support" msgstr "/Connectors" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "" #: ../utils.c:2064 #, c-format msgid "HOME environment variable is too long to process\n" msgstr "" #: ../utils.c:2567 msgid "Edit Categories..." msgstr "" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "PC ID és 0.\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "He generat un nou PC ID. És %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Avui és %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Avui és %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Error llegint" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Error llegint" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Vista setmanal" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "" #: ../Expense/expense.c:96 msgid "Austria" msgstr "" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "" #: ../Expense/expense.c:99 msgid "Canada" msgstr "" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "" #: ../Expense/expense.c:102 msgid "Finland" msgstr "" #: ../Expense/expense.c:103 #, fuzzy msgid "France" msgstr "Anul·lar" #: ../Expense/expense.c:104 msgid "Germany" msgstr "" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "" #: ../Expense/expense.c:107 msgid "India" msgstr "" #: ../Expense/expense.c:108 #, fuzzy msgid "Indonesia" msgstr "cap" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "" #: ../Expense/expense.c:110 #, fuzzy msgid "Italy" msgstr "Instal·lar" #: ../Expense/expense.c:111 msgid "Japan" msgstr "" #: ../Expense/expense.c:112 msgid "Korea" msgstr "" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "" #: ../Expense/expense.c:118 msgid "Norway" msgstr "" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "" #: ../Expense/expense.c:122 #, fuzzy msgid "Spain" msgstr "Imprimir" #: ../Expense/expense.c:123 #, fuzzy msgid "Sweden" msgstr "setmana" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "" #: ../Expense/expense.c:125 #, fuzzy msgid "Taiwan" msgstr "Imprimir" #: ../Expense/expense.c:126 #, fuzzy msgid "Thailand" msgstr "Imprimir" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "" #: ../Expense/expense.c:128 msgid "United States" msgstr "" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "Actual" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "cap" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Ajuda" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Diumenge" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Imprimir" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "Sincronitzar" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Diumenge" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Imprimir" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Cats" #: ../Expense/expense.c:1377 msgid "Check" msgstr "" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Temps:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Quant a %s" #. Category Menu #: ../Expense/expense.c:1702 #, fuzzy msgid "Category:" msgstr "Categoria" #. Type Menu #: ../Expense/expense.c:1710 #, fuzzy msgid "Type:" msgstr "Temps:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "" #. Currency Menu #: ../Expense/expense.c:1726 #, fuzzy msgid "Currency:" msgstr "Actual" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "Mes" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Dia" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Any" #. Amount Entry #: ../Expense/expense.c:1787 #, fuzzy msgid "Amount:" msgstr "Quant a %s" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "" #. City #: ../Expense/expense.c:1807 #, fuzzy msgid "City:" msgstr "Categoria" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, fuzzy, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" "%s fou escrit per\n" "Judd Montgomery (c) 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "" #: ../KeyRing/keyring.c:1697 #, fuzzy msgid "Incorrect, Reenter KeyRing Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../KeyRing/keyring.c:1699 #, fuzzy msgid "Enter a NEW KeyRing Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, c-format msgid "Can't export key %d\n" msgstr "" #. Change Password button #: ../KeyRing/keyring.c:2451 #, fuzzy msgid "" "Change\n" "KeyRing\n" "Password" msgstr "Introduïu la contrasenya del PalmOS" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Anul·lar" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "Nom" #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "" #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "Contrasenya del palm" #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 #, fuzzy msgid "Generate Password" msgstr "Introduïu la contrasenya del PalmOS" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Sincronitzar memo" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, fuzzy, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" "%s fou escrit per\n" "Judd Montgomery (c) 1999-2001.\n" "judd@jpilot.org\n" "http://jpilot.org\n" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Fet" #, fuzzy #~ msgid "Overwrite" #~ msgstr "Sobreescrit arxiu" #, fuzzy #~ msgid "Field" #~ msgstr "Ha fallat.\n" #~ msgid "Quick View" #~ msgstr "Vista ràpida" #, fuzzy #~ msgid "Unable to open %s%s file\n" #~ msgstr "No s'ha pogut obrir %s\n" #, fuzzy #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "No s'ha pogut obrir %s\n" #, fuzzy #~ msgid "category name" #~ msgstr "Categoria" #~ msgid "Close" #~ msgstr "Tancar" #~ msgid "none" #~ msgstr "cap" #, fuzzy #~ msgid "W" #~ msgstr "Dc" #, fuzzy #~ msgid "M" #~ msgstr "Dll" #~ msgid "This Event has no particular time" #~ msgstr "Aquest esdeveniment no te hora particular" #, fuzzy #~ msgid "Start Time" #~ msgstr "Comença en" #, fuzzy #~ msgid "End Time" #~ msgstr "Temps" #~ msgid "Done" #~ msgstr "Fet" #~ msgid "Add" #~ msgstr "Afegir" #, fuzzy #~ msgid "User name" #~ msgstr "Nom" #~ msgid "/Help/PayBack program" #~ msgstr "/Ajuda/PayBack program" #~ msgid "Clear" #~ msgstr "Neteja" #, fuzzy #~ msgid "Show private records" #~ msgstr "/Visualitzar/Oculta-Mostra registres privats" #, fuzzy #~ msgid "Hide private records" #~ msgstr "/Visualitzar/Oculta-Mostra registres privats" #, fuzzy #~ msgid "Mask private records" #~ msgstr "Imprimir tots els registres" #, fuzzy #~ msgid "Font" #~ msgstr "Mes" #, fuzzy #~ msgid "Couldn't open PC records file\n" #~ msgstr "No puc obrir el fitxer %s. \n" #~ msgid "The first day of the week is " #~ msgstr "El primer dia de la setmana és " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Port Sèrie (/dev/ttyS0, /dev/pilot)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Sincronitzar memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Un registre" #, fuzzy #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr ".Prémer el botó HotSync ara\n" #, fuzzy #~ msgid "Last Username = [%s]\n" #~ msgstr "Últim nom d'usuari-->\"%s\"\n" #, fuzzy #~ msgid "Last UserID = %d\n" #~ msgstr "Últim identificador d'usuari-->\"%d\"\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: nombre de registres = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disc: nombre de registres = %d\n" #, fuzzy #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "L'arxiu no sembla tenir el format d'adreces\n" #~ msgid "Quit" #~ msgstr "Eixir!" #~ msgid "Help" #~ msgstr "Ajuda" #, fuzzy #~ msgid "Directory" #~ msgstr "%s és un directori" #, fuzzy #~ msgid "Filename" #~ msgstr "Nom" #~ msgid "Sync" #~ msgstr "Sincronitzar" #, fuzzy #~ msgid "Add the new record Ctrl+Enter" #~ msgstr "/Visualitzar/Oculta-Mostra registres privats" #~ msgid "Backup" #~ msgstr "Còpia de seguretat" #~ msgid "Quit!" #~ msgstr "Eixir!" #, fuzzy #~ msgid "Show Preferences" #~ msgstr "Preferències" #~ msgid "About Expense" #~ msgstr "Quant a %s" #, fuzzy #~ msgid "About KeyRing" #~ msgstr "Quant a %s" #, fuzzy #~ msgid "" #~ " [-v] || [-h] || [-d] || [-a] || [-A] || [-i]\n" #~ " -v displays version and compile options and exits.\n" #~ " -h displays help and exits.\n" #~ " -d displays debug info to stdout.\n" #~ " -p do not load plugins.\n" #~ " -a ignore missed alarms since the last time this program was run.\n" #~ " -A ignore all alarms, past and future.\n" #~ " -i makes jpilot iconify itself upon launch\n" #~ " The PILOTPORT, and PILOTRATE env variables are used to specify\n" #~ " which port to sync on, and at what speed.\n" #~ " If PILOTPORT is not set then it defaults to /dev/pilot.\n" #~ msgstr "" #~ "\n" #~ "jpilot [ [-v] || [-h] || [-d] || [-a] || [-A]\n" #~ " -v mostra la versió i surt.\n" #~ " -h mostra l'ajut i surt.\n" #~ " -d mostra informació de depuració a stdout.\n" #~ " -p no carrega els endollats.\n" #~ " -a ignora les alarmes perdudes des de l'última vegada que va funcionar " #~ "el programa.\n" #~ " -A ignora totes les alarmes, passades i futures.\n" #~ " Les variables d'entorn PILOTPORT, i PILOTRATE son utilitzades per " #~ "especificar a quin\n" #~ " port s'ha de sincronitzar, i a quina velocitat.\n" #~ " Si PILOTPORT no ha estat definit, aleshores per defecte utilitza /dev/" #~ "pilot.\n" #~ msgid "slow_sync_application(): Out of memory\n" #~ msgstr "slow_sync_application(): Sense memòria\n" #~ msgid "dlp_WriteRecord failed\n" #~ msgstr "dlp_WriteRecord ha fallat\n" #~ msgid "" #~ "\n" #~ "Unable to open '%s'!\n" #~ msgstr "" #~ "\n" #~ "No es pot obrir '%s'!\n" #, fuzzy #~ msgid "Cannot open %s_to_install file\n" #~ msgstr "No puc obrir el fitxer de registre. \n" #, fuzzy #~ msgid "Cannot open %s_to_install.tmp file\n" #~ msgstr "No puc obrir l'arxiu jpilot_to_install.tmp\n" #~ msgid "fast_sync_local_recs(): Out of memory\n" #~ msgstr "fast_sync_local_recs(): Sense memòria\n" #, fuzzy #~ msgid "Error reading at %s : %s %d\n" #~ msgstr "Error llegint" #, fuzzy #~ msgid "Cannot open " #~ msgstr "No puc obrir el fitxer de registre. \n" #~ msgid "RTh" #~ msgstr "Dj" #, fuzzy #~ msgid "Last Syned UserID-->\"%d\"\n" #~ msgstr "Últim identificador d'usuari-->\"%d\"\n" jpilot-1.8.2/po/cs.po0000664000175000017500000026053312340261240011334 00000000000000# Translation for jpilot. # Copyright (C) 2002, 2003, 2004, 2007 Judd Montgomery # Copyright (C) 2004, 2007 Miloslav Trmac # # Jiri Rubes , 2001. # Miloslav Trmac , 2003, 2004, 2007. # msgid "" msgstr "" "Project-Id-Version: jpilot 0.99.8-pre12\n" "Report-Msgid-Bugs-To: jpilot-devel@jpilot.org\n" "POT-Creation-Date: 2014-05-24 22:46-0400\n" "PO-Revision-Date: 2007-09-06 21:58+0200\n" "Last-Translator: Miloslav Trmac \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../address.c:274 ../address.c:446 ../alarms.c:330 ../calendar.c:307 #: ../calendar.c:545 ../contact.c:322 ../contact.c:736 ../dat.c:203 #: ../dat.c:733 ../dat.c:937 ../dat.c:1071 ../dat.c:1210 ../datebook.c:128 #: ../datebook.c:163 ../datebook.c:170 ../datebook.c:229 ../jpilot.c:1256 #: ../jpilot-merge.c:93 ../libplugin.c:206 ../libplugin.c:453 #: ../libplugin.c:532 ../libplugin.c:561 ../libplugin.c:809 ../memo.c:212 #: ../memo.c:285 ../otherconv.c:278 ../plugins.c:110 ../prefs.c:348 #: ../prefs.c:373 ../prefs.c:906 ../sync.c:2180 ../sync.c:2197 ../sync.c:2306 #: ../sync.c:2320 ../sync.c:2517 ../sync.c:2656 ../todo.c:234 ../todo.c:488 #: ../utils.c:746 #, c-format msgid "Out of memory" msgstr "Nedostatek pamÄ›ti" #: ../address.c:330 ../calendar.c:228 ../contact.c:578 ../datebook.c:492 #: ../memo.c:85 ../todo.c:88 #, fuzzy, c-format msgid "%s:%d Error reading application info %s\n" msgstr "%s:%d Chyba pÅ™i Ätení informace o kategoriích %s\n" #: ../address.c:342 ../address_gui.c:2339 ../address_gui.c:2378 #: ../calendar.c:244 ../contact.c:594 ../datebook.c:512 ../datebook_gui.c:3734 #: ../libplugin.c:403 ../libplugin.c:429 ../memo.c:97 ../memo_gui.c:943 #: ../todo_gui.c:1070 ../Expense/expense.c:1103 #, c-format msgid "Error reading file: %s\n" msgstr "Chyba pÅ™i Ätení souboru: %s\n" #: ../address.c:490 ../calendar.c:596 ../calendar.c:605 ../contact.c:778 #: ../libplugin.c:844 ../memo.c:351 ../todo.c:300 ../utils.c:1122 #: ../utils.c:1129 ../utils.c:1136 ../utils.c:1143 ../utils.c:1150 #: ../utils.c:1157 msgid "error" msgstr "chyba" #: ../address_gui.c:323 ../datebook_gui.c:2841 ../memo_gui.c:174 #: ../todo_gui.c:290 ../KeyRing/keyring.c:832 msgid "" "This record is deleted.\n" "Undelete it or copy it to make changes.\n" msgstr "" "Tento záznam je odstranÄ›n.\n" "Pro provádÄ›ní zmÄ›n jej obnovte nebo zkopírujte.\n" #: ../address_gui.c:450 ../address_gui.c:456 ../address_gui.c:467 #: ../address_gui.c:479 ../address_gui.c:491 ../address_gui.c:504 #, c-format msgid "%s%s: %s" msgstr "" #: ../address_gui.c:540 ../category.c:116 ../category.c:174 ../category.c:328 #: ../category.c:334 ../datebook_gui.c:428 ../jpilot-merge.c:86 #: ../jpilot-merge.c:144 ../jpilot-merge.c:149 ../memo_gui.c:278 #: ../sync.c:2139 ../sync.c:2145 ../sync.c:2491 ../sync.c:2852 #: ../todo_gui.c:414 ../utils.c:2684 ../utils.c:2721 ../utils.c:2727 #: ../utils.c:2786 ../utils.c:2792 ../utils.c:2846 ../utils.c:2900 #: ../utils.c:2906 ../utils.c:2964 ../utils.c:2971 #, c-format msgid "Unable to open file: %s\n" msgstr "Nemohu otevřít soubor: %s\n" #: ../address_gui.c:559 #, fuzzy, c-format msgid "Unable to read file: %s\n" msgstr "Nemohu otevřít soubor: %s\n" #: ../address_gui.c:713 msgid "File doesn't appear to be address.dat format\n" msgstr "Soubor zÅ™ejmÄ› není ve formátu address.dat\n" #: ../address_gui.c:723 ../datebook_gui.c:647 ../memo_gui.c:324 #: ../memo_gui.c:419 ../todo_gui.c:542 ../Expense/expense.c:1382 msgid "Unfiled" msgstr "NezaÅ™azeno" #: ../address_gui.c:779 ../datebook_gui.c:698 ../memo_gui.c:472 #: ../todo_gui.c:595 msgid "CSV (Comma Separated Values)" msgstr "" #: ../address_gui.c:780 msgid "DAT/ABA (Palm Archive Formats)" msgstr "" #. current category name #. previous category name #. entry text, in Pilot character set #: ../address_gui.c:866 ../category.c:406 ../datebook_gui.c:729 #: ../jpilot.c:232 ../jpilot.c:276 ../jpilot.c:350 ../jpilot.c:394 #: ../jpilot.c:953 ../memo_gui.c:508 ../todo_gui.c:635 ../utils.c:1303 #: ../KeyRing/keyring.c:2088 msgid "OK" msgstr "Budiž" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "No" msgstr "Ne" #: ../address_gui.c:867 ../address_gui.c:1020 ../datebook_gui.c:360 #: ../datebook_gui.c:388 ../datebook_gui.c:730 ../memo_gui.c:509 #: ../memo_gui.c:646 ../todo_gui.c:636 ../todo_gui.c:764 ../todo_gui.c:772 #: ../utils.c:1320 ../utils.c:1344 ../KeyRing/keyring.c:2089 msgid "Yes" msgstr "Ano" #: ../address_gui.c:886 ../datebook_gui.c:753 ../memo_gui.c:524 #: ../todo_gui.c:655 ../KeyRing/keyring.c:2103 #, c-format msgid "%s is a directory" msgstr "%s je adresář" #: ../address_gui.c:888 ../address_gui.c:905 ../datebook_gui.c:755 #: ../datebook_gui.c:772 ../memo_gui.c:526 ../memo_gui.c:543 ../todo_gui.c:657 #: ../todo_gui.c:674 ../KeyRing/keyring.c:2105 ../KeyRing/keyring.c:2122 msgid "Error Opening File" msgstr "Chyba pÅ™i otevírání souboru" #: ../address_gui.c:892 ../datebook_gui.c:759 ../memo_gui.c:530 #: ../todo_gui.c:661 ../KeyRing/keyring.c:2109 #, c-format msgid "Do you want to overwrite file %s?" msgstr "Chcete pÅ™epsat soubor %s?" #: ../address_gui.c:894 ../datebook_gui.c:761 ../memo_gui.c:532 #: ../todo_gui.c:663 ../KeyRing/keyring.c:2111 msgid "Overwrite File?" msgstr "PÅ™epsat soubor?" #: ../address_gui.c:903 ../datebook_gui.c:770 ../memo_gui.c:541 #: ../todo_gui.c:672 ../KeyRing/keyring.c:2120 #, c-format msgid "Error opening file: %s" msgstr "Chyba pÅ™i otevírání souboru: %s" #: ../address_gui.c:920 #, c-format msgid "" "Address exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:923 #, c-format msgid "" "Contact exported from %s %s on %s\n" "\n" msgstr "" #: ../address_gui.c:998 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ldif file may not be standards-compliant\n" msgstr "" #: ../address_gui.c:1011 #, c-format msgid "Can't export address %d\n" msgstr "Nemohu exportovat adresu %d\n" #: ../address_gui.c:1017 ../memo_gui.c:643 ../todo_gui.c:760 #, fuzzy, c-format msgid "Category: %s\n" msgstr "Kategorie: " #: ../address_gui.c:1019 ../memo_gui.c:645 ../todo_gui.c:763 #, fuzzy, c-format msgid "Private: %s\n" msgstr "Soukromé" #: ../address_gui.c:1027 ../address_gui.c:1041 ../address_gui.c:1045 #: ../address_gui.c:1054 ../address_gui.c:1057 #, c-format msgid "%s: " msgstr "" #: ../address_gui.c:1031 #, c-format msgid "%s\n" msgstr "" #. E-mail should be the Palm dropdown menu item for email #. Set dial/email button text and callback data #: ../address_gui.c:1248 ../address_gui.c:2900 ../address_gui.c:4236 msgid "E-mail" msgstr "E-mail" #: ../address_gui.c:1534 ../datebook_gui.c:1147 ../memo_gui.c:656 #: ../todo_gui.c:844 ../KeyRing/keyring.c:2225 msgid "Unknown export type\n" msgstr "Neznámý typ exportu\n" #: ../address_gui.c:1560 ../datebook_gui.c:1226 ../memo_gui.c:471 #: ../memo_gui.c:745 ../todo_gui.c:870 ../KeyRing/keyring.c:2296 msgid "Text" msgstr "" #: ../address_gui.c:1561 ../datebook_gui.c:1227 ../memo_gui.c:746 #: ../todo_gui.c:871 ../KeyRing/keyring.c:2296 msgid "CSV" msgstr "" #: ../address_gui.c:1562 msgid "vCard" msgstr "" #: ../address_gui.c:1563 msgid "vCard (Optimized for Gmail/Android Import)" msgstr "" #: ../address_gui.c:1564 msgid "ldif" msgstr "" #: ../address_gui.c:1565 ../memo_gui.c:747 ../KeyRing/keyring.c:2296 msgid "B-Folders CSV" msgstr "" #. Initialize variable if default case taken #: ../address_gui.c:1831 ../address_gui.c:3953 #, fuzzy msgid "Last Name/Company" msgstr "Jméno/Firma" #: ../address_gui.c:1834 ../address_gui.c:3956 #, fuzzy msgid "First Name/Company" msgstr "Jméno/Firma" #: ../address_gui.c:1837 ../address_gui.c:3959 #, fuzzy msgid "Company/Last Name" msgstr "Firma/Jméno" #: ../address_gui.c:1974 ../datebook_gui.c:2904 ../memo_gui.c:1116 #: ../todo_gui.c:1329 ../KeyRing/keyring.c:1179 msgid "You can't modify a record that is deleted\n" msgstr "Nemůžete upravit záznam, který byl odstranÄ›n\n" #. Illegal category, Assume that category 0 is Unfiled and valid #: ../address_gui.c:2173 ../address_gui.c:2424 ../address_gui.c:2857 #: ../address_gui.c:2863 ../address_gui.c:3652 ../datebook_gui.c:1994 #: ../datebook_gui.c:3431 ../datebook_gui.c:3780 ../datebook_gui.c:4071 #: ../memo_gui.c:980 ../memo_gui.c:1026 ../memo_gui.c:1241 ../memo_gui.c:1625 #: ../todo_gui.c:1106 ../todo_gui.c:1200 ../todo_gui.c:1589 ../todo_gui.c:2138 #: ../Expense/expense.c:687 ../Expense/expense.c:1141 #: ../Expense/expense.c:1225 ../Expense/expense.c:1885 #: ../KeyRing/keyring.c:1068 ../KeyRing/keyring.c:1510 #: ../KeyRing/keyring.c:1572 ../KeyRing/keyring.c:2755 msgid "Category is not legal\n" msgstr "Kategorie není platná\n" #: ../address_gui.c:2233 ../alarms.c:596 ../dialer.c:162 #, c-format msgid "executing command = [%s]\n" msgstr "spouÅ¡tím příkaz = [%s]\n" #: ../address_gui.c:2235 #, c-format msgid "Failed to execute [%s] at %s %d\n" msgstr "" #: ../address_gui.c:2479 msgid "Birthday" msgstr "" #: ../address_gui.c:2575 msgid "External program not found, or other error" msgstr "" #: ../address_gui.c:2577 msgid "" "J-Pilot can not find the external program \"convert\"\n" "or an error occurred while executing convert.\n" "You may need to install package ImageMagick" msgstr "" #: ../address_gui.c:2578 #, c-format msgid "Command executed was \"%s\"\n" msgstr "" #: ../address_gui.c:2579 #, c-format msgid "return code was %d\n" msgstr "" #: ../address_gui.c:2657 #, fuzzy msgid "chdir() failed\n" msgstr "zamÄení selhalo\n" #: ../address_gui.c:2660 msgid "Add Photo" msgstr "" #. Category menu #: ../address_gui.c:2882 ../KeyRing/keyring.c:2652 msgid "Category: " msgstr "Kategorie: " #: ../address_gui.c:2902 ../address_gui.c:4237 msgid "Mail" msgstr "PoÅ¡ta" #. Dial Phone Button #: ../address_gui.c:2905 ../address_gui.c:4240 ../dialer.c:307 ../dialer.c:331 msgid "Dial" msgstr "VytoÄit" #: ../address_gui.c:3095 ../datebook_gui.c:2757 ../memo_gui.c:1308 #: ../todo_gui.c:1697 msgid "Could not get temporary file name\n" msgstr "" #: ../address_gui.c:3103 ../datebook_gui.c:2765 ../memo_gui.c:1316 #: ../todo_gui.c:1705 msgid "Could not open temporary file for external editor\n" msgstr "" #: ../address_gui.c:3140 ../datebook_gui.c:2803 ../memo_gui.c:1354 #: ../todo_gui.c:1743 msgid "Could not open temporary file from external editor\n" msgstr "" #: ../address_gui.c:3312 ../address_gui.c:3343 msgid "-Unnamed-" msgstr "-Nepojmenovaný-" #: ../address_gui.c:3425 ../memo_gui.c:1531 ../todo_gui.c:2016 msgid "0 records" msgstr "0 záznamů" #: ../address_gui.c:3428 ../datebook_gui.c:2637 ../memo_gui.c:1534 #: ../todo_gui.c:2019 #, c-format msgid "%d of %d records" msgstr "%d z %d záznamů" #: ../address_gui.c:3823 ../address_gui.c:3831 ../KeyRing/keyring.c:2565 msgid "Name" msgstr "Jméno" #: ../address_gui.c:3824 ../address_gui.c:3825 ../address_gui.c:3826 #: ../address_gui.c:3832 msgid "Address" msgstr "Adresa" #: ../address_gui.c:3827 ../address_gui.c:3833 ../Expense/expense.c:582 #: ../Expense/expense.c:1403 msgid "Other" msgstr "Jiné" #. Note textbox #: ../address_gui.c:3828 ../address_gui.c:3834 ../todo_gui.c:2481 #: ../Expense/expense.c:1834 ../KeyRing/keyring.c:2699 msgid "Note" msgstr "Poznámka" #: ../address_gui.c:3844 msgid "Reverting to Address database\n" msgstr "" #: ../address_gui.c:3965 msgid "Phone" msgstr "Telefon" #: ../address_gui.c:3997 msgid "Quick Find: " msgstr "Rychlé hledání: " #. Cancel button #. Add record modification buttons #. Cancel button #: ../address_gui.c:4015 ../category.c:407 ../datebook_gui.c:1782 #: ../datebook_gui.c:5121 ../memo_gui.c:1769 ../todo_gui.c:2342 #: ../utils.c:1344 ../KeyRing/keyring.c:2595 msgid "Cancel" msgstr "ZruÅ¡it" #: ../address_gui.c:4015 ../datebook_gui.c:5121 ../memo_gui.c:1769 #: ../todo_gui.c:2342 ../KeyRing/keyring.c:2595 msgid "Cancel the modifications" msgstr "ZruÅ¡it zmÄ›ny" #. Delete Button #. Delete button #. Delete Button #. Delete button #. Delete, Copy, New, etc. buttons #. Delete button #: ../address_gui.c:4020 ../category.c:407 ../category.c:850 #: ../datebook_gui.c:5126 ../memo_gui.c:1774 ../todo_gui.c:2347 #: ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete" msgstr "Odstranit" #: ../address_gui.c:4020 ../datebook_gui.c:5126 ../memo_gui.c:1774 #: ../todo_gui.c:2347 ../Expense/expense.c:1661 ../KeyRing/keyring.c:2600 msgid "Delete the selected record" msgstr "Odstranit vybraný záznam" #. Undelete Button #. Undelete button #. Undelete Button #. Undelete button #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete" msgstr "Obnovit" #: ../address_gui.c:4026 ../datebook_gui.c:5132 ../memo_gui.c:1780 #: ../todo_gui.c:2353 ../KeyRing/keyring.c:2606 msgid "Undelete the selected record" msgstr "ZruÅ¡it odstranÄ›ní vybraného záznamu" #. Copy button #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy" msgstr "Kopírovat" #: ../address_gui.c:4032 ../datebook_gui.c:5138 ../memo_gui.c:1786 #: ../todo_gui.c:2359 ../Expense/expense.c:1666 ../KeyRing/keyring.c:2612 msgid "Copy the selected record" msgstr "Zkopírovat vybraný záznam" #. New button #. New Record button #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "New Record" msgstr "Nový záznam" #: ../address_gui.c:4038 ../datebook_gui.c:5144 ../memo_gui.c:1792 #: ../todo_gui.c:2365 ../Expense/expense.c:1671 ../KeyRing/keyring.c:2618 msgid "Add a new record" msgstr "PÅ™idat nový záznam" #. "Add Record" button #. Add Record button #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add Record" msgstr "PÅ™idat záznam" #: ../address_gui.c:4043 ../datebook_gui.c:5150 ../memo_gui.c:1798 #: ../todo_gui.c:2371 ../Expense/expense.c:1676 ../KeyRing/keyring.c:2624 msgid "Add the new record" msgstr "PÅ™idat nový záznam" #. "Apply Changes" button #. Apply Changes button #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Apply Changes" msgstr "Provést zmÄ›ny" #: ../address_gui.c:4053 ../datebook_gui.c:5160 ../memo_gui.c:1808 #: ../todo_gui.c:2381 ../Expense/expense.c:1685 ../KeyRing/keyring.c:2633 msgid "Commit the modifications" msgstr "Potvrdit zmÄ›ny" #. Private check box #. Private checkbox #: ../address_gui.c:4084 ../datebook_gui.c:5188 ../datebook_gui.c:5230 #: ../memo_gui.c:1824 ../todo_gui.c:2407 msgid "Private" msgstr "Soukromé" #: ../address_gui.c:4169 msgid "Change Photo" msgstr "" #: ../address_gui.c:4174 #, fuzzy msgid "Remove Photo" msgstr "Odstranit" #: ../address_gui.c:4246 #, fuzzy msgid "Show In List" msgstr "" "Zobrazovat\n" "v seznamu" #: ../address_gui.c:4347 #, fuzzy msgid "Reminder" msgstr "PÅ™ipomenout mi" #: ../address_gui.c:4363 ../datebook_gui.c:236 ../datebook_gui.c:5218 #: ../datebook_gui.c:5375 msgid "Days" msgstr "Dnů" #. The Quickview (ALL) page #. All button #: ../address_gui.c:4407 ../datebook_gui.c:1478 ../datebook_gui.c:1782 #: ../utils.c:2538 msgid "All" msgstr "VÅ¡e" #: ../alarms.c:230 ../datebook_gui.c:234 ../datebook_gui.c:5212 #: ../datebook_gui.c:5369 msgid "Minutes" msgstr "Minut" #: ../alarms.c:232 ../datebook_gui.c:235 ../datebook_gui.c:5216 #: ../datebook_gui.c:5373 msgid "Hours" msgstr "Hodin" #: ../alarms.c:253 msgid "Remind me" msgstr "PÅ™ipomenout mi" #: ../alarms.c:423 ../alarms.c:991 ../sync.c:1649 ../sync.c:1655 #: ../utils.c:3784 #, c-format msgid "Unable to open file: %s%s\n" msgstr "Nemohu otevřít soubor: %s%s\n" #: ../alarms.c:510 msgid "Appointment Reminder" msgstr "PÅ™ipomenutí akce" #: ../alarms.c:513 msgid "Past Appointment" msgstr "Minulá akce" #: ../alarms.c:516 msgid "Postponed Appointment" msgstr "Odložená akce" #: ../alarms.c:519 ../datebook_gui.c:5022 msgid "Appointment" msgstr "Akce" #: ../alarms.c:605 msgid "J-Pilot Alarm" msgstr "UpozornÄ›ní J-Pilot" #: ../category.c:129 ../category.c:186 ../sync.c:2168 ../sync.c:2505 msgid "PC file corrupt?\n" msgstr "PoÅ¡kozený soubor na PC?\n" #: ../category.c:136 ../category.c:146 ../category.c:194 ../category.c:204 #: ../category.c:214 ../sync.c:2290 ../sync.c:2344 ../sync.c:2381 #: ../sync.c:2396 ../sync.c:2420 ../sync.c:2640 ../sync.c:2685 ../sync.c:2722 #: ../sync.c:2735 ../sync.c:2760 msgid "fseek failed - fatal error\n" msgstr "fseek selhal - fatální chyba\n" #: ../category.c:362 ../utils.c:2748 ../utils.c:2822 ../utils.c:2926 #: ../utils.c:2991 msgid "rename failed" msgstr "pÅ™ejmenování selhalo" #: ../category.c:407 msgid "Move" msgstr "PÅ™esunout" #: ../category.c:436 ../category.c:498 ../category.c:578 ../category.c:767 msgid "Edit Categories" msgstr "Upravit kategorie" #: ../category.c:437 msgid "The maximum number of categories (16) are already used" msgstr "Již se používá maximální poÄet kategorií (16)" #: ../category.c:440 msgid "Enter New Category" msgstr "Zadejte novou kategorii" #: ../category.c:451 ../category.c:475 #, fuzzy msgid "Edit Categories Error" msgstr "Upravit kategorie" #: ../category.c:452 msgid "You must select a category to rename" msgstr "Musíte vybrat kategorii kterou pÅ™ejmenovat" #: ../category.c:461 msgid "Enter New Category Name" msgstr "Zadejte název nové kategorie" #: ../category.c:476 msgid "You must select a category to delete" msgstr "Musíte vybrat kategorii, kterou odstranit" #: ../category.c:494 #, c-format msgid "" "There are %d records in %s.\n" "Do you want to move them to %s, or delete them?" msgstr "" "V %2$s je %1$d záznamů.\n" "Chcete je pÅ™esunout do %3$s nebo odstranit?" #: ../category.c:554 #, c-format msgid "invalid state file %s line %d\n" msgstr "neplatný stav soubor %s řádek %d\n" #: ../category.c:576 #, c-format msgid "The category %s can't be used more than once" msgstr "Kategorii %s nelze použít více než jednou" #. Category names in host character set #: ../category.c:733 #, fuzzy msgid "Category" msgstr "Kategorie:" #: ../category.c:834 msgid "New" msgstr "Nový" #: ../category.c:841 msgid "Rename" msgstr "PÅ™ejmenovat" #: ../dat.c:512 msgid "unknown type =" msgstr "neznámý typ =" #: ../dat.c:603 #, c-format msgid "fields per row count != %d, unknown format\n" msgstr "poÄet polí na řádku != %d, neznámý formát\n" #: ../dat.c:625 #, c-format msgid "field count != %d, unknown format\n" msgstr "poÄet polí != %d, neznámý formát\n" #: ../dat.c:635 msgid "Unknown format, file has wrong schema\n" msgstr "Neznámý formát, soubor má Å¡patné schéma\n" #: ../dat.c:636 msgid "File schema is:" msgstr "Schéma souboru je:" #: ../dat.c:640 #, fuzzy msgid "It should be:" msgstr "MÄ›lo by být: " #: ../dat.c:752 ../dat.c:770 ../dat.c:954 ../dat.c:967 ../dat.c:1090 #: ../dat.c:1103 ../dat.c:1227 ../dat.c:1240 #, c-format msgid "%s:%d Record %d, field %d: Invalid type. Expected %d, found %d\n" msgstr "%s:%d Záznam %d, pole %d: Neplatný typ. OÄekáván %d, nalezen %d\n" #: ../dat.c:753 ../dat.c:771 ../dat.c:955 ../dat.c:968 ../dat.c:1072 #: ../dat.c:1091 ../dat.c:1104 ../dat.c:1228 ../dat.c:1241 msgid "read of file terminated\n" msgstr "Ätení souboru pÅ™eruÅ¡eno\n" #: ../datebook.c:703 ../datebook_gui.c:3645 #, c-format msgid "Unknown repeatType (%d) found in DatebookDB\n" msgstr "Neznámý repeatType (%d) nalezen v DatebookDB\n" #: ../datebook_gui.c:239 #, fuzzy msgid "Repeat Never" msgstr "Opakovat podle:" #: ../datebook_gui.c:240 #, fuzzy msgid "Repeat Daily" msgstr "Opakovat ve dnech:" #: ../datebook_gui.c:241 #, fuzzy msgid "Repeat Weekly" msgstr "Opakovat podle:" #: ../datebook_gui.c:242 #, fuzzy msgid "Repeat MonthlyByDay" msgstr "Opakovat ve dnech:" #: ../datebook_gui.c:243 #, fuzzy msgid "Repeat MonthlyByDate" msgstr "Opakovat ve dnech:" #: ../datebook_gui.c:244 msgid "Repeat YearlyDate" msgstr "" #: ../datebook_gui.c:245 #, fuzzy msgid "Repeat YearlyDay" msgstr "Opakovat ve dnech:" # FIXME: this is in libc #: ../datebook_gui.c:248 ../datebook_gui.c:255 ../datebook_gui.c:4800 #: ../datebook_gui.c:4807 msgid "Su" msgstr "Ne" #: ../datebook_gui.c:249 ../datebook_gui.c:4801 msgid "Mo" msgstr "Po" #: ../datebook_gui.c:250 ../datebook_gui.c:4802 msgid "Tu" msgstr "Út" #: ../datebook_gui.c:251 ../datebook_gui.c:4803 msgid "We" msgstr "St" #: ../datebook_gui.c:252 ../datebook_gui.c:4804 msgid "Th" msgstr "ÄŒt" #: ../datebook_gui.c:253 ../datebook_gui.c:4805 msgid "Fr" msgstr "Pá" #: ../datebook_gui.c:254 ../datebook_gui.c:4806 msgid "Sa" msgstr "So" #: ../datebook_gui.c:267 #, c-format msgid "" "Start Date: %s\n" "Time: Event" msgstr "" #: ../datebook_gui.c:275 #, c-format msgid "" "Start Date: %s\n" "Time: %s to %s" msgstr "" #: ../datebook_gui.c:285 ../datebook_gui.c:295 msgid "Unknown" msgstr "" #. End Date #: ../datebook_gui.c:298 #, fuzzy msgid "End Date: " msgstr "SkonÄit dne" #: ../datebook_gui.c:300 msgid "Never" msgstr "" #: ../datebook_gui.c:306 #, c-format msgid "Repeat Frequency: %d\n" msgstr "" #: ../datebook_gui.c:314 #, c-format msgid "Monthly Repeat Day %d\n" msgstr "" #: ../datebook_gui.c:319 ../datebook_gui.c:5517 msgid "Repeat on Days:" msgstr "Opakovat ve dnech:" #: ../datebook_gui.c:330 #, fuzzy, c-format msgid "Number of exceptions: %d" msgstr "poÄet záznamů = %d\n" #: ../datebook_gui.c:336 msgid "" "\n" "more..." msgstr "" #: ../datebook_gui.c:357 ../datebook_gui.c:384 msgid "Description:" msgstr "" #: ../datebook_gui.c:358 ../datebook_gui.c:385 #, fuzzy msgid "Note:" msgstr "Poznámka" #: ../datebook_gui.c:360 ../datebook_gui.c:388 #, fuzzy msgid "Alarm:" msgstr "UpozornÄ›ní" #: ../datebook_gui.c:361 ../datebook_gui.c:389 #, fuzzy msgid "Repeat Type:" msgstr "Opakovat podle:" #: ../datebook_gui.c:364 ../datebook_gui.c:392 #, fuzzy msgid "Start of Week:" msgstr "Dne v týdnu" #: ../datebook_gui.c:386 ../datebook_gui.c:5340 msgid "Location:" msgstr "" #: ../datebook_gui.c:620 ../datebook_gui.c:2271 #, c-format msgid "Appointment description text > %d, truncating to %d\n" msgstr "Popis akce > %d, zkracuji na %d\n" #: ../datebook_gui.c:631 ../datebook_gui.c:1148 ../datebook_gui.c:2331 #: ../datebook_gui.c:2338 msgid "Error" msgstr "Chyba" #: ../datebook_gui.c:632 msgid "File doesn't appear to be datebook.dat format\n" msgstr "Soubor zÅ™ejmÄ› není ve formátu datebook.dat\n" #: ../datebook_gui.c:699 msgid "DAT/DBA (Palm Archive Formats)" msgstr "" #: ../datebook_gui.c:787 #, c-format msgid "" "Datebook exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:790 #, c-format msgid "" "Calendar exported from %s %s on %s\n" "\n" msgstr "" #: ../datebook_gui.c:817 ../todo_gui.c:701 msgid "" "Host character encoding is not UTF-8 based.\n" " Exported ical file may not be standards-compliant\n" msgstr "" #: ../datebook_gui.c:1148 msgid "Unknown export type" msgstr "Neznámý typ exportu" #: ../datebook_gui.c:1228 ../todo_gui.c:872 msgid "iCalendar" msgstr "" #: ../datebook_gui.c:1240 ../export_gui.c:251 ../jpilot.c:427 msgid "Export" msgstr "Exportovat" #. Label for instructions #: ../datebook_gui.c:1257 msgid "Export All Datebook Records" msgstr "Exportovat vÅ¡echny záznamy diáře" #: ../datebook_gui.c:1276 ../export_gui.c:316 msgid "Save as" msgstr "Uložit jako" #. Browse button #: ../datebook_gui.c:1286 ../export_gui.c:329 msgid "Browse" msgstr "Procházet" #: ../datebook_gui.c:1432 msgid "Datebook Categories" msgstr "Kategorie diáře" #. None button #. Labels for notebook tabs #: ../datebook_gui.c:1484 ../datebook_gui.c:2026 ../datebook_gui.c:5446 msgid "None" msgstr "Nic" #: ../datebook_gui.c:1633 msgid "Begin On Date" msgstr "ZaÄít dne" #: ../datebook_gui.c:1639 msgid "End On Date" msgstr "SkonÄit dne" # FIXME: again #: ../datebook_gui.c:1751 ../prefs.c:449 msgid "Sunday" msgstr "NedÄ›le" #: ../datebook_gui.c:1752 ../prefs.c:450 msgid "Monday" msgstr "PondÄ›lí" #: ../datebook_gui.c:1753 msgid "Tuesday" msgstr "Úterý" #: ../datebook_gui.c:1754 msgid "Wednesday" msgstr "StÅ™eda" #: ../datebook_gui.c:1755 msgid "Thursday" msgstr "ÄŒtvrtek" #: ../datebook_gui.c:1756 msgid "Friday" msgstr "Pátek" #: ../datebook_gui.c:1757 msgid "Saturday" msgstr "Sobota" #: ../datebook_gui.c:1760 msgid "4th" msgstr "4." #: ../datebook_gui.c:1760 msgid "Last" msgstr "Poslední" #: ../datebook_gui.c:1763 #, c-format msgid "" "This appointment can either\n" "repeat on the 4th %s\n" "of the month, or on the last\n" "%s of the month.\n" "Which do you want?" msgstr "" "Tato akce se může\n" "opakovat buÄ Ätvrtou %s\n" "mÄ›síce, nebo poslední\n" "%s mÄ›síce.\n" "Co chcete?" #: ../datebook_gui.c:1770 ../datebook_gui.c:1786 msgid "Question?" msgstr "Otázka?" #: ../datebook_gui.c:1777 #, fuzzy msgid "" "This is a repeating event.\n" "Do you want to apply these changes to\n" "only the CURRENT event,\n" "just FUTURE events, or\n" "ALL of the occurrences of this event?" msgstr "" "Toto je opakující se událost.\n" "Chcete aplikovat zmÄ›ny pouze\n" "na AKTUÃLNà událost nebo na\n" "VÅ ECHNY výskyty této události?" #: ../datebook_gui.c:1782 msgid "Current" msgstr "Aktuální" #: ../datebook_gui.c:1782 msgid "Future" msgstr "" #: ../datebook_gui.c:2027 msgid "day" msgstr "den" #: ../datebook_gui.c:2028 msgid "week" msgstr "týden" #: ../datebook_gui.c:2029 msgid "month" msgstr "mÄ›síc" #: ../datebook_gui.c:2030 msgid "year" msgstr "rok" # FIXME: unlocalizable #: ../datebook_gui.c:2326 ../datebook_gui.c:2329 #, c-format msgid "You cannot have an appointment that repeats every %d %s(s)\n" msgstr "Nemůžete mít akci, která se opakuje každých %d %s\n" #: ../datebook_gui.c:2339 #, fuzzy msgid "" "You cannot have a weekly repeating appointment that doesn't repeat on any " "day of the week." msgstr "" "Nemůžete mít týdnÄ› opakovanou akci, která se neopakuje v žádném dnu v týdnu." #. This is a timeless event #: ../datebook_gui.c:2516 ../datebook_gui.c:5261 msgid "No Time" msgstr "Bez Äasu" #: ../datebook_gui.c:2788 ../memo_gui.c:1339 ../todo_gui.c:1728 msgid "External editor command too long to execute\n" msgstr "" #: ../datebook_gui.c:2940 msgid "Invalid Appointment" msgstr "Neplatná akce" #: ../datebook_gui.c:2941 msgid "" "The End Date of this appointment\n" "is before the start date." msgstr "" "Koncové datum této akce\n" "je pÅ™ed poÄáteÄním datem" #. "No Date" check box #: ../datebook_gui.c:3336 ../datebook_gui.c:5479 ../datebook_gui.c:5510 #: ../datebook_gui.c:5562 ../datebook_gui.c:5610 ../todo_gui.c:140 #: ../todo_gui.c:2451 msgid "No Date" msgstr "NeurÄen" #: ../datebook_gui.c:3491 #, fuzzy, c-format msgid "Error in DateBookDB or Calendar advanceUnits = %d\n" msgstr "Chyba v DateBookDB advanceUnits = %d\n" #: ../datebook_gui.c:3678 #, c-format msgid "%%a., %s" msgstr "%%a., %s" #: ../datebook_gui.c:3683 msgid " (TODAY)" msgstr " (DNES)" #. Weekview button #: ../datebook_gui.c:4931 ../datebook_gui.c:5448 msgid "Week" msgstr "Týden" #: ../datebook_gui.c:4940 #, fuzzy msgid "View appointments by week Ctrl+W" msgstr "Zobrazit akce po týdnech" #. Monthview button #: ../datebook_gui.c:4943 ../datebook_gui.c:5449 msgid "Month" msgstr "MÄ›síc" #: ../datebook_gui.c:4952 #, fuzzy msgid "View appointments by month Ctrl+M" msgstr "Zobrazit akce po mÄ›sících" #. Make Category button #: ../datebook_gui.c:4957 msgid "Cats" msgstr "Kat." #: ../datebook_gui.c:5021 msgid "Time" msgstr "ÄŒas" #. "Show ToDos" button #: ../datebook_gui.c:5064 msgid "Show ToDos" msgstr "Zobrazit úkoly" #: ../datebook_gui.c:5078 ../todo_gui.c:2282 msgid "Task" msgstr "Úkol" #: ../datebook_gui.c:5079 ../todo_gui.c:2283 msgid "Due" msgstr "Termín" #: ../datebook_gui.c:5198 ../datebook_gui.c:5355 msgid "Alarm" msgstr "UpozornÄ›ní" #. Date Spinners #: ../datebook_gui.c:5238 ../Expense/expense.c:1734 msgid "Date:" msgstr "Datum:" #. Start date and time #: ../datebook_gui.c:5280 #, fuzzy msgid "Start" msgstr "ZaÄíná" #. End date and time #: ../datebook_gui.c:5297 #, fuzzy msgid "End" msgstr "Konec" #: ../datebook_gui.c:5430 msgid "DateBk Tags" msgstr "ZnaÄky DateBk" #: ../datebook_gui.c:5447 msgid "Day" msgstr "Den" #: ../datebook_gui.c:5450 msgid "Year" msgstr "Rok" #. "No Repeat" page for notebook #: ../datebook_gui.c:5453 msgid "This event will not repeat" msgstr "Tato akce se neopakuje" #: ../datebook_gui.c:5462 ../datebook_gui.c:5495 ../datebook_gui.c:5547 #: ../datebook_gui.c:5593 msgid "Frequency is Every" msgstr "Opakovat každý" #: ../datebook_gui.c:5468 msgid "Day(s)" msgstr "Den" #: ../datebook_gui.c:5471 ../datebook_gui.c:5504 ../datebook_gui.c:5556 #: ../datebook_gui.c:5602 msgid "End on" msgstr "Konec" #: ../datebook_gui.c:5501 msgid "Week(s)" msgstr "Týden" #: ../datebook_gui.c:5553 msgid "Month(s)" msgstr "MÄ›síc" #: ../datebook_gui.c:5570 msgid "Repeat by:" msgstr "Opakovat podle:" #: ../datebook_gui.c:5574 msgid "Day of week" msgstr "Dne v týdnu" #: ../datebook_gui.c:5583 ../Expense/expense.c:1616 msgid "Date" msgstr "Data" #: ../datebook_gui.c:5599 msgid "Year(s)" msgstr "Rok" #: ../dialer.c:195 msgid "Phone Dialer" msgstr "VytáÄeÄ telefonu" #: ../dialer.c:230 msgid "Prefix 1" msgstr "Prefix 1" #: ../dialer.c:252 msgid "Prefix 2" msgstr "Prefix 2" #: ../dialer.c:274 msgid "Prefix 3" msgstr "Prefix 3" #: ../dialer.c:289 msgid "Phone number:" msgstr "Telefonní Äíslo:" #: ../dialer.c:319 msgid "Extension" msgstr "Klapka" #: ../dialer.c:341 msgid "Dial Command" msgstr "Příkaz pro vytáÄení" #: ../export_gui.c:121 msgid "File Browser" msgstr "ProhlížeÄ souborů" #. Label for instructions #: ../export_gui.c:273 msgid "Select records to be exported" msgstr "Vyberte záznamy, které exportovat" #: ../export_gui.c:275 msgid "Use Ctrl and Shift Keys" msgstr "Použijte klávesy Ctrl a Shift" #. Import button #: ../import_gui.c:300 ../import_gui.c:369 ../import_gui.c:426 #: ../import_gui.c:471 ../jpilot.c:383 msgid "Import" msgstr "Importovat" #: ../import_gui.c:317 #, c-format msgid "Record was marked as private" msgstr "Záznam byl oznaÄen jako soukromý" #: ../import_gui.c:319 #, c-format msgid "Record was not marked as private" msgstr "Záznam nebyl oznaÄen jako soukromý" #: ../import_gui.c:328 #, c-format msgid "Category before import was: [%s]" msgstr "Kategorie pÅ™ed importem byla: [%s]" #: ../import_gui.c:336 #, c-format msgid "Record will be put in category [%s]" msgstr "Záznam bude umístÄ›n do kategorie [%s]" #. Import All button #: ../import_gui.c:376 msgid "Import All" msgstr "Importovat vÅ¡e" #. Skip button #: ../import_gui.c:383 msgid "Skip" msgstr "PÅ™eskoÄit" #: ../import_gui.c:457 ../install_gui.c:427 msgid "To change to a hidden directory type it below and hit TAB" msgstr "Pro pÅ™epnutí do skrytého adresáře napiÅ¡te jeho jméno a stisknÄ›te TAB" #: ../import_gui.c:484 msgid "Import File Type" msgstr "Typ importovaného souboru" #: ../install_gui.c:364 #, fuzzy msgid "Files to install" msgstr "Soubory, které instalovat" #: ../install_gui.c:372 msgid "Install" msgstr "Instalovat" #: ../install_user.c:116 ../install_user.c:218 #, fuzzy msgid "Install User" msgstr "/Soubor/Instalovat uživatele" #: ../install_user.c:137 msgid "" "A PalmOS(c) device needs a user name and a user ID in order to sync properly." msgstr "" #: ../install_user.c:144 msgid "" "If you want to sync more than 1 PalmOS(c) device each one should have a " "different ID and preferably a different user name." msgstr "" #. Instruction label #: ../install_user.c:166 msgid "Most people choose their name or nickname for the user name." msgstr "" #: ../install_user.c:174 ../restore_gui.c:276 msgid "User Name" msgstr "Jméno uživatele" #: ../install_user.c:184 msgid "The ID should be a random number." msgstr "" #: ../install_user.c:192 ../restore_gui.c:295 msgid "User ID" msgstr "ID uživatele" #: ../jpilot.c:317 msgid "Print" msgstr "Tisk" #: ../jpilot.c:318 msgid "There is no print support for this conduit." msgstr "Tento modul nepodporuje tisk." #: ../jpilot.c:384 msgid "There is no import support for this conduit." msgstr "Tento modul nepodporuje import." #: ../jpilot.c:428 msgid "There is no export support for this conduit." msgstr "Tento modul nepodporuje export." #: ../jpilot.c:657 #, fuzzy msgid " Cancelling HotSync\n" msgstr "ZruÅ¡it synchronizaci" #. ------------------------------------------- #: ../jpilot.c:673 #, fuzzy msgid "" "This handheld does not have the same user name or user ID\n" "as the one that was synced the last time.\n" "Syncing could have unwanted effects including data loss.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Tento palm nemá stejné jméno uživatele nebo\n" "ID uživatele jako ten, který byl synchronizován\n" "minule. Synchronizace může mít nežádoucí důsledky.\n" "Pokud si nejste jisti, pÅ™eÄtÄ›te si příruÄku uživatele." #. ------------------------------------------- #: ../jpilot.c:680 #, fuzzy msgid "" "This handheld has a NULL user ID.\n" "Every handheld must have a unique user ID in order to sync properly.\n" "If the handheld has been hard reset, \n" " use restore from the menu to restore it.\n" "Otherwise, to add a new user name and ID\n" " use install-user from the menu.\n" "\n" "Read the user manual if you are uncertain." msgstr "" "Tent palm má id uživatele NULL.\n" "Každý palm musí pro správnou synchronizaci mít jedineÄné id uživatele.\n" "Pokud byl tvrdÄ› resetován, obnovte jej použitím obnovit z menu\n" "nebo použijte pilot-xfer.\n" "Jméno uživatele a ID pÅ™idejte použitím nástroje install-user v příkazovém " "řádku,\n" "nebo použijte install-user v menu\n" "Pokud si nejste jisti, pÅ™eÄtÄ›te si příruÄku uživatele." #: ../jpilot.c:688 msgid "Cancel Sync" msgstr "ZruÅ¡it synchronizaci" #: ../jpilot.c:688 msgid "Sync Anyway" msgstr "PÅ™esto synchronizovat" #: ../jpilot.c:697 ../jpilot.c:701 msgid "Sync Problem" msgstr "Problém pÅ™i synchronizaci" #: ../jpilot.c:932 ../jpilot.c:1787 msgid " User: " msgstr " Uživatel: " #: ../jpilot.c:944 msgid "Unknown command from sync process\n" msgstr "Neznámý příkaz od procesu synchronizace\n" #: ../jpilot.c:963 ../Expense/expense.c:527 ../KeyRing/keyring.c:1870 #: ../SyncTime/synctime.c:59 #, c-format msgid "About %s" msgstr "O %s" #: ../jpilot.c:1107 msgid "/_File" msgstr "/_Soubor" #: ../jpilot.c:1108 msgid "/File/tear" msgstr "/Soubor/tear" #: ../jpilot.c:1109 msgid "/File/_Find" msgstr "/Soubor/_Hledat" #: ../jpilot.c:1110 ../jpilot.c:1116 ../jpilot.c:1119 msgid "/File/sep1" msgstr "/Soubor/sep1" #: ../jpilot.c:1111 msgid "/File/_Install" msgstr "/Soubor/_Instalovat" #: ../jpilot.c:1112 msgid "/File/Import" msgstr "/Soubor/Importovat" #: ../jpilot.c:1113 msgid "/File/Export" msgstr "/Soubor/Exportovat" #: ../jpilot.c:1114 ../jpilot.c:2192 msgid "/File/Preferences" msgstr "/Soubor/Nastavení" #: ../jpilot.c:1115 msgid "/File/_Print" msgstr "/Soubor/_Tisk" #: ../jpilot.c:1117 msgid "/File/Install User" msgstr "/Soubor/Instalovat uživatele" #: ../jpilot.c:1118 msgid "/File/Restore Handheld" msgstr "/Soubor/Obnovit handheld" #: ../jpilot.c:1120 msgid "/File/_Quit" msgstr "/Soubor/U_konÄit" #: ../jpilot.c:1121 msgid "/_View" msgstr "/_Zobrazit" #: ../jpilot.c:1122 ../jpilot.c:1123 ../jpilot.c:1124 ../jpilot.c:1370 msgid "/View/Hide Private Records" msgstr "/Zobrazit/Skrýt soukromé záznamy" #: ../jpilot.c:1123 ../jpilot.c:1373 msgid "/View/Show Private Records" msgstr "/Zobrazit/Zobrazovat soukromé záznamy" #: ../jpilot.c:1124 ../jpilot.c:1376 msgid "/View/Mask Private Records" msgstr "/Zobrazit/Maskovat soukromé záznamy" #: ../jpilot.c:1125 msgid "/View/sep1" msgstr "/Zobrazit/sep1" #: ../jpilot.c:1126 msgid "/View/Datebook" msgstr "/Zobrazit/Diář" #: ../jpilot.c:1127 msgid "/View/Addresses" msgstr "/Zobrazit/Kontakty" #: ../jpilot.c:1128 msgid "/View/Todos" msgstr "/Zobrazit/Úkoly" #: ../jpilot.c:1129 msgid "/View/Memos" msgstr "/Zobrazit/Poznámky" #: ../jpilot.c:1130 ../jpilot.c:1261 msgid "/_Plugins" msgstr "/_Moduly" #: ../jpilot.c:1132 msgid "/_Web" msgstr "/_WWW" #. web #: ../jpilot.c:1133 msgid "/Web/Netscape" msgstr "/WWW/Netscape" #: ../jpilot.c:1137 msgid "/Web/Mozilla" msgstr "/WWW/Mozilla" #: ../jpilot.c:1142 msgid "/Web/Galeon" msgstr "/WWW/Galeon" #: ../jpilot.c:1147 msgid "/Web/Opera" msgstr "/WWW/Opera" #: ../jpilot.c:1151 msgid "/Web/GnomeUrl" msgstr "/WWW/GnomeUrl" #: ../jpilot.c:1153 msgid "/Web/Lynx" msgstr "/WWW/Lynx" #: ../jpilot.c:1155 msgid "/Web/Links" msgstr "/WWW/Links" #: ../jpilot.c:1157 msgid "/Web/W3M" msgstr "/WWW/W3M" #: ../jpilot.c:1159 msgid "/Web/Konqueror" msgstr "/WWW/Konqueror" #: ../jpilot.c:1162 msgid "/_Help" msgstr "/_NápovÄ›da" #: ../jpilot.c:1163 #, fuzzy msgid "/Help/About J-Pilot" msgstr "/NápovÄ›da/J-Pilot" #: ../jpilot.c:1229 #, c-format msgid "/_Plugins/%s" msgstr "/_Moduly/%s" #: ../jpilot.c:1239 #, c-format msgid "/_Help/%s" msgstr "/_NápovÄ›da/%s" #: ../jpilot.c:1593 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" #: ../jpilot.c:1636 ../jpilot-sync.c:169 msgid "Not loading plugins.\n" msgstr "NenaÄítám zásuvné moduly.\n" #: ../jpilot.c:1640 msgid "Ignoring all alarms.\n" msgstr "Ignoruji vÅ¡echna upozornÄ›ní.\n" #: ../jpilot.c:1644 msgid "Ignoring past alarms.\n" msgstr "Ignoruji minulá upozornÄ›ní.\n" #: ../jpilot.c:1732 ../jpilot.c:1740 msgid "Unable to open pipe\n" msgstr "Nemohu otevřít rouru\n" #: ../jpilot.c:1949 #, fuzzy msgid "Show private records Ctrl+Z" msgstr "Zobrazovat soukromé záznamy Ctrl-Z" #: ../jpilot.c:1954 #, fuzzy msgid "Hide private records Ctrl+Z" msgstr "Skrýt soukromé záznamy Ctrl-Z" #: ../jpilot.c:1959 #, fuzzy msgid "Mask private records Ctrl+Z" msgstr "Maskovat soukromé záznamy Ctrl-Z" #: ../jpilot.c:1971 #, fuzzy msgid "Sync your palm to the desktop Ctrl+Y" msgstr "Synchronizovat váš palm s desktopem Ctrl-Y" #: ../jpilot.c:1983 #, fuzzy msgid "Stop Sync process" msgstr "Synchronizovat kontakty" #: ../jpilot.c:1995 msgid "" "Sync your palm to the desktop\n" "and then do a backup" msgstr "" "Synchronizovat palm s desktopem\n" "a pak provést zálohu" #: ../jpilot.c:2143 msgid "Datebook/Go to Today" msgstr "Diář/Jít na dneÅ¡ek" #: ../jpilot.c:2144 msgid "Address Book" msgstr "Kontakty" #: ../jpilot.c:2145 msgid "ToDo List" msgstr "Seznam úkolů" #: ../jpilot.c:2146 msgid "Memo Pad" msgstr "Poznámky" #: ../jpilot.c:2174 msgid "Do it now" msgstr "UdÄ›lat to teÄ" #: ../jpilot.c:2174 msgid "Remind me later" msgstr "PÅ™ipomeň mi to pozdÄ›ji" #: ../jpilot.c:2174 msgid "Don't tell me again!" msgstr "Už mi to neříkej!" #: ../jpilot.c:2187 #, fuzzy, c-format msgid "" "J-Pilot uses the GTK2 graphical toolkit. This version of the toolkit uses " "UTF-8 to encode characters.\n" "You should select a UTF-8 charset so that you can see non-ASCII characters " "(accents for example).\n" "\n" "Go to the menu \"%s\" and change the \"%s\"." msgstr "" "J-Pilot používá grafický toolkit GTK2. Tato verze toolkit používá pro " "kódování znaků UTF-8.\n" "MÄ›li byste zvolit znakovou sadu UTF-8, abyste mohli vidÄ›t ne-ASCII znaky " "(napÅ™. diakritiku).\n" "\n" #. Character Set #: ../jpilot.c:2192 ../prefs_gui.c:509 #, fuzzy msgid "Character Set" msgstr "Znaková sada " #: ../jpilot.c:2194 msgid "Select a UTF-8 encoding" msgstr "Zvolit kódování UTF-8" #: ../jpilot-dump.c:92 #, fuzzy, c-format msgid " +D +A +T +M format like date +format.\n" msgstr "" " +B +M +A +T formát jako date +format (pro více informací použijte -?).\n" #: ../jpilot-dump.c:93 #, fuzzy, c-format msgid " -v display version and exit\n" msgstr " -v zobrazí verzi a skonÄí.\n" #: ../jpilot-dump.c:94 ../jpilot-sync.c:66 ../utils.c:1872 #, fuzzy, c-format msgid " -h display help text\n" msgstr " -h zobrazí nápovÄ›du a skonÄí.\n" #: ../jpilot-dump.c:95 #, fuzzy, c-format msgid " -f display help for format codes\n" msgstr " -h zobrazí nápovÄ›du a skonÄí.\n" #: ../jpilot-dump.c:96 #, fuzzy, c-format msgid " -D dump DateBook\n" msgstr " -B vypsat dateBook.\n" #: ../jpilot-dump.c:97 #, c-format msgid " -i dump DateBook in iCalendar format\n" msgstr "" #: ../jpilot-dump.c:98 #, fuzzy, c-format msgid " -N dump appts for today in DateBook\n" msgstr " -N vypsat akce dnes v dateBook.\n" #: ../jpilot-dump.c:99 #, fuzzy, c-format msgid " -NYYYY/MM/DD dump appts on YYYY/MM/DD in DateBook\n" msgstr " -NRRRR/MM/DD vypsat akce dne DD.MM:RRRR v dateBook.\n" #: ../jpilot-dump.c:100 #, fuzzy, c-format msgid " -A dump Address book\n" msgstr " -A vypsat Kontakty.\n" #: ../jpilot-dump.c:101 #, fuzzy, c-format msgid " -T dump ToDo list as CSV\n" msgstr " -T vypsat Seznam úkolů jako CSV.\n" #: ../jpilot-dump.c:102 #, fuzzy, c-format msgid " -M dump Memos\n" msgstr " -M vypsat Poznámky.\n" #: ../jpilot-dump.c:163 #, c-format msgid "" "Warning: Host character encoding is not UTF-8 based.\n" "Exported ical file may not be standards-compliant\n" msgstr "" #: ../jpilot-merge.c:161 ../jpilot-merge.c:167 #, fuzzy, c-format msgid "%s: Unable to open file:%s\n" msgstr "Nemohu otevřít soubor: %s\n" #: ../jpilot-merge.c:269 #, c-format msgid "Records read from pdb = %d\n" msgstr "" #: ../jpilot-merge.c:270 #, c-format msgid "Records added = %d\n" msgstr "" #: ../jpilot-merge.c:271 #, c-format msgid "Records deleted = %d\n" msgstr "" #: ../jpilot-merge.c:272 #, c-format msgid "Records modified = %d\n" msgstr "" #: ../jpilot-merge.c:273 #, c-format msgid "Records written = %d\n" msgstr "" #: ../jpilot-merge.c:291 #, c-format msgid "Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n" msgstr "" #: ../jpilot-merge.c:292 #, c-format msgid " This program will merge an unsynced records file (pc3)\n" msgstr "" #: ../jpilot-merge.c:293 #, c-format msgid "" " into the corresponding palm database (pdb) file.\n" "\n" msgstr "" #: ../jpilot-merge.c:294 #, c-format msgid " WARNING: Only run this utility if you understand the consequences!\n" msgstr "" #: ../jpilot-merge.c:295 #, c-format msgid " The merge will leave your databases in an unsync-able state.\n" msgstr "" #: ../jpilot-merge.c:296 #, c-format msgid "" " It is intended for cases where J-pilot is being used as a standalone PIM\n" msgstr "" #: ../jpilot-merge.c:297 #, c-format msgid " and where no syncing occurs to physical hardware.\n" msgstr "" #: ../jpilot-merge.c:298 #, c-format msgid " WARNING: Make a backup copy of your databases before proceeding.\n" msgstr "" #: ../jpilot-merge.c:299 #, c-format msgid "" " It is quite simple to destroy your databases by accidentally merging\n" msgstr "" #: ../jpilot-merge.c:300 #, c-format msgid " address records into datebook databases, etc.\n" msgstr "" #: ../jpilot-sync.c:64 #, fuzzy, c-format msgid "" " J-Pilot preferences are read to get sync info such as port, rate, number of " "backups, etc.\n" msgstr "" " Nastavení J-Pilot jsou Ätena pro získání portu, rychlosti, poÄtu záloh " "atd.\n" #: ../jpilot-sync.c:65 ../utils.c:1871 #, fuzzy, c-format msgid " -v display version and compile options\n" msgstr " -v zobrazí verzi a pÅ™epínaÄe pÅ™i pÅ™ekladu a skonÄí.\n" #: ../jpilot-sync.c:67 ../utils.c:1873 #, fuzzy, c-format msgid " -d display debug info to stdout\n" msgstr " -d zobrazuje ladicí informace na stdout.\n" #: ../jpilot-sync.c:68 #, fuzzy, c-format msgid " -P skip loading plugins\n" msgstr "NenaÄítám zásuvné moduly.\n" #: ../jpilot-sync.c:69 #, c-format msgid " -b sync, and then do a backup\n" msgstr "" #: ../jpilot-sync.c:70 #, fuzzy, c-format msgid " -l loop, otherwise sync once and exit\n" msgstr " -l = opakovat, jinak synchronizovat jednou a skonÄit.\n" #: ../jpilot-sync.c:71 #, fuzzy, c-format msgid " -p {port} use this port to sync on instead of default\n" msgstr "" " -p {port} = Použít pro synchronizaci tento port místo Ätení nastavení.\n" #: ../jpilot-sync.c:219 #, fuzzy, c-format msgid "Error: connecting to port %s\n" msgstr "Chyba pÅ™i otevírání souboru: %s\n" #: ../jpilot-sync.c:223 #, c-format msgid "Error: pi_listen\n" msgstr "" #: ../jpilot-sync.c:227 #, fuzzy, c-format msgid "Error: opening conduit to handheld\n" msgstr "Chyba pÅ™i otevírání souboru: next_id\n" #: ../jpilot-sync.c:231 #, c-format msgid "Error: pi_accept\n" msgstr "" #: ../jpilot-sync.c:235 ../jpilot-sync.c:263 #, fuzzy, c-format msgid "Error: " msgstr "Chyba" #: ../jpilot-sync.c:236 #, c-format msgid "This handheld does not have the same user name.\n" msgstr "" #: ../jpilot-sync.c:237 ../jpilot-sync.c:251 #, c-format msgid "as the one that was synced the last time.\n" msgstr "" #: ../jpilot-sync.c:239 #, c-format msgid "" "Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:241 ../jpilot-sync.c:254 #, c-format msgid " COPILOT_HOME" msgstr "" #: ../jpilot-sync.c:243 ../jpilot-sync.c:256 #, c-format msgid " JPILOT_HOME" msgstr "" #: ../jpilot-sync.c:245 ../jpilot-sync.c:258 #, fuzzy, c-format msgid " environment variable can be used to sync different handhelds,\n" msgstr "VaÅ¡e promÄ›nná prostÅ™edí HOME je na mÄ› moc dlouhá\n" #: ../jpilot-sync.c:246 ../jpilot-sync.c:259 #, c-format msgid " to different directories for the same UNIX user name.\n" msgstr "" #: ../jpilot-sync.c:250 #, c-format msgid "This handheld does not have the same user ID.\n" msgstr "" #: ../jpilot-sync.c:252 #, c-format msgid "" " Syncing with different handhelds to the same directory can destroy data.\n" msgstr "" #: ../jpilot-sync.c:264 #, c-format msgid "This handheld has a NULL user ID.\n" msgstr "" #: ../jpilot-sync.c:265 #, c-format msgid "Every handheld must have a unique user ID in order to sync properly.\n" msgstr "" #: ../jpilot-sync.c:266 #, c-format msgid "If the handheld has been hard reset, \n" msgstr "" #: ../jpilot-sync.c:267 #, c-format msgid " use restore from within " msgstr "" #: ../jpilot-sync.c:268 #, c-format msgid "Otherwise, to add a new user name and ID\n" msgstr "" #: ../jpilot-sync.c:269 #, c-format msgid " use \"install-user %s name numeric_id\"\n" msgstr "" #: ../jpilot-sync.c:273 #, c-format msgid "Error: sync returned error %d\n" msgstr "" #: ../libplugin.c:62 ../utils.c:1052 msgid "" "This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n" msgstr "" "Tento záznam již byl odstranÄ›n.\n" "Bude z Palmu odstranÄ›n pÅ™i příští synchronizaci.\n" #: ../libplugin.c:71 ../libplugin.c:108 ../utils.c:1062 ../utils.c:1104 msgid "Unable to open PC records file\n" msgstr "Nemohu otevřít soubor záznamů PC\n" #: ../libplugin.c:77 ../utils.c:1069 msgid "Couldn't find record to delete\n" msgstr "Nemohu najít záznam, který odstranit\n" #: ../libplugin.c:95 ../utils.c:1089 #, c-format msgid "Unknown header version %d\n" msgstr "Neznámá verze hlaviÄky %d\n" #: ../libplugin.c:180 #, c-format msgid "%s:%d Error opening file: %s\n" msgstr "%s:%d Chyba pÅ™i otevírání souboru: %s\n" #: ../libplugin.c:186 ../libplugin.c:215 ../sync.c:1731 ../todo.c:100 #, c-format msgid "%s:%d Error reading file: %s\n" msgstr "%s:%d Chyba pÅ™i Ätení souboru: %s\n" #: ../libplugin.c:338 ../libplugin.c:396 ../utils.c:2121 ../utils.c:2134 #, c-format msgid "Error opening file: %s\n" msgstr "Chyba pÅ™i otevírání souboru: %s\n" #: ../libplugin.c:524 #, c-format msgid "Error reading %s 5\n" msgstr "Chyba pÅ™i Ätení %s 5\n" #: ../libplugin.c:799 msgid "Error reading PC file 1\n" msgstr "Chyba pÅ™i Ätení souboru PC 1\n" #: ../libplugin.c:815 msgid "Error reading PC file 2\n" msgstr "Chyba pÅ™i Ätení souboru PC 2\n" #: ../libplugin.c:921 #, c-format msgid "Unknown PC header version = %d\n" msgstr "Neznámá verze hlaviÄky PC = %d\n" #: ../log.c:98 #, c-format msgid "Unable to open log file, giving up.\n" msgstr "Nemohu otevřít soubor záznamu, vzdávám to.\n" #: ../log.c:108 #, c-format msgid "Unable to open log file\n" msgstr "Nemohu otevřít soubor záznamu\n" #: ../memo_gui.c:302 msgid "Memo text > 65535, truncating\n" msgstr "Text poznámky > 65535, zkracuji\n" #: ../memo_gui.c:330 #, c-format msgid "Imported Memo %s\n" msgstr "Importována poznámka %s\n" #: ../memo_gui.c:402 msgid "File doesn't appear to be memopad.dat format\n" msgstr "Soubor zÅ™ejmÄ› není ve formátu memopad.dat\n" #: ../memo_gui.c:473 msgid "DAT/MPA (Palm Archive Formats)" msgstr "" #: ../memo_gui.c:558 #, c-format msgid "" "Memo exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:561 #, c-format msgid "" "Memos exported from %s %s on %s\n" "\n" msgstr "" #: ../memo_gui.c:597 ../memo_gui.c:679 #, c-format msgid "Can't export memo %d\n" msgstr "Nemohu exportovat poznámku %d\n" #: ../memo_gui.c:641 #, fuzzy, c-format msgid "Memo: %ld\n" msgstr "Poznámky" #: ../memo_gui.c:647 #, c-format msgid "----- Start of Memo -----\n" msgstr "" #: ../memo_gui.c:649 #, c-format msgid "" "\n" "----- End of Memo -----\n" "\n" msgstr "" #: ../memo_gui.c:748 ../KeyRing/keyring.c:2296 msgid "KeePassX XML" msgstr "" #: ../monthview_gui.c:436 msgid "Monthly View" msgstr "Pohled na mÄ›síc" #: ../monthview_gui.c:478 msgid "Last month Alt+LeftArrow" msgstr "" #: ../monthview_gui.c:506 msgid "Next month Alt+RightArrow" msgstr "" #: ../otherconv.c:74 #, c-format msgid "%s: error exit from g_iconv_close(%s)\n" msgstr "" #: ../otherconv.c:199 #, c-format msgid "%s:%s g_convert_with_iconv error: %s, buff: %s\n" msgstr "" #: ../otherconv.c:201 msgid "last char truncated" msgstr "" #: ../otherconv.c:278 #, c-format msgid "UTF_to_other: %s\n" msgstr "" #: ../otherconv.c:292 #, c-format msgid "iconv: unconvertible sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:296 #, c-format msgid "iconv: incomplete UTF-8 sequence at place %d in '%s'\n" msgstr "" #: ../otherconv.c:299 #, c-format msgid "iconv: buffer filled. stopped at place %d in '%s'\n" msgstr "" #: ../otherconv.c:302 #, c-format msgid "iconv: unexpected error at place %d in '%s'\n" msgstr "" #: ../password.c:281 msgid "Palm Password" msgstr "Heslo Palmu" #: ../password.c:306 msgid "Incorrect, Reenter PalmOS Password" msgstr "Nesprávné, vložte znovu heslo PalmOS" #: ../password.c:308 msgid "Enter PalmOS Password" msgstr "Vložte heslo PalmOS" #: ../pidfile.c:69 msgid "removing stale pidfile\n" msgstr "" #: ../pidfile.c:95 #, fuzzy, c-format msgid "create pidfile failed: %s\n" msgstr "Chyba pÅ™i Ätení souboru: %s\n" #: ../pidfile.c:96 msgid "Warning: hotplug syncing disabled.\n" msgstr "" #: ../plugins.c:88 ../plugins.c:201 ../restore_gui.c:131 msgid "infinite loop" msgstr "nekoneÄná smyÄka" #: ../plugins.c:214 #, c-format msgid "While reading %s%s line 1:[%s]\n" msgstr "PÅ™i Ätení %s%s řádek 1:[%s]\n" #: ../plugins.c:215 msgid "Wrong Version\n" msgstr "Å patná verze\n" #: ../plugins.c:216 msgid "Check preferences->conduits\n" msgstr "Zkontrolujte nastavení->moduly\n" #: ../plugins.c:272 #, c-format msgid "" "Open failed on plugin [%s]\n" " error [%s]\n" msgstr "" "OtevÅ™ení selhalo u zásuvného modulu [%s]\n" " chyba [%s]\n" #: ../plugins.c:289 ../plugins.c:314 #, c-format msgid " plugin is invalid: [%s]\n" msgstr " zásuvný modul není platný: [%s]\n" #: ../plugins.c:297 #, c-format msgid "Plugin:[%s]\n" msgstr "Zásuvný modul:[%s]\n" #: ../plugins.c:298 #, c-format msgid "This plugin is version (%d.%d).\n" msgstr "Tento zásuvný modul má verzi (%d.%d).\n" #: ../plugins.c:300 msgid "It is too old to work with this version of J-Pilot.\n" msgstr "Je moc starý pro práci s touto verzí J-Pilot.\n" #: ../prefs.c:418 msgid "%B %d, %Y" msgstr "%B %d, %Y" #: ../prefs.c:419 msgid "%d %B %Y" msgstr "%d %B %Y" #: ../prefs.c:420 msgid "%d. %B %Y" msgstr "%d. %B %Y" #: ../prefs.c:421 msgid "%d %B, %Y" msgstr "%d %B, %Y" #: ../prefs.c:422 msgid "%Y. %B. %d" msgstr "%Y. %B. %d" #: ../prefs.c:423 msgid "%Y %B %d" msgstr "%Y %B %d" #: ../prefs_gui.c:452 msgid "Preferences" msgstr "Nastavení" #: ../prefs_gui.c:483 msgid "Locale" msgstr "Locale" #: ../prefs_gui.c:485 msgid "Settings" msgstr "Nastavení" #: ../prefs_gui.c:487 msgid "Datebook" msgstr "Diář" #: ../prefs_gui.c:491 msgid "ToDo" msgstr "Úkoly" #: ../prefs_gui.c:493 msgid "Memo" msgstr "Poznámky" #: ../prefs_gui.c:495 msgid "Alarms" msgstr "UpozornÄ›ní" #: ../prefs_gui.c:497 msgid "Conduits" msgstr "Moduly" #. Shortdate #: ../prefs_gui.c:522 #, fuzzy msgid "Short date format" msgstr "Formát krátkého data " #. Longdate #: ../prefs_gui.c:535 #, fuzzy msgid "Long date format" msgstr "Formát dlouhého data " #. Time #: ../prefs_gui.c:548 #, fuzzy msgid "Time format" msgstr "Formát Äasu " #. GTK colors file #: ../prefs_gui.c:568 #, fuzzy msgid "GTK color theme file" msgstr "Můj soubor barev GTK je " #. Port #: ../prefs_gui.c:581 #, fuzzy msgid "Sync Port" msgstr "Problém pÅ™i synchronizaci" #. Serial Rate #: ../prefs_gui.c:605 msgid "Serial Rate" msgstr "" #. Number of backups #: ../prefs_gui.c:625 msgid "Number of backups to be archived" msgstr "PoÄet záloh, které archivovat" #. Show deleted files check box #: ../prefs_gui.c:643 msgid "Show deleted records (default NO)" msgstr "Zobrazovat odstranÄ›né záznamy (implicitnÄ› NE)" #. Show modified files check box #: ../prefs_gui.c:647 msgid "Show modified deleted records (default NO)" msgstr "Zobrazovat zmÄ›nÄ›né odstranÄ›né záznamy (implicitnÄ› NE)" #: ../prefs_gui.c:652 msgid "Ask confirmation for file installation (J-Pilot -> PDA) (default YES)" msgstr "" "Žádat o potvrzení pÅ™ed instalací souborů (J-Pilot -> PDA) (implicitnÄ› ANO)" #. Show tooltips check box #: ../prefs_gui.c:656 #, fuzzy msgid "Show popup tooltips (default YES) (requires restart)" msgstr "Zobrazovat vyskakovací tipy (implicitnÄ› ANO)" #: ../prefs_gui.c:666 msgid "Use Datebook database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:669 msgid "Use Calendar database (Palm OS > 5.2)" msgstr "" #. Show highlight days check box #: ../prefs_gui.c:695 msgid "Highlight calendar days with appointments" msgstr "Zvýrazňovat v kalendáři dny s akcí" #. Highlight today on month and week view #: ../prefs_gui.c:700 msgid "Annotate today in day, week, and month views" msgstr "OznaÄit dneÅ¡ek v pohledech na den, týden a mÄ›síc" #. Show number of years on anniversaries in month and week view #: ../prefs_gui.c:704 msgid "Append years on anniversaries in day, week, and month views" msgstr "PÅ™ipojit roky k výroÄím v pohledech na den, týden a mÄ›síc" #. Show use DateBk check box #: ../prefs_gui.c:710 msgid "Use DateBk note tags" msgstr "Používat znaÄky poznámek DateBk" #: ../prefs_gui.c:713 msgid "DateBk support disabled in this build" msgstr "Podpora DateBk v tomto pÅ™eložení zakázána" #: ../prefs_gui.c:725 msgid "Use Address database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:728 msgid "Use Contacts database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:757 msgid "Mail Command" msgstr "Příkaz pro poÅ¡tu" #: ../prefs_gui.c:771 #, c-format msgid "%s is replaced by the e-mail address" msgstr "%s je nahrazeno Äasem e-mailovou adresou" #: ../prefs_gui.c:783 msgid "Use ToDo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:786 msgid "Use Task database (Palm OS > 5.2)" msgstr "" #. hide completed check box #: ../prefs_gui.c:813 msgid "Hide Completed ToDos" msgstr "Skrýt dokonÄené úkoly" #. hide todos not yet due check box #: ../prefs_gui.c:817 msgid "Hide ToDos not yet due" msgstr "Skrýt úkoly, které jeÅ¡tÄ› nemají být hotovy" #. record todo completion date check box #: ../prefs_gui.c:821 msgid "Record Completion Date" msgstr "Zaznamenat datum dokonÄení" #. Use Manana check box #: ../prefs_gui.c:826 msgid "Use Manana database" msgstr "Použít databázi Manana" #: ../prefs_gui.c:834 msgid "Use default number of days due" msgstr "Použít implicitní poÄet zbývajících dnů" #: ../prefs_gui.c:856 msgid "Use Memo database (Palm OS < 5.2.1)" msgstr "" #: ../prefs_gui.c:859 msgid "Use Memos database (Palm OS > 5.2)" msgstr "" #: ../prefs_gui.c:862 #, fuzzy msgid "Use Memo32 database (pedit32)" msgstr "Používat Memo32 (pedit32)" #: ../prefs_gui.c:902 msgid "External Editor" msgstr "" #: ../prefs_gui.c:915 msgid "Use Ctrl-E inside a memo to launch external editor for memo text" msgstr "" #. ******************************************************************** #. Alarms preference tab #. Open alarm windows check box #: ../prefs_gui.c:923 msgid "Open alarm windows for appointment reminders" msgstr "Otevírat okna s upozornÄ›ním pro pÅ™ipomínání akcí" #. Execute alarm command check box #: ../prefs_gui.c:927 msgid "Execute this command" msgstr "Spustit tento příkaz" #. Shell warning label #: ../prefs_gui.c:931 msgid "WARNING: executing arbitrary shell commands can be dangerous!!!" msgstr "VAROVÃNÃ: provádÄ›ní libovolných příkazů shellu může být nebezpeÄné!!!" #: ../prefs_gui.c:939 msgid "Alarm Command" msgstr "Příkaz pro upozornÄ›ní" #: ../prefs_gui.c:952 msgid "%t is replaced with the alarm time" msgstr "%t je nahrazeno Äasem upozornÄ›ní" #: ../prefs_gui.c:956 #, c-format msgid "%d is replaced with the alarm date" msgstr "%d je nahrazeno datem upozornÄ›ní" #: ../prefs_gui.c:961 msgid "%D is replaced with the alarm description" msgstr "%D je nahrazeno popisem upozornÄ›ní" #: ../prefs_gui.c:965 msgid "%N is replaced with the alarm note" msgstr "%N je nahrazeno poznámkou upozornÄ›ní" #: ../prefs_gui.c:969 msgid "%D (description substitution) is disabled in this build" msgstr "%D (nahrazení popisu) je v tomto pÅ™eložení zakázáno" #: ../prefs_gui.c:974 msgid "%N (note substitution) is disabled in this build" msgstr "%D (nahrazení poznámky) je v tomto pÅ™eložení zakázáno" #. ******************************************************************** #. Conduits preference tab #. Sync datebook check box #: ../prefs_gui.c:984 msgid "Sync datebook" msgstr "Synchronizovat diář" #. Sync address check box #: ../prefs_gui.c:988 msgid "Sync address" msgstr "Synchronizovat kontakty" #. Sync todo check box #: ../prefs_gui.c:992 msgid "Sync todo" msgstr "Synchronizovat úkoly" #. Sync memo check box #: ../prefs_gui.c:996 msgid "Sync memo" msgstr "Synchronizovat poznámky" #. Show sync Manana check box #: ../prefs_gui.c:1001 msgid "Sync Manana" msgstr "Synchronizovat Manana" #. Show use Japanese Kana extention check box #: ../prefs_gui.c:1007 msgid "Use J-OS (Not Japanese PalmOS:WorkPad/CLIE)" msgstr "Používat J-OS (Ne japonský PalmOS:WorkPad/CLIE)" #. Make a Sync checkbox for each plugin #: ../prefs_gui.c:1020 #, c-format msgid "Sync %s (%s)" msgstr "Synchronizovat %s (%s)" #: ../print_gui.c:183 msgid "Print Options" msgstr "Možnosti tisku" #: ../print_gui.c:196 msgid "Paper Size" msgstr "Velikost papíru" #: ../print_gui.c:212 msgid "Daily Printout" msgstr "Denní sestava" #: ../print_gui.c:218 msgid "Weekly Printout" msgstr "Týdenní sestava" #: ../print_gui.c:224 msgid "Monthly Printout" msgstr "MÄ›síÄní sestava" #: ../print_gui.c:264 #, fuzzy msgid "Selected record" msgstr "OdstranÄ›n záznam %s." #: ../print_gui.c:268 msgid "All records in this category" msgstr "VÅ¡echny záznamy této kategorie" #: ../print_gui.c:272 msgid "Print all records" msgstr "Vytisknout vÅ¡echny záznamy" #: ../print_gui.c:294 msgid "One record per page" msgstr "Jeden záznam na stránku" #: ../print_gui.c:310 #, fuzzy msgid "Blank lines between each record" msgstr " Prázdné řádky mezi záznamy" #. Print Command #: ../print_gui.c:319 msgid "Print Command (e.g. lpr, or cat > file.ps)" msgstr "Tiskový příkaz (napÅ™. lpr nebo cat > soubor.ps)" #: ../restore_gui.c:69 ../restore_gui.c:227 msgid "Restore Handheld" msgstr "Obnovit handheld" #: ../restore_gui.c:174 ../restore_gui.c:176 msgid "Unable to convert filename for GTK display\n" msgstr "" #: ../restore_gui.c:175 msgid "See console log to find which file will not be restored\n" msgstr "" #: ../restore_gui.c:177 #, fuzzy, c-format msgid "File %s will not be restored\n" msgstr "Soubory, které instalovat" #. Label for instructions #: ../restore_gui.c:244 msgid "To restore your handheld:" msgstr "Pro obnovení vaÅ¡eho handheldu:" #: ../restore_gui.c:247 #, fuzzy msgid "1. Choose the applications you wish to restore. The default is all." msgstr "" "1. ZavÅ™ete vÅ¡echny aplikace, které chcete obnovit. ImplicitnÄ› se obnovují " "vÅ¡echny." #: ../restore_gui.c:250 msgid "2. Enter the User Name and User ID." msgstr "2. Zadejte jméno uživatele a ID uživatele." #: ../restore_gui.c:253 msgid "3. Press the OK button." msgstr "3. StisknÄ›te tlaÄítko Budiž." #: ../restore_gui.c:256 msgid "This will overwrite data that is currently on the handheld." msgstr "To pÅ™epíše data, která momentálnÄ› jsou v handheldu." #: ../search_gui.c:142 msgid "datebook" msgstr "diář" #: ../search_gui.c:144 msgid "calendar" msgstr "" #: ../search_gui.c:231 msgid "address" msgstr "Kontakty" #: ../search_gui.c:233 msgid "contact" msgstr "" #: ../search_gui.c:302 msgid "todo" msgstr "úkoly" #: ../search_gui.c:359 msgid "memo" msgstr "poznámky" #: ../search_gui.c:361 #, fuzzy msgid "memos" msgstr "poznámky" #: ../search_gui.c:419 msgid "plugin ?" msgstr "zásuvný modul ?" #: ../search_gui.c:499 msgid "No records found" msgstr "Nenalezeny žádné záznamy" #: ../search_gui.c:598 msgid "Search" msgstr "Hledat" #. Search label #: ../search_gui.c:615 msgid "Search for: " msgstr "Hledat: " #. Case Sensitive checkbox #: ../search_gui.c:624 msgid "Case Sensitive" msgstr "RozliÅ¡ovat velikost písmen" #: ../sync.c:118 msgid "open lock file failed\n" msgstr "otevÅ™ení souboru zámku selhalo\n" #: ../sync.c:131 msgid "lock failed\n" msgstr "zamÄení selhalo\n" #: ../sync.c:136 #, c-format msgid "sync file is locked by pid %d\n" msgstr "soubor synchronizace je zamÄen pid %d\n" #: ../sync.c:175 msgid "unlock failed\n" msgstr "odemÄení selhalo\n" #: ../sync.c:180 #, c-format msgid "sync is locked by pid %d\n" msgstr "synchronizace je zamÄena pid %d\n" #: ../sync.c:418 #, fuzzy msgid "Check your sync port and settings\n" msgstr "Zkontrolujte svůj sériový port a nastavení\n" #: ../sync.c:677 msgid "Unable to read home dir\n" msgstr "Nemohu Äíst domovský adresář\n" #: ../sync.c:1085 ../sync.c:1423 #, c-format msgid "%s (Creator ID '%s') is up to date, fetch skipped.\n" msgstr "%s (ID tvůrce '%s') je aktuální, stahování pÅ™eskoÄeno.\n" #: ../sync.c:1089 ../sync.c:1427 #, c-format msgid "Fetching '%s' (Creator ID '%s')... " msgstr "Stahuji '%s' (ID tvůrce '%s')... " #: ../sync.c:1096 ../sync.c:1433 #, c-format msgid "Failed, unable to create file %s\n" msgstr "Selhalo, nemohu vytvoÅ™it soubor %s\n" #: ../sync.c:1100 ../sync.c:1438 #, c-format msgid "Failed, unable to back up database %s\n" msgstr "Selhalo, nemohu zazálohovat databázi %s\n" #: ../sync.c:1104 ../sync.c:1442 ../sync.c:1629 msgid "OK\n" msgstr "Budiž\n" #: ../sync.c:1304 #, c-format msgid "Skipping %s (Creator ID '%s')\n" msgstr "PÅ™eskakuji %s (ID tvůrce '%s')\n" #: ../sync.c:1498 #, c-format msgid "Installing %s " msgstr "Instaluji %s " #: ../sync.c:1504 ../sync.c:1540 #, c-format msgid "" "\n" "Unable to open file: '%s': %s!\n" msgstr "" "\n" "Nemohu otevřít soubor: '%s': %s!\n" #: ../sync.c:1508 #, c-format msgid "" "\n" "Unable to sync file: '%s': file corrupted?\n" msgstr "" "\n" "Nemohu synchronizovat soubor: '%s': poÅ¡kozený soubor?\n" #: ../sync.c:1524 #, fuzzy, c-format msgid "(Creator ID '%s')... " msgstr "(ID tvůrce je '%s')..." #: ../sync.c:1528 #, fuzzy, c-format msgid "(Creator ID '%s') " msgstr "(ID tvůrce je '%s')..." #: ../sync.c:1530 #, c-format msgid "(SDcard dir %s)... " msgstr "" #: ../sync.c:1562 ../sync.c:1575 ../sync.c:1590 ../sync.c:1603 #, c-format msgid "" "\n" "Unable to open file: %s\n" msgstr "" "\n" "Nemohu otevřít soubor: %s\n" #: ../sync.c:1615 #, c-format msgid "Install %s failed" msgstr "Instalace %s selhala" #: ../sync.c:1619 msgid "Failed.\n" msgstr "Chyba.\n" #: ../sync.c:1625 #, fuzzy, c-format msgid "Installed %s" msgstr "Nainstalováno %s " #: ../sync.c:1736 #, c-format msgid "%s:%d Error getting app info %s\n" msgstr "%s:%d Chyba pÅ™i získávání informace o aplikaci %s\n" #: ../sync.c:1742 ../sync.c:1772 #, c-format msgid "%s:%d Error unpacking app info %s\n" msgstr "%s:%d Chyba pÅ™i rozbalování informace o aplikaci %s\n" #: ../sync.c:1763 #, c-format msgid "Error reading appinfo block for %s\n" msgstr "Chyba pÅ™i Ätení bloku appinfo pro %s\n" #. Fix - need a func for this logging #: ../sync.c:2001 ../sync.c:2005 #, c-format msgid "Could not add category %s to remote.\n" msgstr "Nemohu pÅ™idat kategorii %s do vzdáleného.\n" #: ../sync.c:2002 ../sync.c:2008 #, c-format msgid "Too many categories on remote.\n" msgstr "PříliÅ¡ mnoho kategorií na vzdáleném.\n" #: ../sync.c:2003 ../sync.c:2011 #, c-format msgid "All records on desktop in %s will be moved to %s.\n" msgstr "VÅ¡echny záznamy na desktopu v %s budou pÅ™esunuty do %s.\n" #: ../sync.c:2106 ../sync.c:2824 #, c-format msgid "Syncing %s\n" msgstr "Synchronizuji %s\n" #: ../sync.c:2114 ../sync.c:2467 ../sync.c:2832 #, c-format msgid "Wrote an %s record." msgstr "Zapsal jsem záznam %s." #: ../sync.c:2116 ../sync.c:2469 ../sync.c:2834 #, c-format msgid "Writing an %s record failed." msgstr "Zápis záznamu %s selhal." #: ../sync.c:2118 ../sync.c:2471 ../sync.c:2836 #, c-format msgid "Deleting an %s record failed." msgstr "Odstraňování záznamu %s selhalo." #: ../sync.c:2120 ../sync.c:2473 ../sync.c:2838 #, c-format msgid "Deleted an %s record." msgstr "OdstranÄ›n záznam %s." #: ../sync.c:2122 ../sync.c:2475 #, fuzzy, c-format msgid "Sync Conflict: duplicated an %s record." msgstr "OdstranÄ›n záznam %s." #: ../sync.c:2125 ../sync.c:2478 ../sync.c:2841 #, c-format msgid "Wrote a %s record." msgstr "Zapsán záznam %s." #: ../sync.c:2127 ../sync.c:2480 ../sync.c:2843 #, c-format msgid "Writing a %s record failed." msgstr "Zápis záznamu %s selhal." #: ../sync.c:2129 ../sync.c:2482 ../sync.c:2845 #, c-format msgid "Deleting a %s record failed." msgstr "Odstraňování záznamu %s selhalo." #: ../sync.c:2131 ../sync.c:2484 ../sync.c:2847 #, c-format msgid "Deleted a %s record." msgstr "OdstranÄ›n záznam %s." #: ../sync.c:2133 ../sync.c:2486 #, c-format msgid "Sync Conflict: duplicated a %s record." msgstr "" #: ../sync.c:2237 ../sync.c:2567 #, c-format msgid "Sync Conflict: a %s record must be manually merged\n" msgstr "" #: ../sync.c:2368 ../sync.c:2708 msgid "" "dlp_DeleteRecord failed\n" "This could be because the record was already deleted on the Palm\n" msgstr "" "dlp_DeleteRecord selhalo\n" "To je možná protože záznam již byl na Palmu odstranÄ›n\n" #: ../sync.c:2937 msgid "Finished installing user information.\n" msgstr "Instalace informací o uživateli dokonÄena.\n" #: ../sync.c:3094 #, c-format msgid " Syncing on device %s\n" msgstr " Synchronizuji se zařízením %s\n" #: ../sync.c:3095 msgid " Press the HotSync button now\n" msgstr " TeÄ stisknÄ›te tlaÄítko HotSync\n" #: ../sync.c:3137 ../sync.c:3159 ../sync.c:3180 #, c-format msgid "Last Synced Username-->\"%s\"\n" msgstr "Jméno uživatele poslední synchronizace-->\"%s\"\n" #: ../sync.c:3138 ../sync.c:3160 ../sync.c:3181 #, c-format msgid "Last Synced UserID-->\"%d\"\n" msgstr "Poslední ID uživatele synchronizace-->\"%d\"\n" #: ../sync.c:3139 ../sync.c:3161 ../sync.c:3182 #, c-format msgid " This Username-->\"%s\"\n" msgstr " Toto jméno uživatele-->\"%s\"\n" #: ../sync.c:3140 ../sync.c:3162 ../sync.c:3183 #, c-format msgid " This User ID-->%d\n" msgstr " Toto ID uživatele-->\"%d\"\n" #: ../sync.c:3204 #, c-format msgid "Username is \"%s\"\n" msgstr "Jméno uživatele je \"%s\"\n" #: ../sync.c:3205 #, c-format msgid "User ID is %d\n" msgstr "ID uživatele je %d\n" #: ../sync.c:3207 #, c-format msgid "lastSyncPC = %d\n" msgstr "lastSyncPC = %d\n" #: ../sync.c:3208 #, c-format msgid "This PC = %lu\n" msgstr "Toto PC = %lu\n" #: ../sync.c:3232 msgid "Sync canceled\n" msgstr "Synchronizace pÅ™eruÅ¡ena\n" # FIXME: so don't make it translatable! #: ../sync.c:3255 msgid "Finished restoring handheld.\n" msgstr "Finished restoring handheld.\n" #: ../sync.c:3256 msgid "You may need to sync to update J-Pilot.\n" msgstr "You may need to sync to update J-Pilot.\n" #: ../sync.c:3278 msgid "Doing a fast sync.\n" msgstr "Provádím rychlou synchronizaci.\n" #: ../sync.c:3291 msgid "Doing a slow sync.\n" msgstr "Provádím pomalou synchronizaci.\n" #: ../sync.c:3366 msgid "Thank you for using J-Pilot." msgstr "DÄ›kujeme vám za použití J-Pilot." #: ../sync.c:3411 ../sync.c:3479 msgid "Finished.\n" msgstr "Finished.\n" #: ../sync.c:3446 #, c-format msgid "%s: sync process already in progress (process ID = %d)\n" msgstr "" #: ../sync.c:3447 #, c-format msgid "" "%s: press the HotSync button on the cradle\n" " or stop the sync by using the cancel sync button\n" " or stop the sync by typing \"kill %d\" at the command line\n" msgstr "" #: ../sync.c:3478 #, c-format msgid "Exiting with status %s\n" msgstr "KonÄím se stavem %s\n" #: ../todo.c:264 #, c-format msgid "ToDo description text > %d, truncating to %d\n" msgstr "Popis úkolu > %d, zkracuji na %d\n" #: ../todo.c:270 #, c-format msgid "ToDo note text > %d, truncating to %d\n" msgstr "Poznámka úkolu > %d, zkracuji na %d\n" #: ../todo_gui.c:159 msgid "Due Date" msgstr "Termín" #: ../todo_gui.c:532 msgid "File doesn't appear to be todo.dat format\n" msgstr "Soubor zÅ™ejmÄ› není ve formátu todo.dat\n" #: ../todo_gui.c:596 msgid "DAT/TDA (Palm Archive Formats)" msgstr "" #: ../todo_gui.c:688 #, c-format msgid "" "ToDo exported from %s %s on %s\n" "\n" msgstr "" #: ../todo_gui.c:726 #, c-format msgid "Can't export todo %d\n" msgstr "Nemohu exportovat úkol %d\n" #: ../todo_gui.c:766 #, fuzzy, c-format msgid "Due Date: None\n" msgstr "Termín" #: ../todo_gui.c:769 #, fuzzy, c-format msgid "Due Date: %s\n" msgstr "Termín" #: ../todo_gui.c:771 #, fuzzy, c-format msgid "Priority: %d\n" msgstr "Priorita: " #: ../todo_gui.c:772 #, fuzzy, c-format msgid "Completed: %s\n" msgstr "DokonÄeno" #: ../todo_gui.c:774 #, c-format msgid "Description: %s\n" msgstr "" #: ../todo_gui.c:777 #, c-format msgid "" "Note: %s\n" "\n" msgstr "" #: ../todo_gui.c:1610 msgid "Priority out of range\n" msgstr "Priorita mimo rozsah\n" #: ../todo_gui.c:1929 ../KeyRing/keyring.c:1308 #, c-format msgid "No date" msgstr "NeurÄen" #. Completed checkbox #: ../todo_gui.c:2411 msgid "Completed" msgstr "DokonÄeno" #: ../todo_gui.c:2418 #, fuzzy msgid "Priority:" msgstr "Priorita: " #: ../todo_gui.c:2420 msgid "Set priority Alt+#" msgstr "" #: ../todo_gui.c:2441 msgid "Date Due:" msgstr "Termín:" #: ../utils.c:330 msgid "Today" msgstr "DneÅ¡ek" #: ../utils.c:575 #, c-format msgid "Couldn't find empty DB file %s: %s\n" msgstr "Nemohu najít prázdný DB soubor %s: %s\n" #: ../utils.c:578 msgid " may not be installed.\n" msgstr " možná není nainstalován.\n" #. Can't create directory #: ../utils.c:613 ../utils.c:617 #, c-format msgid "Can't create directory %s\n" msgstr "Nemohu vytvoÅ™it adresář %s\n" #: ../utils.c:623 #, fuzzy, c-format msgid "%s is not a directory\n" msgstr "%s je adresář" #: ../utils.c:628 #, fuzzy, c-format msgid "Unable to get write permission for directory %s\n" msgstr "Nemohu zapisovat soubory do adresáře %s\n" #: ../utils.c:1328 ../utils.c:1352 msgid "Save Changed Record?" msgstr "Uložit zmÄ›nÄ›ný záznam?" #: ../utils.c:1329 ../utils.c:1353 msgid "Do you want to save the changes to this record?" msgstr "Chcete uložit zmÄ›ny tohoto záznamu?" #: ../utils.c:1334 ../utils.c:1358 msgid "Save New Record?" msgstr "Uložit nový záznam?" #: ../utils.c:1335 ../utils.c:1359 msgid "Do you want to save this new record?" msgstr "Chcete tento nový záznam uložit?" #: ../utils.c:1650 msgid "infinite loop, breaking\n" msgstr "nekoneÄná smyÄka, pÅ™eruÅ¡uji\n" #: ../utils.c:1874 #, fuzzy, c-format msgid " -p skip loading plugins\n" msgstr "NenaÄítám zásuvné moduly.\n" #: ../utils.c:1875 #, fuzzy, c-format msgid " -a ignore missed alarms since the last time program was run\n" msgstr "" " -a ignorovat upozornÄ›ní zmeÅ¡kaná od posledního spuÅ¡tÄ›ní tohoto programu.\n" #: ../utils.c:1876 #, fuzzy, c-format msgid " -A ignore all alarms past and future\n" msgstr " -A ignorovat vÅ¡echna upozornÄ›ní)); minulá i budoucí.\n" #: ../utils.c:1877 #, c-format msgid " -s start sync using existing instance of GUI\n" msgstr "" #: ../utils.c:1878 #, c-format msgid " -i iconify program immediately after launch\n" msgstr "" #: ../utils.c:1879 #, c-format msgid "" " -geometry {X geometry} use specified geometry for main window\n" "\n" msgstr "" #: ../utils.c:1880 #, fuzzy, c-format msgid " The PILOTPORT and PILOTRATE environment variables specify\n" msgstr " PromÄ›nné prostÅ™edí PILOPORT a PILOTRATE se používají pro urÄení\n" #: ../utils.c:1881 #, c-format msgid " which port to sync on, and at what speed.\n" msgstr " na kterém portu a jakou rychlostí synchronizovat.\n" #: ../utils.c:1882 #, c-format msgid " If PILOTPORT is not set then it defaults to /dev/pilot.\n" msgstr " Pokud PILOTPORT není nastaven, je implicitnÄ› /dev/pilot.\n" #: ../utils.c:1921 msgid "Error reading file" msgstr "Chyba pÅ™i Ätení souboru" #: ../utils.c:1973 msgid "Date compiled" msgstr "Datum pÅ™ekladu" #: ../utils.c:1974 msgid "Compiled with these options:" msgstr "PÅ™eložen s tÄ›mito pÅ™epínaÄi:" #: ../utils.c:1976 msgid "Installed Path" msgstr "Instalovaná cesta" #: ../utils.c:1978 msgid "pilot-link version" msgstr "verze pilot-link" #: ../utils.c:1982 msgid "USB support" msgstr "Podpora USB" #: ../utils.c:1983 ../utils.c:1986 ../utils.c:1992 ../utils.c:1998 #: ../utils.c:2004 ../utils.c:2010 ../utils.c:2015 msgid "yes" msgstr "ano" #: ../utils.c:1984 msgid "Private record support" msgstr "Podpora soukromých záznamů" #: ../utils.c:1988 ../utils.c:1994 ../utils.c:2000 ../utils.c:2006 #: ../utils.c:2012 msgid "no" msgstr "ne" #: ../utils.c:1990 msgid "Datebk support" msgstr "Podpora datebk" #: ../utils.c:1996 msgid "Plugin support" msgstr "Podpora zásuvných modulů" #: ../utils.c:2002 msgid "Manana support" msgstr "Podpora Manana" #: ../utils.c:2008 msgid "NLS support (foreign languages)" msgstr "Podpora NLS (cizí jazyky)" #: ../utils.c:2014 msgid "GTK2 support" msgstr "Podpora GTK2" #. No HOME var #: ../utils.c:2057 #, c-format msgid "Can't get HOME environment variable\n" msgstr "Nemohu získat promÄ›nnou prostÅ™edí HOME\n" #: ../utils.c:2064 #, fuzzy, c-format msgid "HOME environment variable is too long to process\n" msgstr "VaÅ¡e promÄ›nná prostÅ™edí HOME je na mÄ› moc dlouhá\n" #: ../utils.c:2567 #, fuzzy msgid "Edit Categories..." msgstr "Upravit kategorie" #: ../utils.c:3233 msgid "PC ID is 0.\n" msgstr "ID PC je 0\n" #: ../utils.c:3234 #, fuzzy, c-format msgid "Generated a new PC ID. It is %lu\n" msgstr "Vygeneroval jsem nové ID PC. Je to %lu\n" #: ../utils.c:3376 msgid "Invalid UTF-8 encoding in export string\n" msgstr "" #: ../utils.c:3537 #, c-format msgid "Today is %A, %x %X" msgstr "Dnes je %A, %x %X" #: ../utils.c:3539 #, c-format msgid "Today is %%A, %s %s" msgstr "Dnes je %%A, %s %s" #: ../utils.c:3768 #, c-format msgid "" "Incorrect header format for CSV import\n" "Check line 1 of file %s\n" "Aborting import\n" msgstr "" #: ../utils.c:3805 #, fuzzy, c-format msgid "Error writing version header to file: %s%s\n" msgstr "Chyba pÅ™i zápisu hlaviÄky PC do souboru: next_id\n" #: ../utils.c:3810 #, fuzzy, c-format msgid "Error writing next id to file: %s%s" msgstr "Chyba pÅ™i zápisu dalšího id do souboru: next_id\n" #: ../weekview_gui.c:295 msgid "Weekly View" msgstr "Pohled na týden" #: ../weekview_gui.c:335 msgid "Last week Alt+LeftArrow" msgstr "" #: ../weekview_gui.c:364 msgid "Next week Alt+RightArrow" msgstr "" #: ../Expense/expense.c:95 msgid "Australia" msgstr "Austrálie" #: ../Expense/expense.c:96 msgid "Austria" msgstr "Rakousko" #: ../Expense/expense.c:97 msgid "Belgium" msgstr "Belgie" #: ../Expense/expense.c:98 msgid "Brazil" msgstr "Brazílie" #: ../Expense/expense.c:99 msgid "Canada" msgstr "Kanada" #: ../Expense/expense.c:100 msgid "Denmark" msgstr "Dánsko" #: ../Expense/expense.c:101 msgid "EU (Euro)" msgstr "EU (Euro)" #: ../Expense/expense.c:102 msgid "Finland" msgstr "Finsko" #: ../Expense/expense.c:103 msgid "France" msgstr "Francie" #: ../Expense/expense.c:104 msgid "Germany" msgstr "NÄ›mecko" #: ../Expense/expense.c:105 msgid "Hong Kong" msgstr "Hong Kong" #: ../Expense/expense.c:106 msgid "Iceland" msgstr "Island" #: ../Expense/expense.c:107 msgid "India" msgstr "Indie" #: ../Expense/expense.c:108 msgid "Indonesia" msgstr "Indonésie" #: ../Expense/expense.c:109 msgid "Ireland" msgstr "Irsko" #: ../Expense/expense.c:110 msgid "Italy" msgstr "Itálie" #: ../Expense/expense.c:111 msgid "Japan" msgstr "Japonsko" #: ../Expense/expense.c:112 msgid "Korea" msgstr "Korea" #: ../Expense/expense.c:113 msgid "Luxembourg" msgstr "Lucembursko" #: ../Expense/expense.c:114 msgid "Malaysia" msgstr "Malajsie" #: ../Expense/expense.c:115 msgid "Mexico" msgstr "Mexiko" #: ../Expense/expense.c:116 msgid "Netherlands" msgstr "Nizozemsko" #: ../Expense/expense.c:117 msgid "New Zealand" msgstr "Nový Zéland" #: ../Expense/expense.c:118 msgid "Norway" msgstr "Norsko" #: ../Expense/expense.c:119 msgid "P.R.C." msgstr "Čínská lidová republika" #: ../Expense/expense.c:120 msgid "Philippines" msgstr "Filipíny" #: ../Expense/expense.c:121 msgid "Singapore" msgstr "Singapur" #: ../Expense/expense.c:122 msgid "Spain" msgstr "Å panÄ›lsko" #: ../Expense/expense.c:123 msgid "Sweden" msgstr "Å védsko" #: ../Expense/expense.c:124 msgid "Switzerland" msgstr "Å výcarsko" #: ../Expense/expense.c:125 msgid "Taiwan" msgstr "Tchaj-wan" #: ../Expense/expense.c:126 msgid "Thailand" msgstr "Thajsko" #: ../Expense/expense.c:127 msgid "United Kingdom" msgstr "Spojené království" #: ../Expense/expense.c:128 msgid "United States" msgstr "Spojené státy" #: ../Expense/expense.c:516 ../Expense/expense.c:527 msgid "Expense" msgstr "Výdaje" #: ../Expense/expense.c:548 ../Expense/expense.c:1386 msgid "Airfare" msgstr "Let" #: ../Expense/expense.c:550 ../Expense/expense.c:1387 msgid "Breakfast" msgstr "SnídanÄ›" #: ../Expense/expense.c:552 ../Expense/expense.c:1388 msgid "Bus" msgstr "Autobus" #: ../Expense/expense.c:554 ../Expense/expense.c:1389 msgid "BusinessMeals" msgstr "ObchodníObÄ›dy" #: ../Expense/expense.c:556 ../Expense/expense.c:1390 msgid "CarRental" msgstr "PronájemAuta" #: ../Expense/expense.c:558 ../Expense/expense.c:1391 msgid "Dinner" msgstr "VeÄeÅ™e" #: ../Expense/expense.c:560 ../Expense/expense.c:1392 msgid "Entertainment" msgstr "Zábava" #: ../Expense/expense.c:562 ../Expense/expense.c:1393 msgid "Fax" msgstr "Fax" #: ../Expense/expense.c:564 ../Expense/expense.c:1394 msgid "Gas" msgstr "Benzín" #: ../Expense/expense.c:566 ../Expense/expense.c:1395 msgid "Gifts" msgstr "Dárky" #: ../Expense/expense.c:568 ../Expense/expense.c:1396 msgid "Hotel" msgstr "Hotel" #: ../Expense/expense.c:570 ../Expense/expense.c:1397 msgid "Incidentals" msgstr "VedlejšíVýdaje" #: ../Expense/expense.c:572 ../Expense/expense.c:1398 msgid "Laundry" msgstr "Prádelna" #: ../Expense/expense.c:574 ../Expense/expense.c:1399 msgid "Limo" msgstr "Limuzína" #: ../Expense/expense.c:576 ../Expense/expense.c:1400 msgid "Lodging" msgstr "Nájem" #: ../Expense/expense.c:578 ../Expense/expense.c:1401 msgid "Lunch" msgstr "ObÄ›d" #: ../Expense/expense.c:580 ../Expense/expense.c:1402 msgid "Mileage" msgstr "Cestovné" #: ../Expense/expense.c:584 ../Expense/expense.c:1404 msgid "Parking" msgstr "Parkovné" #: ../Expense/expense.c:586 ../Expense/expense.c:1405 msgid "Postage" msgstr "PoÅ¡tovné" #: ../Expense/expense.c:588 ../Expense/expense.c:1406 msgid "Snack" msgstr "ObÄerstvení" #: ../Expense/expense.c:590 ../Expense/expense.c:1407 msgid "Subway" msgstr "Metro" #: ../Expense/expense.c:592 ../Expense/expense.c:1408 msgid "Supplies" msgstr "Zásoby" #: ../Expense/expense.c:594 ../Expense/expense.c:1409 msgid "Taxi" msgstr "Taxi" #: ../Expense/expense.c:596 ../Expense/expense.c:1410 msgid "Telephone" msgstr "Telefon" #: ../Expense/expense.c:598 ../Expense/expense.c:1411 msgid "Tips" msgstr "Spropitné" #: ../Expense/expense.c:600 ../Expense/expense.c:1412 msgid "Tolls" msgstr "Poplatky" #: ../Expense/expense.c:602 ../Expense/expense.c:1413 msgid "Train" msgstr "Vlak" #: ../Expense/expense.c:1237 msgid "Expense: Unknown expense type\n" msgstr "Výdaj: Neznámý typ výdaje\n" #: ../Expense/expense.c:1243 msgid "Expense: Unknown payment type\n" msgstr "Výdaj: Neznámý typ platby\n" #: ../Expense/expense.c:1375 msgid "American Express" msgstr "American Express" #: ../Expense/expense.c:1376 msgid "Cash" msgstr "Hotovost" #: ../Expense/expense.c:1377 msgid "Check" msgstr "Å ek" #: ../Expense/expense.c:1378 msgid "Credit Card" msgstr "Kreditní karta" #: ../Expense/expense.c:1379 msgid "Master Card" msgstr "Master Card" #: ../Expense/expense.c:1380 msgid "Prepaid" msgstr "PÅ™edplatné" #: ../Expense/expense.c:1381 msgid "VISA" msgstr "VISA" #: ../Expense/expense.c:1617 #, fuzzy msgid "Type" msgstr "Typ:" #: ../Expense/expense.c:1618 #, fuzzy msgid "Amount" msgstr "Částka:" #. Category Menu #: ../Expense/expense.c:1702 msgid "Category:" msgstr "Kategorie:" #. Type Menu #: ../Expense/expense.c:1710 msgid "Type:" msgstr "Typ:" #. Payment Menu #: ../Expense/expense.c:1718 msgid "Payment:" msgstr "Platba:" #. Currency Menu #: ../Expense/expense.c:1726 msgid "Currency:" msgstr "MÄ›na:" #: ../Expense/expense.c:1746 msgid "Month:" msgstr "MÄ›síc:" #: ../Expense/expense.c:1760 msgid "Day:" msgstr "Den:" #: ../Expense/expense.c:1774 msgid "Year:" msgstr "Rok:" #. Amount Entry #: ../Expense/expense.c:1787 msgid "Amount:" msgstr "Částka:" #. Vendor Entry #: ../Expense/expense.c:1797 msgid "Vendor:" msgstr "Prodejce:" #. City #: ../Expense/expense.c:1807 msgid "City:" msgstr "MÄ›sto:" #. Attendees #: ../Expense/expense.c:1817 msgid "Attendees" msgstr "ÚÄastníci" #. ------------------------------------------- #: ../Expense/expense.c:2100 #, c-format msgid "" "%s\n" "\n" "Expense plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org" msgstr "" #: ../KeyRing/keyring.c:289 msgid "KeyRing: pack_KeyRing(): buf_size too small\n" msgstr "KeyRing: pack_KeyRing(): buf_size příliÅ¡ malá\n" #: ../KeyRing/keyring.c:1697 msgid "Incorrect, Reenter KeyRing Password" msgstr "Neplatné, vložte znovu své heslo KeyRing" #: ../KeyRing/keyring.c:1699 msgid "Enter a NEW KeyRing Password" msgstr "Zadejte NOVÉ heslo KeyRing" #: ../KeyRing/keyring.c:1701 msgid "Enter KeyRing Password" msgstr "Zadejte své heslo KeyRing" #: ../KeyRing/keyring.c:1767 #, c-format msgid "KeyRing: file %s not found.\n" msgstr "KeyRing: soubor %s nenalezen.\n" #: ../KeyRing/keyring.c:1768 msgid "KeyRing: Try Syncing.\n" msgstr "KeyRing: Zkuste synchronizovat.\n" #: ../KeyRing/keyring.c:1859 ../KeyRing/keyring.c:1870 msgid "KeyRing" msgstr "KeyRing" #. ------------------------------------------- #: ../KeyRing/keyring.c:1898 #, c-format msgid "" "%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" msgstr "" #: ../KeyRing/keyring.c:2136 #, c-format msgid "" "Keys exported from %s %s on %s\n" "\n" msgstr "" #: ../KeyRing/keyring.c:2170 ../KeyRing/keyring.c:2249 #, fuzzy, c-format msgid "Can't export key %d\n" msgstr "Nemohu exportovat poznámku %d\n" #. Change Password button #: ../KeyRing/keyring.c:2451 msgid "" "Change\n" "KeyRing\n" "Password" msgstr "" "ZmÄ›nit\n" "heslo\n" "KeyRing" #. Clist #: ../KeyRing/keyring.c:2564 #, fuzzy msgid "Changed" msgstr "Provést zmÄ›ny" #: ../KeyRing/keyring.c:2566 msgid "Account" msgstr "ÚÄet" #. Name entry #: ../KeyRing/keyring.c:2660 msgid "name: " msgstr "jméno: " #. Account entry #: ../KeyRing/keyring.c:2668 msgid "account: " msgstr "úÄet: " #. Password entry #: ../KeyRing/keyring.c:2676 msgid "password: " msgstr "heslo: " #. Last Changed entry #: ../KeyRing/keyring.c:2683 msgid "last changed: " msgstr "" #. Generate Password button (creates random password) #: ../KeyRing/keyring.c:2693 msgid "Generate Password" msgstr "Vygenerovat heslo" #: ../SyncTime/synctime.c:59 #, fuzzy msgid "SyncTime" msgstr "Synchronizovat poznámky" #. ------------------------------------------- #: ../SyncTime/synctime.c:70 #, c-format msgid "" "%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" msgstr "" #: ../SyncTime/synctime.c:104 msgid "synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n" msgstr "" #: ../SyncTime/synctime.c:105 msgid "synctime: NOT setting the time on the pilot\n" msgstr "" #: ../SyncTime/synctime.c:110 msgid "synctime: Setting the time on the pilot... " msgstr "" #: ../SyncTime/synctime.c:115 #, fuzzy msgid "Done\n" msgstr "Hotovo" #, fuzzy #~ msgid "Overwrite" #~ msgstr "PÅ™epsat soubor" #~ msgid "Directory" #~ msgstr "Adresář" #~ msgid "Filename" #~ msgstr "Název souboru" #~ msgid "Field" #~ msgstr "Pole" #~ msgid "kana(" #~ msgstr "kana(" #~ msgid "Quick View" #~ msgstr "Náhled" #~ msgid "Unable to open %s%s file\n" #~ msgstr "Nemohu otevřít soubor %s%s\n" #~ msgid "Unable to open %s.alarms file\n" #~ msgstr "Nemohu otevřít soubor %s.alarms\n" #~ msgid "You can't edit category %s.\n" #~ msgstr "Nemůžete upravovat kategorii %s.\n" #~ msgid "You can't delete category %s.\n" #~ msgstr "Nemůžete odstranit kategorii %s.\n" #~ msgid "category name" #~ msgstr "název kategorie" #~ msgid "debug" #~ msgstr "ladÄ›ní" #~ msgid "Answer: " #~ msgstr "OdpovÄ›Ä: " #~ msgid "none" #~ msgstr "nic" #~ msgid "Unknown repeatType found in DatebookDB\n" #~ msgstr "Neznámý repeatType nalezen v DatebookDB\n" #~ msgid "W" #~ msgstr "T" #~ msgid "M" #~ msgstr "M" #~ msgid "This Event has no particular time" #~ msgstr "Tato akce nemá pÅ™iÅ™azen Äas." #~ msgid "Start Time" #~ msgstr "ÄŒas zaÄátku" #~ msgid "End Time" #~ msgstr "ÄŒas konce" #~ msgid "Dismiss" #~ msgstr "Zavřít" #~ msgid "Quit" #~ msgstr "Konec" #~ msgid "Add" #~ msgstr "PÅ™idat" #~ msgid "Close" #~ msgstr "Zavřít" #~ msgid " -v = version\n" #~ msgstr " -v = verze\n" #~ msgid " -h = help\n" #~ msgstr " -h = nápovÄ›da\n" #~ msgid " -d = run in debug mode\n" #~ msgstr " -d = spustit v ladicím režimu\n" #~ msgid " -P = do not load plugins.\n" #~ msgstr " -P = nenaÄítat zásuvné moduly.\n" #~ msgid " -b = Do a sync and then a backup, otherwise just do a sync.\n" #~ msgstr " -b = Synchronizovat a zazálohovat, jinak jen synchronizovat.\n" #~ msgid "Invalid geometry specification: \"%s\"\n" #~ msgstr "Neplatné zadání geometrie: \"%s\"\n" #~ msgid "Help" #~ msgstr "NápovÄ›da" #~ msgid "Sync" #~ msgstr "Synchronizovat" #~ msgid "/Help/PayBack program" #~ msgstr "/NápovÄ›da/Program PayBack" #~ msgid "Font Selection Dialog" #~ msgstr "Dialog výbÄ›ru písma" #~ msgid "Clear" #~ msgstr "Vymazat" #~ msgid "Show private records" #~ msgstr "Zobrazovat soukromé záznamy" #~ msgid "Hide private records" #~ msgstr "Skrýt soukromé záznamy" #~ msgid "Mask private records" #~ msgstr "Maskovat soukromé záznamy" #~ msgid "Font" #~ msgstr "Písmo" #~ msgid "Go to the menu \"" #~ msgstr "JdÄ›te do menu \"" #~ msgid "\" and change the \"" #~ msgstr "\" a změňte \"" #~ msgid "\"." #~ msgstr "\"." #~ msgid "Couldn't open PC records file\n" #~ msgstr "Nemohu otevřít soubor záznamů PC\n" #~ msgid "The first day of the week is " #~ msgstr "První den týdne je " #~ msgid "Serial Port (/dev/ttyS0, /dev/pilot)" #~ msgstr "Sériový port (/dev/ttyS0, /dev/pilot)" #~ msgid "Serial Rate (Does not affect USB)" #~ msgstr "Rychlost pÅ™enosu (nemá vliv na USB)" #~ msgid "Sync memo32 (pedit32)" #~ msgstr "Synchronizovat memo32 (pedit32)" #~ msgid "One record" #~ msgstr "Jeden záznam" #~ msgid "%s: press the hotsync button on the cradle or \"kill %d\"\n" #~ msgstr "%s: stisknÄ›te tlaÄítko hotsync na kolébce nebo \"kill %d\"\n" #~ msgid "Finished\n" #~ msgstr "DokonÄeno\n" #~ msgid "Last Username = [%s]\n" #~ msgstr "Poslední jméno uživatele = [%s]\n" #~ msgid "Last UserID = %d\n" #~ msgstr "Poslední ID uživatele = %d\n" #~ msgid "Username = [%s]\n" #~ msgstr "Jméno uživatele = [%s]\n" #~ msgid "userID = %d\n" #~ msgstr "ID uživatele = %d\n" #~ msgid "palm: number of records = %d\n" #~ msgstr "palm: poÄet záznamů = %d\n" #~ msgid "disk: number of records = %d\n" #~ msgstr "disk: poÄet záznamů = %d\n" #~ msgid " -p do not load plugins.\n" #~ msgstr " -p nenaÄítat zásuvné moduly.\n" #~ msgid " -i makes jpilot iconify itself upon launch\n" #~ msgstr " -i způsobí, že se jpilot po spuÅ¡tÄ›ní ikonifikuje\n" #~ msgid "" #~ "%s doesn't appear to be a directory.\n" #~ "I need it to be.\n" #~ msgstr "" #~ "%s zÅ™ejmÄ› není adresář.\n" #~ "PotÅ™ebuji, aby byl.\n" #~ msgid "AmEx" #~ msgstr "AmEx" #~ msgid "CreditCard" #~ msgstr "KreditníKarta" #~ msgid "MasterCard" #~ msgstr "MasterCard" #~ msgid "Expense: Unknown category\n" #~ msgstr "Výdaj: Neznámá kategorie\n" #~ msgid "Backup" #~ msgstr "Zálohovat" #~ msgid "OK, I will do it" #~ msgstr "OK, udÄ›lám to" jpilot-1.8.2/po/Makevars0000664000175000017500000000342712320101153012052 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Judd Montgomery # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = jpilot-devel@jpilot.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = jpilot-1.8.2/todo.c0000664000175000017500000003307512340261240011061 00000000000000/******************************************************************************* * todo.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "log.h" #include "todo.h" #include "prefs.h" #include "libplugin.h" #include "password.h" /********************************* Constants **********************************/ /******************************* Global vars **********************************/ static struct ToDoAppInfo *glob_Ptodo_app_info; /****************************** Prototypes ************************************/ static int todo_sort(ToDoList **todol, int sort_order); /****************************** Main Code *************************************/ void free_ToDoList(ToDoList **todo) { ToDoList *temp_todo, *temp_todo_next; for (temp_todo = *todo; temp_todo; temp_todo=temp_todo_next) { free_ToDo(&(temp_todo->mtodo.todo)); temp_todo_next = temp_todo->next; free(temp_todo); } *todo = NULL; } int get_todo_app_info(struct ToDoAppInfo *ai) { int num, r; int rec_size; unsigned char *buf; #ifdef ENABLE_MANANA long ivalue; #endif char DBname[32]; memset(ai, 0, sizeof(*ai)); buf=NULL; /* Put at least one entry in there */ strcpy(ai->category.name[0], "Unfiled"); #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { strcpy(DBname, "MananaDB"); } else { strcpy(DBname, "ToDoDB"); } #else strcpy(DBname, "ToDoDB"); #endif r = jp_get_app_info(DBname, &buf, &rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, DBname); if (buf) { free(buf); } return EXIT_FAILURE; } num = unpack_ToDoAppInfo(ai, buf, rec_size); if (buf) { free(buf); } if (num <= 0) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading file: %s\n"), __FILE__, __LINE__, DBname); return EXIT_FAILURE; } return EXIT_SUCCESS; } int get_todos(ToDoList **todo_list, int sort_order) { return get_todos2(todo_list, sort_order, 1, 1, 1, 1, CATEGORY_ALL); } /* * sort_order: SORT_ASCENDING | SORT_DESCENDING * modified, deleted, private, completed: * 0 for no, 1 for yes, 2 for use prefs */ int get_todos2(ToDoList **todo_list, int sort_order, int modified, int deleted, int privates, int completed, int category) { GList *records; GList *temp_list; int recs_returned, num; struct ToDo todo; ToDoList *temp_todo_list; long keep_modified, keep_deleted, hide_completed; int keep_priv; buf_rec *br; long char_set; char *buf; pi_buffer_t *RecordBuffer; #ifdef ENABLE_MANANA long ivalue; #endif jp_logf(JP_LOG_DEBUG, "get_todos2()\n"); if (modified==2) { get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); } else { keep_modified = modified; } if (deleted==2) { get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); } else { keep_deleted = deleted; } if (privates==2) { keep_priv = show_privates(GET_PRIVATES); } else { keep_priv = privates; } if (completed==2) { get_pref(PREF_TODO_HIDE_COMPLETED, &hide_completed, NULL); } else { hide_completed = !completed; } get_pref(PREF_CHAR_SET, &char_set, NULL); *todo_list=NULL; recs_returned = 0; #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { num = jp_read_DB_files("MananaDB", &records); if (-1 == num) return 0; } else { num = jp_read_DB_files("ToDoDB", &records); if (-1 == num) return 0; } #else num = jp_read_DB_files("ToDoDB", &records); if (-1 == num) return 0; #endif for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } if ((keep_priv != SHOW_PRIVATES) && (br->attrib & dlpRecAttrSecret)) { continue; } RecordBuffer = pi_buffer_new(br->size); memcpy(RecordBuffer->data, br->buf, br->size); RecordBuffer->used = br->size; if (unpack_ToDo(&todo, RecordBuffer, todo_v1) == -1) { pi_buffer_free(RecordBuffer); continue; } pi_buffer_free(RecordBuffer); if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { free_ToDo(&todo); continue; } if (hide_completed && todo.complete) { continue; } if (todo.description) { buf = charset_p2newj(todo.description, -1, char_set); if (buf) { free(todo.description); todo.description = buf; } } if (todo.note) { buf = charset_p2newj(todo.note, -1, char_set); if (buf) { free(todo.note); todo.note = buf; } } temp_todo_list = malloc(sizeof(ToDoList)); if (!temp_todo_list) { jp_logf(JP_LOG_WARN, "get_todos2(): %s\n", _("Out of memory")); break; } memcpy(&(temp_todo_list->mtodo.todo), &todo, sizeof(struct ToDo)); temp_todo_list->app_type = TODO; temp_todo_list->mtodo.rt = br->rt; temp_todo_list->mtodo.attrib = br->attrib; temp_todo_list->mtodo.unique_id = br->unique_id; temp_todo_list->next = *todo_list; *todo_list = temp_todo_list; recs_returned++; } jp_free_DB_records(&records); todo_sort(todo_list, sort_order); jp_logf(JP_LOG_DEBUG, "Leaving get_todos2()\n"); return recs_returned; } /* * This function just checks some todo fields to make sure they are valid. * It truncates the description and note fields if necessary. */ static void pc_todo_validate_correct(struct ToDo *todo) { if (todo->description) { if ((strlen(todo->description)+1 > MAX_TODO_DESC_LEN)) { jp_logf(JP_LOG_WARN, _("ToDo description text > %d, truncating to %d\n"), MAX_TODO_DESC_LEN, MAX_TODO_DESC_LEN-1); todo->description[MAX_TODO_DESC_LEN-1]='\0'; } } if (todo->note) { if ((strlen(todo->note)+1 > MAX_TODO_NOTE_LEN)) { jp_logf(JP_LOG_WARN, _("ToDo note text > %d, truncating to %d\n"), MAX_TODO_NOTE_LEN, MAX_TODO_NOTE_LEN-1); todo->note[MAX_TODO_NOTE_LEN-1]='\0'; } } } int pc_todo_write(struct ToDo *todo, PCRecType rt, unsigned char attrib, unsigned int *unique_id) { pi_buffer_t *RecordBuffer; buf_rec br; long char_set; #ifdef ENABLE_MANANA long ivalue; #endif get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { if (todo->description) { charset_j2p(todo->description, strlen(todo->description)+1, char_set); } if (todo->note) { charset_j2p(todo->note, strlen(todo->note)+1, char_set); } } pc_todo_validate_correct(todo); RecordBuffer = pi_buffer_new(0); if (pack_ToDo(todo, RecordBuffer, todo_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_ToDo %s\n", _("error")); pi_buffer_free(RecordBuffer); return EXIT_FAILURE; } br.rt=rt; br.attrib = attrib; br.buf = RecordBuffer->data; br.size = RecordBuffer->used; /* Keep unique ID intact */ if (unique_id) { br.unique_id = *unique_id; } else { br.unique_id = 0; } #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { jp_pc_write("MananaDB", &br); } else { jp_pc_write("ToDoDB", &br); } #else jp_pc_write("ToDoDB", &br); #endif if (unique_id) { *unique_id = br.unique_id; } pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } /* * sort by: * priority, due date * due date, priority * category, priority * category, due date */ static int todo_compare(const void *v1, const void *v2) { time_t t1, t2; int r; int cat1, cat2; ToDoList **todol1, **todol2; struct ToDo *todo1, *todo2; int sort_by_priority; todol1=(ToDoList **)v1; todol2=(ToDoList **)v2; todo1=&((*todol1)->mtodo.todo); todo2=&((*todol2)->mtodo.todo); sort_by_priority = glob_Ptodo_app_info->sortByPriority; cat1 = (*todol1)->mtodo.attrib & 0x0F; cat2 = (*todol2)->mtodo.attrib & 0x0F; if (sort_by_priority == 0) { /* due date, priority */ r = todo2->indefinite - todo1->indefinite; if (r) { return r; } if ( !(todo1->indefinite) && !(todo2->indefinite) ) { t1 = mktime(&(todo1->due)); t2 = mktime(&(todo2->due)); if ( t1 < t2 ) { return 1; } if ( t1 > t2 ) { return -1; } } if (todo1->priority < todo2->priority) { return 1; } if (todo1->priority > todo2->priority) { return -1; } /* If all else fails sort alphabetically */ if (todo1->description && todo2->description) { return strcoll(todo2->description,todo1->description); } } if (sort_by_priority == 1) { /* priority, due date */ if (todo1->priority < todo2->priority) { return 1; } if (todo1->priority > todo2->priority) { return -1; } r = todo2->indefinite - todo1->indefinite; if (r) { return r; } if ( !(todo1->indefinite) && !(todo2->indefinite) ) { t1 = mktime(&(todo1->due)); t2 = mktime(&(todo2->due)); if ( t1 < t2 ) { return 1; } if ( t1 > t2 ) { return -1; } } /* If all else fails sort alphabetically */ if (todo1->description && todo2->description) { return strcoll(todo2->description,todo1->description); } } if (sort_by_priority == 2) { /* category, priority */ r = strcoll(glob_Ptodo_app_info->category.name[cat2], glob_Ptodo_app_info->category.name[cat1]); if (r) { return r; } if (todo1->priority < todo2->priority) { return 1; } if (todo1->priority > todo2->priority) { return -1; } /* If all else fails sort alphabetically */ if (todo1->description && todo2->description) { return strcoll(todo2->description,todo1->description); } } if (sort_by_priority == 3) { /* category, due date */ r = strcoll(glob_Ptodo_app_info->category.name[cat2], glob_Ptodo_app_info->category.name[cat1]); if (r) { return r; } r = todo2->indefinite - todo1->indefinite; if (r) { return r; } if ( !(todo1->indefinite) && !(todo2->indefinite) ) { t1 = mktime(&(todo1->due)); t2 = mktime(&(todo2->due)); if ( t1 < t2 ) { return 1; } if ( t1 > t2 ) { return -1; } } /* If all else fails sort alphabetically */ if (todo1->description && todo2->description) { return strcoll(todo2->description,todo1->description); } } return 0; } static int todo_sort(ToDoList **todol, int sort_order) { ToDoList *temp_todol; ToDoList **sort_todol; struct ToDoAppInfo ai; int count, i; /* Count the entries in the list */ for (count=0, temp_todol=*todol; temp_todol; temp_todol=temp_todol->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } get_todo_app_info(&ai); glob_Ptodo_app_info = &ai; /* Allocate an array to be qsorted */ sort_todol = calloc(count, sizeof(ToDoList *)); if (!sort_todol) { jp_logf(JP_LOG_WARN, "todo_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_todol=*todol; temp_todol; temp_todol=temp_todol->next, i++) { sort_todol[i] = temp_todol; } /* qsort them */ qsort(sort_todol, count, sizeof(ToDoList *), todo_compare); /* Put the linked list in the order of the array */ if (sort_order==SORT_ASCENDING) { for (i=count-1; i>0; i--) { sort_todol[i]->next=sort_todol[i-1]; } sort_todol[0]->next = NULL; *todol = sort_todol[count-1]; } else { /* Descending order */ sort_todol[count-1]->next = NULL; for (i=count-1; i; i--) { sort_todol[i-1]->next=sort_todol[i]; } *todol = sort_todol[0]; } free(sort_todol); return EXIT_SUCCESS; } jpilot-1.8.2/dialer/0000775000175000017500000000000012340262141011261 500000000000000jpilot-1.8.2/dialer/Makefile.am0000664000175000017500000000042212320101153013224 00000000000000# The dialer is conditionally built only on systems that support it # See configure.in for the list of operating systems currently supported if JPILOT_DIALER bin_PROGRAMS = jpilot-dial jpilot_dial_SOURCES = jpilot-dial.c jpilot_dial_LDADD = -lm endif EXTRA_DIST = README jpilot-1.8.2/dialer/README0000664000175000017500000000651612320101153012062 00000000000000This code is forked from dtmf-dial-0.1 I (Judd Montgomery) modified it to set the master volume before playing tones and then set it back to the original settings after playing the tones. I renamed it so as not to overwrite the dial program if installed. I did this because I noticed that the phone recognized the dtmf tones better at a certain volume range. These options are --lv {volume 0-100} and --rv {0-100} ex. jpilot-dial --lv 60 --rv 0 555-1234 Then I can hold the phone up to the left speaker, while not making as much noise as if the right speaker was on also. When its done dialing the volume goes back to its original setting. Below is the original README ====================================================================== README file for dtmf-dial-0.1 (C) 1998 Itai Nahshon, nahshon@actcom.co.il Use and redistribution are subject to the GNU GENERAL PUBLIC LICENSE. Dial generates the dtmf tone signals used for telephone dialing and by default sends the signals to the sound card. It can be used for easy dialing, simply put the telephone microphone near the compiter speaker and let the software dial for you. It is intended for dialing from within data base programs that also store telephone numbers. Usage: Usually you just run need to give the phone number that you wish to dial as an argument. dial 555-3456 By default the tone generated for each dialed digit is 100 milliseconds. Silence between digits is 50 milliseconds. A comma or a blank space between digits is replaces with a 500 milliseconds delay. The duration values can be set by these arguments: --tone-time milliseconds (default 100) --silent-time milliseconds (default 50) --sleep-time milliseconds (default 500) By default the output is sent to "/dev/dsp". Generated samples are 8 bits unsigned values (AFMT_U8). 8000 samples/second. To send the output to another device one can use the option: --output-dev device (default /dev/dsp) This option can be used also to store raw audio samples to a file, or to stdout. Use the file name with the --output-dev option, ir a simpe "-" to sent to stdout. If the output device is not the sound special file then another option should be used to eliminate attempts to set the sound driver parameters: --use-audio onoff (default 1) Use "--use-audio 0" to disable sound ioctls. It is possible to generate the samples in AFMT_S16_LE format, To do that use the option: --bits bits-per-sample (default 8) 8 will geneate AFMT_U8 format, 16 will generate AFMT_S16_LE format. It is possible to generate samples in a different sampling rate. To do that use the option: --speed sampling-rate (default 8000) Sound samples are generated by sub-sampling values from a cosine table. By default the cosine table contains 256 samples. Smaller cosine table sizes still produce the correct frequencies but with some distortion. These options can be used: --table-size size (default 256) The table used is of a different size --volume volume (default 100) Values stored in the table are scaled down volume/100 times the maximum value which does not cause overflow on the 8 or 16 bit samples. To generate a stereo sound use the options --right or --left. By default they are 0 and a mono sample is generated. If any of these option are 1, a stereo sample will be generated and the corrensponding channel will be turned on. jpilot-1.8.2/dialer/jpilot-dial.c0000664000175000017500000003177512340261240013571 00000000000000/******************************************************************************* * jpilot-dial.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * dtmf-dial 0.1 * (C) 1998 Itai Nahshon (nahshon@actcom.co.il) * * Use and redistribution are subject to the GNU GENERAL PUBLIC LICENSE. */ /* Judd Montgomery * 10/15/2002 * Added forking code and volume settings (--lv, --rv). */ #include #include #include #include #include #include #include #include #include #include #include #include #define DEBUG(x) #define DEV_MIXER "/dev/mixer" static void gen_costab(void); static void dial_digit(int c); static void silent(int msec); static void dial(int f1, int f2, int msec); char *output = "/dev/dsp"; int bits = 8; int speed = 8000; int tone_time = 100; int silent_time = 50; int sleep_time = 500; int volume = 100; int format = AFMT_U8; int use_audio = 1; #define BSIZE 4096 unsigned char *buf; int bufsize = BSIZE; int bufidx; #define MINTABSIZE 2 #define MAXTABSIZE 65536 signed short *costab; int tabsize = 256; int dialed = 0; int right = 0; int left = 0; int fd; static void Usage(void) { fprintf(stderr, "usage: jpilot-dial [options] number ...\n" " Valid options with their default values are:\n" " Duration options:\n" " --tone-time 100\n" " --silent-time 50\n" " --sleep-time 500\n" " Audio output options:\n" " --output-dev /dev/dsp\n" " --use-audio 1\n" " --bufsize 4096\n" " --speed 8000\n" " --bits 8\n" " --lv default - no change\n" " --rv default - no change\n" " Audio generation options:\n" " --table-size 256\n" " --volume 100\n" " --left 0\n" " --right 0\n" ); exit(1); } static void initialize_audiodev(void) { int speed_local = speed; int channels = 1; int diff; if (!use_audio) return; if (right || left) channels = 2; if (ioctl(fd, SNDCTL_DSP_CHANNELS, &channels)) { perror("ioctl(SNDCTL_DSP_CHANNELS)"); exit(1); } if (ioctl(fd, SNDCTL_DSP_SETFMT, &format)) { perror("ioctl(SNDCTL_DSP_SPEED)"); exit(1); } if (ioctl(fd, SNDCTL_DSP_SPEED, &speed_local)) { perror("ioctl(SNDCTL_DSP_SPEED)"); exit(1); } diff = speed_local - speed; if (diff < 0) diff = -diff; if (diff > 500) { fprintf(stderr, "Your sound card does not support the requested speed\n"); exit(1); } if (diff != 0) { fprintf(stderr, "Setting speed to %d\n", speed_local); } speed = speed_local; } static void getvalue(int *arg, int *index, int argc, char **argv, int min, int max) { if (*index >= argc-1) Usage(); *arg = atoi(argv[1+*index]); if (*arg < min || *arg > max) { fprintf(stderr, "Value for %s should be in the range %d..%d\n", argv[*index]+2, min,max); exit(1); } ++*index; } int main(int argc, char **argv) { char *cp; int i; int new_vol, old_vol; int old_left, old_right; int new_left, new_right; int left_vol_temp, right_vol_temp; int set_left, set_right; int mixer_fd; int status; left_vol_temp=right_vol_temp=0; set_left=set_right=0; for (i = 1; i < argc; i++) { if (argv[i][0] != '-' || argv[i][1] != '-') break; if (!strcmp(argv[i], "--table-size")) { getvalue(&tabsize, &i, argc, argv, MINTABSIZE, MAXTABSIZE); } else if (!strcmp(argv[i], "--tone-time")) { getvalue(&tone_time, &i, argc, argv, 10, 10000); } else if (!strcmp(argv[i], "--sleep-time")) { getvalue(&sleep_time, &i, argc, argv, 10, 10000); } else if (!strcmp(argv[i], "--silent-time")) { getvalue(&silent_time, &i, argc, argv, 10, 10000); } else if (!strcmp(argv[i], "--sleep-time")) { getvalue(&sleep_time, &i, argc, argv, 10, 100000); } else if (!strcmp(argv[i], "--volume")) { getvalue(&volume, &i, argc, argv, 0, 100); } else if (!strcmp(argv[i], "--lv")) { set_left=1; getvalue(&left_vol_temp, &i, argc, argv, 0, 100); } else if (!strcmp(argv[i], "--rv")) { set_right=1; getvalue(&right_vol_temp, &i, argc, argv, 0, 100); } else if (!strcmp(argv[i], "--speed")) { getvalue(&speed, &i, argc, argv, 5000, 48000); } else if (!strcmp(argv[i], "--bits")) { getvalue(&bits, &i, argc, argv, 8, 16); } else if (!strcmp(argv[i], "--bufsize")) { getvalue(&bufsize, &i, argc, argv, 4, 65536); } else if (!strcmp(argv[i], "--use-audio")) { getvalue(&use_audio, &i, argc, argv, 0, 1); } else if (!strcmp(argv[i], "--right")) { getvalue(&right, &i, argc, argv, 0, 1); } else if (!strcmp(argv[i], "--left")) { getvalue(&left, &i, argc, argv, 0, 1); } else if (!strcmp(argv[i], "--output-dev")) { i++; if (i >= argc) Usage(); output = argv[i]; } else Usage(); } if (i >= argc) Usage(); if ((set_left) || (set_right)) { switch (fork()) { case -1: /* error */ perror("fork"); return 0; case 0: /* child */ break; default: /* parent */ /* Open the mixer device first */ if ( (mixer_fd=open(DEV_MIXER, O_RDWR, 0)) < 0 ) { fprintf(stderr, "Can't open %s: ", DEV_MIXER); perror(""); exit(2); } if ( ioctl(mixer_fd, SOUND_MIXER_READ_VOLUME, &old_vol) < 0 ) { perror("Can't obtain current volume settings"); exit(2); } old_left = old_vol&0xFF; old_right = old_vol>>8; printf("Current volume: L = %d, R = %d\n", old_left, old_right); new_left=left_vol_temp; new_right=right_vol_temp; if (!set_left) new_left = old_left; if (!set_right) new_right = old_right; printf("Setting volume: L = %d, R = %d\n", new_left, new_right); new_vol=(new_right<<8) | (new_left&0xFF); if ( ioctl(mixer_fd, SOUND_MIXER_WRITE_VOLUME, &new_vol) < 0 ) { perror("Can't set current volume settings"); exit(2); } /* Wait for the sounds to get done playing */ wait(&status); printf("Setting volume: L = %d, R = %d\n", old_left, old_right); ioctl(mixer_fd, SOUND_MIXER_WRITE_VOLUME, &old_vol); return 0; } } if (!strcmp(output, "-")) fd = 1; /* stdout */ else { fd = open(output, O_CREAT|O_TRUNC|O_WRONLY, 0644); if (fd < 0) { perror(output); exit(1); } } switch(bits) { case 8: format = AFMT_U8; break; case 16: format = AFMT_S16_LE; break; default: fprintf(stderr, "Value for bits should be 8 or 16\n"); exit(1); } initialize_audiodev(); gen_costab(); buf = malloc(bufsize); if (buf == NULL) { perror("malloc buf"); exit(1); } bufidx = 0; for(; i < argc; i++) { cp = argv[i]; if (dialed) silent(sleep_time); while(cp && *cp) { if (*cp == ',' || *cp == ' ') silent(sleep_time); else { if (dialed) silent(silent_time); dial_digit(*cp); } cp++; } } if (bufidx > 0) { #if 0 while(bufidx < bufsize) { if (format == AFMT_U8) { buf[bufidx++] = 128; } else { /* AFMT_S16_LE */ buf[bufidx++] = 0; buf[bufidx++] = 0; } } #endif if (write(fd, buf, bufidx) < 0) { fprintf(stderr, "write failed %s %d\n", __FILE__, __LINE__); } } exit(0); } static void dial_digit(int c) { DEBUG(fprintf(stderr, "dial_digit %#c\n", c)); switch(c) { case '0': dial(941, 1336, tone_time); break; case '1': dial(697, 1209, tone_time); break; case '2': dial(697, 1336, tone_time); break; case '3': dial(697, 1477, tone_time); break; case '4': dial(770, 1209, tone_time); break; case '5': dial(770, 1336, tone_time); break; case '6': dial(770, 1477, tone_time); break; case '7': dial(852, 1209, tone_time); break; case '8': dial(852, 1336, tone_time); break; case '9': dial(852, 1477, tone_time); break; case '*': dial(941, 1209, tone_time); break; case '#': dial(941, 1477, tone_time); break; case 'A': dial(697, 1633, tone_time); break; case 'B': dial(770, 1633, tone_time); break; case 'C': dial(852, 1633, tone_time); break; case 'D': dial(941, 1633, tone_time); break; } } static void silent(int msec) { int time; if (msec <= 0) return; DEBUG(fprintf(stderr, "silent %d\n", msec)); time = (msec * speed) / 1000; while(--time >= 0) { if (format == AFMT_U8) { buf[bufidx++] = 128; } else { /* AFMT_S16_LE */ buf[bufidx++] = 0; buf[bufidx++] = 0; } if (right || left) { if (format == AFMT_U8) { buf[bufidx++] = 128; } else { /* AFMT_S16_LE */ buf[bufidx++] = 0; buf[bufidx++] = 0; } } if (bufidx >= bufsize) { if (write(fd, buf, bufsize) < 0) { fprintf(stderr, "write failed %s %d\n", __FILE__, __LINE__); } bufidx = 0; } } dialed = 0; } static void dial(int f1, int f2, int msec) { int i1, i2, d1, d2, e1, e2, g1, g2; int time; int val; if (msec <= 0) return; DEBUG(fprintf(stderr, "dial %d %d %d\n", f1, f2, msec)); f1 *= tabsize; f2 *= tabsize; d1 = f1 / speed; d2 = f2 / speed; g1 = f1 - d1 * speed; g2 = f2 - d2 * speed; e1 = speed/2; e2 = speed/2; i1 = i2 = 0; time = (msec * speed) / 1000; while(--time >= 0) { val = costab[i1] + costab[i2]; if (left || !right) { if (format == AFMT_U8) { buf[bufidx++] = 128 + (val >> 8); } else { /* AFMT_S16_LE */ buf[bufidx++] = val & 0xff; buf[bufidx++] = (val >> 8) & 0xff; } } if (left != right) { if (format == AFMT_U8) { buf[bufidx++] = 128; } else { /* AFMT_S16_LE */ buf[bufidx++] = 0; buf[bufidx++] = 0; } } if (right) { if (format == AFMT_U8) { buf[bufidx++] = 128 + (val >> 8); } else { /* AFMT_S16_LE */ buf[bufidx++] = val & 0xff; buf[bufidx++] = (val >> 8) & 0xff; } } i1 += d1; if (e1 < 0) { e1 += speed; i1 += 1; } if (i1 >= tabsize) i1 -= tabsize; i2 += d2; if (e2 < 0) { e2 += speed; i2 += 1; } if (i2 >= tabsize) i2 -= tabsize; if (bufidx >= bufsize) { if (write(fd, buf, bufsize) < 0) { fprintf(stderr, "write failed %s %d\n", __FILE__, __LINE__); } bufidx = 0; } e1 -= g1; e2 -= g2; } dialed = 1; } static void gen_costab(void) { int i; double d; costab = (signed short *)malloc(tabsize * sizeof(signed short)); if (costab == NULL) { perror("malloc costab"); exit(1); } for (i = 0; i < tabsize; i++) { d = 2*M_PI*i; costab[i] = (int)((volume/100.)*16383.*cos(d/tabsize)); } } jpilot-1.8.2/dialer/Makefile.in0000664000175000017500000005056012336026321013257 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @JPILOT_DIALER_TRUE@bin_PROGRAMS = jpilot-dial$(EXEEXT) subdir = dialer DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__jpilot_dial_SOURCES_DIST = jpilot-dial.c @JPILOT_DIALER_TRUE@am_jpilot_dial_OBJECTS = jpilot-dial.$(OBJEXT) jpilot_dial_OBJECTS = $(am_jpilot_dial_OBJECTS) jpilot_dial_DEPENDENCIES = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(jpilot_dial_SOURCES) DIST_SOURCES = $(am__jpilot_dial_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @JPILOT_DIALER_TRUE@jpilot_dial_SOURCES = jpilot-dial.c @JPILOT_DIALER_TRUE@jpilot_dial_LDADD = -lm EXTRA_DIST = README all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign dialer/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign dialer/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list jpilot-dial$(EXEEXT): $(jpilot_dial_OBJECTS) $(jpilot_dial_DEPENDENCIES) $(EXTRA_jpilot_dial_DEPENDENCIES) @rm -f jpilot-dial$(EXEEXT) $(AM_V_CCLD)$(LINK) $(jpilot_dial_OBJECTS) $(jpilot_dial_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpilot-dial.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/config.guess0000755000175000017500000013036112201675101012263 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-06-10' # This file 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 3 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: jpilot-1.8.2/cp1250.h0000664000175000017500000000220412320101153011013 00000000000000/******************************************************************************* * cp1250.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2002 by Jiri Rubes * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * Czech, Polish (and other CP 1250 languages) library header * Convert charsets: Palm <-> Unix: * Palm : CP 1250 * Unix : ISO-8859-2 */ void Win2Lat(char *const buf, int buf_len); void Lat2Win(char *const buf, int buf_len); jpilot-1.8.2/jpilotrc.blue0000664000175000017500000001145112320101153012433 00000000000000style "window" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.0, 0.3, 0.6 } } style "fileselect" = "window" { text[NORMAL] = { 0.0, 0.0, 1.0 } # fg of file selection lists base[NORMAL] = { 0.85, 0.9, 1.0 } # bg of file selection lists } style "frame" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 1.0, 1.0, 1.0 } } style "label" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.0, 0.3, 0.6 } } style "label_high" { fg[NORMAL] = { 0.9, 0.9, 0.5 } } style "today" { base[NORMAL] = { .96, 0.96, .50 } } style "tooltips" { fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 1.0, 0.98, .84 } } style "button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, 0.4, 0.7 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 0, 0.4, 0.6 } fg[NORMAL] = { 0.5, 1.0, 1.0 } bg[NORMAL] = { 0.0, 0.3, 0.6 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { 0.0, .404, .835 } } style "button_app" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, 0.5, 0.7 } } style "toggle_button" = "button" { } style "radio_button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, 0.3, 0.6 } base[PRELIGHT] = { 0.0, 0.0, 0.0 } #bg inside checkboxes when prelit fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0, 0.3, 0.6 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 1.0, 1.0, 0.0 } } style "spin_button" { #fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 1.0, 1.0, 0.0 } fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.0, 0.3, 0.6 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { 0.0, 0.3, 0.6 } base[NORMAL] = { 0.85, 0.9, 1.0 } } style "text" { #This is how to use a different font under GTK 2.x #font_name = "Sans 12" fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0, 0.4, 0.7 } fg[PRELIGHT] = { 0.0, 0.0, 0.0 } bg[PRELIGHT] = { 0.0, 0.5, 0.7 } #fg[SELECTED] = { 0.0, 0.0, 0.0 } #bg[SELECTED] = { 0.9, 0.8, 1.0 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } bg[ACTIVE] = { 0.0, 0.3, 0.6 } #bg of scrollbars fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } #fg of scrollbar buttons when insensitive bg[INSENSITIVE] = { 0.0, 0.4, 0.7 } #bg of scrollbar buttons when insensitive text[NORMAL] = { 0.0, 0.0, 1.0 } base[NORMAL] = { 0.85, 0.9, 1.0 } text[ACTIVE] = { 0.0, 0.0, 1.0 } #fg of selected text after focus has left base[ACTIVE] = { 0.85, 0.9, 1.0 } #bg of selected text after focus has left } style "menu" { fg[NORMAL] = { 1.0, 1.0, 1.0 } bg[NORMAL] = { 0.0, 0.30, 0.6 } fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, 0.4, 0.7 } fg[ACTIVE] = { 0.0, 1.0, 0.0 } bg[ACTIVE] = { 0, 0.3, 0.6 } fg[SELECTED] = { 1.0, 0.0, 0.0 } bg[SELECTED] = { 0, 0.5, 0.5 } } style "notebook" { fg[NORMAL] = { 0.9, 0.9, 0.9 } bg[NORMAL] = { 0.0, 0.3, 0.6 } fg[ACTIVE] = { 1.0, 1.0, 1.0 } bg[ACTIVE] = { 0.0, 0.25, 0.55 } } style "calendar" { fg[NORMAL] = { 1.0, 1.0, 1.0 } # month/year text bg[NORMAL] = { 0.0, 0.4, 0.7 } # month/year bg and out-of-month days fg[PRELIGHT] = { 1.0, 1.0, 0.0 } # prelights for month/year arrows bg[PRELIGHT] = { 0.0, 0.3, 0.6 } # prelights for month/year arrows text[NORMAL] = { 1.0, 1.0, 1.0 } # day numbers text[SELECTED] = { 1.0, 1.0, 0.0 } # selected day and week numbers fg base[SELECTED] = { 0.0, 0.4, 0.7 } # selected day and week numbers bg text[ACTIVE] = { 1.0, 1.0, 0.0 } # week numbers when focus is not on widget base[ACTIVE] = { 0.0, 0.4, 0.7 } # week numbers when focus is not on widget base[NORMAL] = { 0.0, 0.3, 0.6 } # bg for calendar } ################################################################################ # These set the widget types to use the styles defined above. widget_class "GtkWindow" style "window" widget_class "GtkDialog" style "window" widget_class "GtkMessageDialog" style "window" widget_class "GtkFileSelection*" style "fileselect" widget_class "GtkFontSel*" style "notebook" widget_class "*GtkNotebook" style "notebook" widget_class "*GtkButton*" style "button" widget_class "*GtkCheckButton*" style "radio_button" widget_class "*GtkRadioButton*" style "radio_button" widget_class "*GtkToggleButton*" style "toggle_button" widget_class "*GtkSpinButton" style "spin_button" widget_class "*Menu*" style "menu" widget_class "*GtkText" style "text" widget_class "*GtkTextView" style "text" widget_class "*GtkEntry" style "text" widget_class "*GtkCList" style "text" widget_class "*GtkVScrollbar" style "text" widget_class "*GtkHScrollbar" style "text" widget_class "*GtkLabel" style "label" widget_class "*GtkEventBox" style "label" widget_class "*GtkFrame" style "frame" widget_class "*GtkCalendar" style "calendar" ############################################################ # These set the widget types for named gtk widgets in the C code widget "*.button_app" style "button_app" widget "*.label_high" style "label_high" widget "*.today" style "today" widget "*tooltip*" style "tooltips" jpilot-1.8.2/utils.c0000664000175000017500000032243112340261240011251 00000000000000/******************************************************************************* * utils.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "config.h" #include #include #include #include #include #include #include #ifdef USE_FLOCK # include #else # include #endif #include #include "utils.h" #include "i18n.h" #include "log.h" #include "prefs.h" #include "sync.h" #include "plugins.h" #include "otherconv.h" /********************************* Constants **********************************/ /* For versioning of files */ #define FILE_VERSION "version" #define FILE_VERSION2 "version2" #define FILE_VERSION2_CR "version2\n" #define NUM_CAT_ITEMS 16 #define DAY_IN_SECS 86400 /* RFC2445 line length is 75. This length does not include value field such as * "DESCRIPTION:" which brings line length to nearly 75. */ #define ICAL_LINE_LENGTH 58 /* RFCs require CRLF for newline */ #define CRLF "\x0D\x0A" #define CR '\x0D' #define LF '\x0A' #define min(a,b) (((a) < (b)) ? (a) : (b)) /* Uncomment for verbose debugging of the alarm code */ /* #define ALARMS_DEBUG */ /******************************* Global vars **********************************/ /* Stuff for the dialog window */ extern GtkWidget *glob_dialog; extern GtkWidget *glob_date_label; static int dialog_result; unsigned int glob_find_id; /* GTK_TIMEOUT timer identifer for "Today:" label */ extern gint glob_date_timer_tag; /****************************** Prototypes ************************************/ static gboolean cb_destroy(GtkWidget *widget); static void cb_quit(GtkWidget *widget, gpointer data); static void cb_today(GtkWidget *widget, gpointer data); static int write_to_next_id(unsigned int unique_id); static int write_to_next_id_open(FILE *pc_out, unsigned int unique_id); static int forward_backward_in_ce_time(const struct CalendarEvent *cale, struct tm *t, int forward_or_backward); static int str_to_iv_str(char *dest, int destsz, char *src, int isical); /****************************** Main Code *************************************/ /* * This is a slow algorithm, but its not used much */ int add_days_to_date(struct tm *date, int n) { int ndim; int fdom; int flag; int i; get_month_info(date->tm_mon, 1, date->tm_year, &fdom, &ndim); for (i=0; itm_mday) > ndim) { date->tm_mday=1; flag = 1; if (++(date->tm_mon) > 11) { date->tm_mon=0; flag = 1; if (++(date->tm_year)>137) { date->tm_year = 137; } } } if (flag) { get_month_info(date->tm_mon, 1, date->tm_year, &fdom, &ndim); } } date->tm_isdst=-1; mktime(date); return EXIT_SUCCESS; } /* * This function will increment the date by n number of months and * adjust the day to the last day of the month if it exceeds the number * of days in the new month */ int add_months_to_date(struct tm *date, int n) { int i; int days_in_month[]={31,28,31,30,31,30,31,31,30,31,30,31 }; for (i=0; itm_mon) > 11) { date->tm_mon=0; if (++(date->tm_year)>137) { date->tm_year = 137; } } } if ((date->tm_year%4 == 0) && !(((date->tm_year+1900)%100==0) && ((date->tm_year+1900)%400!=0))) { days_in_month[1]++; } if (date->tm_mday > days_in_month[date->tm_mon]) { date->tm_mday = days_in_month[date->tm_mon]; } date->tm_isdst=-1; mktime(date); return EXIT_SUCCESS; } /* * This function will increment the date by n number of years and * adjust feb 29th to feb 28th if its not a leap year */ static int add_or_sub_years_to_date(struct tm *date, int n) { date->tm_year += n; if (date->tm_year>137) { date->tm_year = 137; } if (date->tm_year<3) { date->tm_year = 3; } /* Leap day/year */ if ((date->tm_mon==1) && (date->tm_mday==29)) { if (!((date->tm_year%4 == 0) && !(((date->tm_year+1900)%100==0) && ((date->tm_year+1900)%400!=0)))) { /* Move it back one day */ date->tm_mday=28; } } return EXIT_SUCCESS; } int add_years_to_date(struct tm *date, int n) { return add_or_sub_years_to_date(date, n); } /* This function is passed a bounded event description before it appears * on the gui (read-only) views. It checks if the event is a yearly repeat * (i.e. an anniversary) and then if the last 4 characters look like a * year. If so then it appends a "number of years" to the description. * This is handy for viewing ages on birthdays etc. */ /* Either a or cale can be passed as NULL */ void append_anni_years(char *desc, int max, struct tm *date, struct Appointment *appt, struct CalendarEvent *cale) { int len; int year; /* Only append the years if this is a yearly repeating type (i.e. an * anniversary) */ if ((!appt) && (!cale)) { return; } if ((appt) && (appt->repeatType != repeatYearly)) return; if ((cale) && (cale->repeatType != repeatYearly)) return; /* Only display this if the user option is enabled */ if (!get_pref_int_default(PREF_DATEBOOK_ANNI_YEARS, FALSE)) return; len = strlen(desc); /* Make sure we have room to insert what we want */ if (len < 4 || len > (max - 7)) return; /* Get and check for a year */ year = strtoul(&desc[len - 4], NULL, 10); /* Only allow up to 3 digits to be added */ if (year < 1100 || year > 3000) return; /* Append the number of years */ sprintf(&desc[len], " (%d)", 1900 + date->tm_year - year); } static const char b64_dict[65] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/=" }; static void base64_out(FILE *f, unsigned char *str) { unsigned char *index, char1, char2, char3; int loop, pad; loop = strlen((char *)str)/3; // process groups of 3 chars at a time pad = strlen((char *)str) % 3; // must pad if str not multiple of 3 /* Convert 3 bytes at a time. Padding at end calculated separately */ for (index = str; loop>0; loop--, index+=3) { char1 = *index; char2 = *(index+1); char3 = *(index+2); fputc(b64_dict[char1>>2], f); fputc(b64_dict[(char1<<4 & 0x30) | (char2>>4)], f); fputc(b64_dict[(char2<<2 & 0x3c) | (char3>>6)], f); fputc(b64_dict[char3 & 0x3f], f); } /* Now deal with the trailing bytes */ if (pad) { char1 = *index; char2 = *(index+1); char3 = *(index+2); fputc(b64_dict[char1>>2], f); fputc(b64_dict[(char1<<4 & 0x30) | (pad==2 ? char2>>4 : 0)], f ); fputc(pad==1 ? '=' : b64_dict[(char2<<2 & 0x3c)], f ); fputc('=', f); } } static unsigned int bytes_to_bin(unsigned char *bytes, unsigned int num_bytes) { unsigned int i, n; n=0; for (i=0;iPcat[0]=='\0') { return 1; } if ((s2)->Pcat[0]=='\0') { return -1; } return strcmp((s1)->Pcat, (s2)->Pcat); } static gboolean cb_destroy(GtkWidget *widget) { gtk_main_quit(); return FALSE; } static gboolean cb_destroy_dialog(GtkWidget *widget) { glob_dialog = NULL; gtk_main_quit(); return FALSE; } static void cb_dialog_button(GtkWidget *widget, gpointer data) { dialog_result=GPOINTER_TO_INT(data); gtk_widget_destroy(glob_dialog); } static void cb_quit(GtkWidget *widget, gpointer data) { unsigned int y,m,d; unsigned int *Py,*Pm,*Pd; int *Preturn_code; GtkWidget *cal=NULL; GtkWidget *window; window = gtk_widget_get_toplevel(widget); Preturn_code = gtk_object_get_data(GTK_OBJECT(window), "return_code"); if (Preturn_code) *Preturn_code = GPOINTER_TO_INT(data); cal = gtk_object_get_data(GTK_OBJECT(window), "cal"); if (Preturn_code && *Preturn_code==CAL_DONE) { if (cal) { gtk_calendar_get_date(GTK_CALENDAR(cal),&y,&m,&d); Pm = gtk_object_get_data(GTK_OBJECT(window), "mon"); Pd = gtk_object_get_data(GTK_OBJECT(window), "day"); Py = gtk_object_get_data(GTK_OBJECT(window), "year"); if (Pm) *Pm=m; if (Pd) *Pd=d; if (Py) *Py=y; } } gtk_widget_destroy(window); } static void cb_today(GtkWidget *widget, gpointer data) { time_t ltime; struct tm *now; GtkWidget *cal; cal = data; time(<ime); now = localtime(<ime); gtk_calendar_select_month(GTK_CALENDAR(cal), now->tm_mon, now->tm_year+1900); gtk_calendar_select_day(GTK_CALENDAR(cal), now->tm_mday); } /* * JPA overwrite a host character set string by its * conversion to a Palm Pilot character string */ void charset_j2p(char *buf, int max_len, long char_set) { switch (char_set) { case CHAR_SET_JAPANESE: Euc2Sjis(buf, max_len); break; case CHAR_SET_LATIN1 : /* No conversion required */ break; case CHAR_SET_1250 : Lat2Win(buf,max_len); break; case CHAR_SET_1251 : koi8_to_win1251(buf, max_len); break; case CHAR_SET_1251_B : win1251_to_koi8(buf, max_len); break; default: UTF_to_other(buf, max_len); break; } } /* * JPA overwrite a Palm Pilot character string by its * conversion to host character set */ void charset_p2j(char *const buf, int max_len, int char_set) { char *newbuf; gchar *end; newbuf = charset_p2newj(buf, max_len, char_set); g_strlcpy(buf, newbuf, max_len); if (strlen(newbuf) >= max_len) { jp_logf(JP_LOG_WARN, "charset_p2j: buffer too small - original string before truncation [%s]\n", newbuf); if (char_set > CHAR_SET_UTF) { /* truncate the string on a UTF-8 character boundary */ if (!g_utf8_validate(buf, -1, (const gchar **)&end)) *end = 0; } } free(newbuf); } /* * JPA convert a Palm Pilot character string to host * equivalent without overwriting */ char *charset_p2newj(const char *buf, int max_len, int char_set) { char *newbuf = NULL; /* Allocate a longer buffer if not done in conversion routine. * Only old conversion routines don't assign a buffer */ switch (char_set) { case CHAR_SET_JAPANESE: if (max_len == -1) { max_len = 2*strlen(buf) + 1; newbuf = g_malloc(max_len); } else { newbuf = g_malloc(min(2*strlen(buf) + 1, max_len)); } if (newbuf) { /* be safe, though string should fit into buf */ g_strlcpy(newbuf, buf, max_len); } break; case CHAR_SET_LATIN1: case CHAR_SET_1250: case CHAR_SET_1251: case CHAR_SET_1251_B: if (max_len == -1) { max_len = strlen(buf) + 1; newbuf = g_malloc(max_len); } else { newbuf = g_malloc(min(strlen(buf) + 1, max_len)); } if (newbuf) { /* be safe, though string should fit into buf */ g_strlcpy(newbuf, buf, max_len); } break; default: /* All other encodings get a new buffer from other_to_UTF */ break; } /* Now convert character encoding */ switch (char_set) { case CHAR_SET_JAPANESE : Sjis2Euc(newbuf, max_len); break; case CHAR_SET_LATIN1 : /* No conversion required */ break; case CHAR_SET_1250 : Win2Lat(newbuf, max_len); break; case CHAR_SET_1251 : win1251_to_koi8(newbuf, max_len); break; case CHAR_SET_1251_B : koi8_to_win1251(newbuf, max_len); break; default: newbuf = other_to_UTF(buf, max_len); break; } return (newbuf); } /* This function will copy an empty DB file * from the share directory to the users JPILOT_HOME directory * if it doesn't exist already and its length is > 0 */ int check_copy_DBs_to_home(void) { FILE *in, *out; struct stat sbuf; int i, c, r; char destname[FILENAME_MAX]; char srcname[FILENAME_MAX]; struct utimbuf times; char dbname_pdb[][32]={ "DatebookDB.pdb", "CalendarDB-PDat.pdb", "AddressDB.pdb", "ContactsDB-PAdd.pdb", "ToDoDB.pdb", "TasksDB-PTod.pdb", "MananaDB.pdb", "MemoDB.pdb", "MemosDB-PMem.pdb", "Memo32DB.pdb", "ExpenseDB.pdb", "" }; for (i=0; dbname_pdb[i][0]; i++) { get_home_file_name(dbname_pdb[i], destname, sizeof(destname)); r = stat(destname, &sbuf); if (((r)&&(errno==ENOENT)) || (sbuf.st_size==0)) { /* The file doesn't exist or is zero in size, copy an empty DB file */ if ((strlen(BASE_DIR) + strlen(EPN) + strlen(dbname_pdb[i])) > sizeof(srcname)) { jp_logf(JP_LOG_DEBUG, "copy_DB_to_home filename too long\n"); return EXIT_FAILURE; } g_snprintf(srcname, sizeof(srcname), "%s/%s/%s/%s", BASE_DIR, "share", EPN, dbname_pdb[i]); in = fopen(srcname, "r"); out = fopen(destname, "w"); if (!in) { jp_logf(JP_LOG_WARN, _("Couldn't find empty DB file %s: %s\n"), srcname, strerror(errno)); jp_logf(JP_LOG_WARN, EPN); jp_logf(JP_LOG_WARN, _(" may not be installed.\n")); return EXIT_FAILURE; } if (!out) { fclose(in); return EXIT_FAILURE; } while ( (c=fgetc(in)) != EOF ) { fputc(c, out); } fclose(in); fclose(out); /* Set the dates on the file to be old (not up to date) */ times.actime = 1; times.modtime = 1; utime(destname, ×); } } return EXIT_SUCCESS; } int check_hidden_dir(void) { struct stat statb; char hidden_dir[FILENAME_MAX]; get_home_file_name("", hidden_dir, sizeof(hidden_dir)); hidden_dir[strlen(hidden_dir)-1]='\0'; if (stat(hidden_dir, &statb)) { /* Directory isn't there, create it. * Only user is given permission to enter and change directory contents * which provides some primitive privacy protection. */ if (mkdir(hidden_dir, 0700)) { /* Can't create directory */ jp_logf(JP_LOG_WARN, _("Can't create directory %s\n"), hidden_dir); return EXIT_FAILURE; } if (stat(hidden_dir, &statb)) { jp_logf(JP_LOG_WARN, _("Can't create directory %s\n"), hidden_dir); return EXIT_FAILURE; } } /* Is it a directory? */ if (!S_ISDIR(statb.st_mode)) { jp_logf(JP_LOG_WARN, _("%s is not a directory\n"), hidden_dir); return EXIT_FAILURE; } /* Can we write in it? */ if (access(hidden_dir, W_OK) != 0) { jp_logf(JP_LOG_WARN, _("Unable to get write permission for directory %s\n"), hidden_dir); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* This function removes extra slashes from a string */ void cleanup_path(char *path) { register int s, d; /* source and destination */ if (!path) return; for (s=d=0; path[s]!='\0'; s++,d++) { if ((path[s]=='/') && (path[s+1]=='/')) { d--; continue; } if (d!=s) { path[d]=path[s]; } } path[d]='\0'; } /* Compacts pc3 file by removing records which have been synced */ static int cleanup_pc_file(char *DB_name, unsigned int *max_id) { PC3RecordHeader header; char pc_filename[FILENAME_MAX]; char pc_filename2[FILENAME_MAX]; FILE *pc_file; FILE *pc_file2; char *record; int r; int ret; int num; int compact_it; int next_id; r=0; *max_id = 0; next_id = 1; record = NULL; pc_file = pc_file2 = NULL; g_snprintf(pc_filename, sizeof(pc_filename), "%s.pc3", DB_name); g_snprintf(pc_filename2, sizeof(pc_filename2), "%s.pct", DB_name); pc_file = jp_open_home_file(pc_filename , "r"); if (!pc_file) { return EXIT_FAILURE; } compact_it = 0; /* Scan through the file and see if it needs to be compacted */ while(!feof(pc_file)) { read_header(pc_file, &header); if (feof(pc_file)) { break; } if (header.rt & SPENT_PC_RECORD_BIT) { compact_it=1; break; } if ((header.unique_id > *max_id) && (header.rt != PALM_REC) && (header.rt != MODIFIED_PALM_REC) && (header.rt != DELETED_PALM_REC) && (header.rt != REPLACEMENT_PALM_REC) ){ *max_id = header.unique_id; } if (fseek(pc_file, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); } } if (!compact_it) { jp_logf(JP_LOG_DEBUG, "No compacting needed\n"); jp_close_home_file(pc_file); return EXIT_SUCCESS; } fseek(pc_file, 0, SEEK_SET); pc_file2=jp_open_home_file(pc_filename2, "w"); if (!pc_file2) { jp_close_home_file(pc_file); return EXIT_FAILURE; } while(!feof(pc_file)) { read_header(pc_file, &header); if (feof(pc_file)) { break; } if (header.rt & SPENT_PC_RECORD_BIT) { r++; if (fseek(pc_file, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); r = -1; break; } continue; } else { if (header.rt == NEW_PC_REC) { header.unique_id = next_id++; } if ((header.unique_id > *max_id) && (header.rt != PALM_REC) && (header.rt != MODIFIED_PALM_REC) && (header.rt != DELETED_PALM_REC) && (header.rt != REPLACEMENT_PALM_REC) ){ *max_id = header.unique_id; } record = malloc(header.rec_len); if (!record) { jp_logf(JP_LOG_WARN, "cleanup_pc_file(): %s\n", _("Out of memory")); r = -1; break; } num = fread(record, header.rec_len, 1, pc_file); if (num != 1) { if (ferror(pc_file)) { r = -1; break; } } ret = write_header(pc_file2, &header); /* if (ret != 1) { r = -1; break; }*/ ret = fwrite(record, header.rec_len, 1, pc_file2); if (ret != 1) { r = -1; break; } free(record); record = NULL; } } if (record) { free(record); } if (pc_file) { jp_close_home_file(pc_file); } if (pc_file2) { jp_close_home_file(pc_file2); } if (r>=0) { rename_file(pc_filename2, pc_filename); } else { unlink_file(pc_filename2); } return r; } /* Compact all pc3 files including plugins */ int cleanup_pc_files(void) { int ret; int fail_flag; unsigned int max_id, max_max_id; #ifdef ENABLE_PLUGINS GList *plugin_list, *temp_list; struct plugin_s *plugin; #endif int i; char dbname[][32]={ "DatebookDB", "AddressDB", "ToDoDB", "MemoDB", "" }; /* Convert to new database names depending on prefs */ rename_dbnames(dbname); fail_flag = 0; max_id = max_max_id = 0; for (i=0; dbname[i][0]; i++) { jp_logf(JP_LOG_DEBUG, "cleanup_pc_file for %s\n", dbname[i]); ret = cleanup_pc_file(dbname[i], &max_id); jp_logf(JP_LOG_DEBUG, "max_id was %d\n", max_id); if (ret<0) { fail_flag=1; } else if (max_id > max_max_id) { max_max_id = max_id; } } #ifdef ENABLE_PLUGINS plugin_list = get_plugin_list(); for (temp_list = plugin_list; temp_list; temp_list = temp_list->next) { plugin = (struct plugin_s *)temp_list->data; if ((plugin->db_name==NULL) || (plugin->db_name[0]=='\0')) { jp_logf(JP_LOG_DEBUG, "not calling cleanup_pc_file for: [%s]\n", plugin->db_name); continue; } jp_logf(JP_LOG_DEBUG, "cleanup_pc_file for [%s]\n", plugin->db_name); ret = cleanup_pc_file(plugin->db_name, &max_id); jp_logf(JP_LOG_DEBUG, "max_id was %d\n", max_id); if (ret<0) { fail_flag=1; } else if (max_id > max_max_id) { max_max_id = max_id; } } #endif if (!fail_flag) { write_to_next_id(max_max_id); } return EXIT_SUCCESS; } /* returns 0 if not found, 1 if found */ int clist_find_id(GtkWidget *clist, unsigned int unique_id, int *found_at) { int i, found; MyAddress *maddr; *found_at = 0; for (found = i = 0; irows; i++) { maddr = gtk_clist_get_row_data(GTK_CLIST(clist), i); if (maddr < (MyAddress *)CLIST_MIN_DATA) { break; } if (maddr->unique_id==unique_id) { found = TRUE; *found_at = i; break; } } return found; } /* Encapsulate GTK function to make it free all resources */ void clist_clear(GtkCList *clist) { GtkStyle *base_style, *row_style; int i; base_style = gtk_widget_get_style(GTK_WIDGET(clist)); for (i=0; irows ; i++) { row_style = gtk_clist_get_row_style(GTK_CLIST(clist), i); if (row_style && (row_style != base_style)) { g_object_unref(row_style); } } gtk_clist_clear(GTK_CLIST(clist)); } /* Encapsulate GTK tooltip function which no longer supports disabling as * of GTK 2.12 */ void set_tooltip(int show_tooltip, GtkTooltips *tooltips, GtkWidget *widget, const gchar *tip_text, const gchar *tip_private) { if (show_tooltip) gtk_tooltips_set_tip(tooltips, widget, tip_text, tip_private); } /* Encapsulate broken GTK function to make it work as documented */ void clist_select_row(GtkCList *clist, int row, int column) { clist->focus_row = row; gtk_clist_select_row(clist, row, column); } int dateToDays(struct tm *tm1) { time_t t1; struct tm *gmt; struct tm tm2; static time_t adj = -1; memcpy(&tm2, tm1, sizeof(struct tm)); tm2.tm_isdst = 0; tm2.tm_hour=12; t1 = mktime(&tm2); if (-1 == adj) { gmt = gmtime(&t1); adj = t1 - mktime(gmt); } return (t1+adj)/86400; /* There are 86400 secs in a day */ } /* * This deletes a record from the appropriate Datafile */ int delete_pc_record(AppType app_type, void *VP, int flag) { FILE *pc_in; PC3RecordHeader header; struct Appointment *appt; MyAppointment *mappt; struct CalendarEvent *cale; MyCalendarEvent *mcale; struct Address *addr; MyAddress *maddr; struct Contact *cont; MyContact *mcont; struct ToDo *todo; MyToDo *mtodo; struct Memo *memo; MyMemo *mmemo; char filename[FILENAME_MAX]; pi_buffer_t *RecordBuffer = NULL; PCRecType record_type; unsigned int unique_id; unsigned char attrib; #ifdef ENABLE_MANANA long ivalue; #endif long memo_version; long char_set; jp_logf(JP_LOG_DEBUG, "delete_pc_record(%d, %d)\n", app_type, flag); if (VP==NULL) { return EXIT_FAILURE; } get_pref(PREF_CHAR_SET, &char_set, NULL); /* to keep the compiler happy with -Wall*/ mappt=NULL; mcale=NULL; maddr=NULL; mcont=NULL; mtodo=NULL; mmemo=NULL; switch (app_type) { case DATEBOOK: mappt = (MyAppointment *) VP; record_type = mappt->rt; unique_id = mappt->unique_id; attrib = mappt->attrib; strcpy(filename, "DatebookDB.pc3"); break; case CALENDAR: mcale = (MyCalendarEvent *) VP; record_type = mcale->rt; unique_id = mcale->unique_id; attrib = mcale->attrib; strcpy(filename, "CalendarDB-PDat.pc3"); break; case ADDRESS: maddr = (MyAddress *) VP; record_type = maddr->rt; unique_id = maddr->unique_id; attrib = maddr->attrib; strcpy(filename, "AddressDB.pc3"); break; case CONTACTS: mcont = (MyContact *) VP; record_type = mcont->rt; unique_id = mcont->unique_id; attrib = mcont->attrib; strcpy(filename, "ContactsDB-PAdd.pc3"); break; case TODO: mtodo = (MyToDo *) VP; record_type = mtodo->rt; unique_id = mtodo->unique_id; attrib = mtodo->attrib; #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { strcpy(filename, "MananaDB.pc3"); } else { strcpy(filename, "ToDoDB.pc3"); } #else strcpy(filename, "ToDoDB.pc3"); #endif break; case MEMO: mmemo = (MyMemo *) VP; record_type = mmemo->rt; unique_id = mmemo->unique_id; attrib = mmemo->attrib; get_pref(PREF_MEMO_VERSION, &memo_version, NULL); switch (memo_version) { case 0: default: strcpy(filename, "MemoDB.pc3"); break; case 1: strcpy(filename, "MemosDB-PMem.pc3"); break; case 2: strcpy(filename, "Memo32DB.pc3"); break; } break; default: return EXIT_SUCCESS; } if ((record_type==DELETED_PALM_REC) || (record_type==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n")); return EXIT_SUCCESS; } RecordBuffer = pi_buffer_new(0); switch (record_type) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: pc_in=jp_open_home_file(filename, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open PC records file\n")); pi_buffer_free(RecordBuffer); return EXIT_FAILURE; } while(!feof(pc_in)) { read_header(pc_in, &header); if (feof(pc_in)) { jp_logf(JP_LOG_WARN, _("Couldn't find record to delete\n")); pi_buffer_free(RecordBuffer); jp_close_home_file(pc_in); return EXIT_FAILURE; } /* Keep unique ID intact */ if (header.header_version==2) { if ((header.unique_id==unique_id) && ((header.rt==NEW_PC_REC)||(header.rt==REPLACEMENT_PALM_REC))) { if (fseek(pc_in, -header.header_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); } header.rt=DELETED_PC_REC; write_header(pc_in, &header); jp_logf(JP_LOG_DEBUG, "record deleted\n"); jp_close_home_file(pc_in); pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } } else { jp_logf(JP_LOG_WARN, _("Unknown header version %d\n"), header.header_version); } if (fseek(pc_in, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); } } jp_close_home_file(pc_in); pi_buffer_free(RecordBuffer); return EXIT_FAILURE; case PALM_REC: jp_logf(JP_LOG_DEBUG, "Deleting Palm ID %d\n", unique_id); pc_in=jp_open_home_file(filename, "a"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open PC records file\n")); pi_buffer_free(RecordBuffer); return EXIT_FAILURE; } header.unique_id=unique_id; if (flag==MODIFY_FLAG) { header.rt=MODIFIED_PALM_REC; } else { header.rt=DELETED_PALM_REC; } header.attrib=attrib; switch (app_type) { case DATEBOOK: appt=&mappt->appt; if (pack_Appointment(appt, RecordBuffer, datebook_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Appointment %s\n", _("error")); } break; case CALENDAR: cale=&mcale->cale; if (pack_CalendarEvent(cale, RecordBuffer, calendar_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_CalendarEvent %s\n", _("error")); } break; case ADDRESS: addr=&maddr->addr; if (pack_Address(addr, RecordBuffer, address_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Address %s\n", _("error")); } break; case CONTACTS: cont=&mcont->cont; if (jp_pack_Contact(cont, RecordBuffer) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "jp_pack_Contact %s\n", _("error")); } break; case TODO: todo=&mtodo->todo; if (pack_ToDo(todo, RecordBuffer, todo_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_ToDo %s\n", _("error")); } break; case MEMO: memo=&mmemo->memo; if (pack_Memo(memo, RecordBuffer, memo_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Memo %s\n", _("error")); } break; default: jp_close_home_file(pc_in); pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } /* switch */ header.rec_len = RecordBuffer->used; jp_logf(JP_LOG_DEBUG, "writing header to pc file\n"); write_header(pc_in, &header); /* This record is used during sync to make sure that the palm record * hasn't changed before we delete it */ jp_logf(JP_LOG_DEBUG, "writing record to pc file, %d bytes\n", header.rec_len); fwrite(RecordBuffer->data, header.rec_len, 1, pc_in); jp_logf(JP_LOG_DEBUG, "record deleted\n"); jp_close_home_file(pc_in); pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; break; default: break; } /* switch (record_type) */ if (RecordBuffer) pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } /* nob = number of buttons */ int dialog_generic(GtkWindow *main_window, char *title, int type, char *text, int nob, char *button_text[]) { GtkWidget *button, *label1; GtkWidget *hbox1, *vbox1, *vbox2; int i; GtkWidget *image; char *markup; /* This gdk function call is required in order to avoid a GTK * error which causes X and the mouse pointer to lock up. * The lockup is generated whenever a modal dialog is created * from the callback routine of a clist. */ gdk_pointer_ungrab(GDK_CURRENT_TIME); dialog_result=0; glob_dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "window_position", GTK_WIN_POS_MOUSE, NULL); gtk_window_set_title(GTK_WINDOW(glob_dialog), title); gtk_window_set_modal(GTK_WINDOW(glob_dialog), TRUE); if (main_window) { gtk_window_set_transient_for(GTK_WINDOW(glob_dialog), GTK_WINDOW(main_window)); } gtk_signal_connect(GTK_OBJECT(glob_dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), glob_dialog); vbox1 = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(glob_dialog), vbox1); hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_add(GTK_CONTAINER(vbox1), hbox1); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 12); switch (type) { case DIALOG_INFO: image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); break; case DIALOG_QUESTION: image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); break; case DIALOG_ERROR: image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG); break; case DIALOG_WARNING: image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG); break; default: image = NULL; } if (image) gtk_box_pack_start(GTK_BOX(hbox1), image, FALSE, FALSE, 2); vbox2 = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5); gtk_box_pack_start(GTK_BOX(hbox1), vbox2, FALSE, FALSE, 2); /* Title and Information text */ label1 = gtk_label_new(NULL); markup = g_markup_printf_escaped("%s\n\n%s", title, text); gtk_label_set_markup(GTK_LABEL(label1), markup); g_free(markup); gtk_box_pack_start(GTK_BOX(vbox2), label1, FALSE, FALSE, 2); /* Create buttons */ hbox1 = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 12); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox1), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox1), 6); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); for (i=0; i < nob; i++) { if (0 == strcmp("OK", button_text[i])) button = gtk_button_new_from_stock(GTK_STOCK_OK); else if (0 == strcmp("Cancel", button_text[i])) button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); else if (0 == strcmp("Yes", button_text[i])) button = gtk_button_new_from_stock(GTK_STOCK_YES); else if (0 == strcmp("No", button_text[i])) button = gtk_button_new_from_stock(GTK_STOCK_NO); else button = gtk_button_new_with_label(_(button_text[i])); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1 + i)); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 1); /* default button is the last one */ if (i == nob-1) { GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); gtk_widget_grab_default(button); gtk_widget_grab_focus(button); } } gtk_widget_show_all(glob_dialog); gtk_main(); return dialog_result; } int dialog_generic_ok(GtkWidget *widget, char *title, int type, char *text) { char *button_text[] = {N_("OK")}; if (widget) { return dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(widget))), title, type, text, 1, button_text); } return dialog_generic(NULL, title, type, text, 1, button_text); } /* * Widget must be some widget used to get the main window from. * The main window passed in would be fastest. * changed is MODIFY_FLAG, or NEW_FLAG */ int dialog_save_changed_record(GtkWidget *widget, int changed) { int b=0; char *button_text[] = {N_("No"), N_("Yes")}; if ((changed!=MODIFY_FLAG) && (changed!=NEW_FLAG)) { return EXIT_SUCCESS; } if (changed==MODIFY_FLAG) { b=dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Save Changed Record?"), DIALOG_QUESTION, _("Do you want to save the changes to this record?"), 2, button_text); } if (changed==NEW_FLAG) { b=dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Save New Record?"), DIALOG_QUESTION, _("Do you want to save this new record?"), 2, button_text); } return b; } int dialog_save_changed_record_with_cancel(GtkWidget *widget, int changed) { int b=0; char *button_text[] = {N_("Cancel"), N_("No"), N_("Yes")}; if ((changed!=MODIFY_FLAG) && (changed!=NEW_FLAG)) { return EXIT_SUCCESS; } if (changed==MODIFY_FLAG) { b=dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Save Changed Record?"), DIALOG_QUESTION, _("Do you want to save the changes to this record?"), 3, button_text); } if (changed==NEW_FLAG) { b=dialog_generic(GTK_WINDOW(gtk_widget_get_toplevel(widget)), _("Save New Record?"), DIALOG_QUESTION, _("Do you want to save this new record?"), 3, button_text); } return b; } void entry_set_multiline_truncate(GtkEntry *entry, gboolean value) { # if GTK_MINOR_VERSION >= 10 entry->truncate_multiline = value; # endif } /* returns 1 if found */ /* 0 if eof */ int find_next_offset(mem_rec_header *mem_rh, long fpos, unsigned int *next_offset, unsigned char *attrib, unsigned int *unique_id) { mem_rec_header *temp_mem_rh; unsigned char found = 0; unsigned long found_at; found_at=0xFFFFFF; for (temp_mem_rh=mem_rh; temp_mem_rh; temp_mem_rh = temp_mem_rh->next) { if ((temp_mem_rh->offset > fpos) && (temp_mem_rh->offset < found_at)) { found_at = temp_mem_rh->offset; } if ((temp_mem_rh->offset == fpos)) { found = 1; *attrib = temp_mem_rh->attrib; *unique_id = temp_mem_rh->unique_id; } } *next_offset = found_at; return found; } /* Finds next repeating event occurrence closest to srch_start_tm */ int find_next_rpt_event(struct CalendarEvent *cale, struct tm *srch_start_tm, struct tm *next_tm) { struct tm prev_tm; int prev_found, next_found; find_prev_next(cale, 0, srch_start_tm, srch_start_tm, &prev_tm, next_tm, &prev_found, &next_found); return next_found; } /* * Search forwards and backwards in time to find alarms which bracket * date1 and date2. * For non-repeating appointments no searching is necessary. * The appt is either in the range or it is not. * The algorithm for searching is time consuming. To improve performance * this subroutine seeks to seed the search with a close guess for the * correct time before launching the search. * * Math is explicitly done with integers so that divisions which might produce * a float as a result will instead produce a truncated result. * Alternatively the C math functions such as floor could be used but there * seems little point in invoking such overhead. */ int find_prev_next(struct CalendarEvent *cale, time_t adv, struct tm *date1, struct tm *date2, struct tm *tm_prev, struct tm *tm_next, int *prev_found, int *next_found) { struct tm t; time_t t1, t2; time_t t_begin, t_end; time_t t_alarm; time_t t_offset; time_t t_temp; int forward, backward; int offset; int freq; int date1_days, begin_days; int fdom, ndim; int found, count, i; int safety_counter; int found_exception; int kill_update_next; #ifdef ALARMS_DEBUG char str[100]; #endif #ifdef ALARMS_DEBUG printf("fpn: entered find_previous_next\n"); #endif *prev_found=*next_found=0; forward=backward=1; t1=mktime_dst_adj(date1); t2=mktime_dst_adj(date2); memset(tm_prev, 0, sizeof(*tm_prev)); memset(tm_next, 0, sizeof(*tm_next)); /* Initialize search time with cale start time */ memset(&t, 0, sizeof(t)); t.tm_year=cale->begin.tm_year; t.tm_mon=cale->begin.tm_mon; t.tm_mday=cale->begin.tm_mday; t.tm_hour=cale->begin.tm_hour; t.tm_min=cale->begin.tm_min; t.tm_isdst=-1; mktime(&t); #ifdef ALARMS_DEBUG strftime(str, sizeof(str), "%B %d, %Y %H:%M", &t); printf("fpn: appt_start=%s\n", str); #endif /* Handle non-repeating appointments */ if (cale->repeatType == repeatNone) { #ifdef ALARMS_DEBUG printf("fpn: repeatNone\n"); #endif t_alarm=mktime_dst_adj(&(cale->begin)) - adv; if ((t_alarm <= t2) && (t_alarm >= t1)) { memcpy(tm_prev, &(cale->begin), sizeof(struct tm)); *prev_found=1; #ifdef ALARMS_DEBUG printf("fpn: prev_found none\n"); #endif } else if (t_alarm > t2) { memcpy(tm_next, &(cale->begin), sizeof(struct tm)); *next_found=1; #ifdef ALARMS_DEBUG printf("fpn: next_found none\n"); #endif } return EXIT_SUCCESS; } /* Optimize initial start position of search */ switch (cale->repeatType) { case repeatNone: /* Already handled. Here only to shut up compiler warnings */ break; case repeatDaily: #ifdef ALARMS_DEBUG printf("fpn: repeatDaily\n"); #endif freq = cale->repeatFrequency; t_offset = freq * DAY_IN_SECS; t_alarm = mktime_dst_adj(&t); /* Jump to closest current date if appt. started in the past */ if (t1 - adv > t_alarm) { t_alarm = ((((t1+adv)-t_alarm) / t_offset) * t_offset) + t_alarm; memcpy(&t, localtime(&t_alarm), sizeof(struct tm)); #ifdef ALARMS_DEBUG strftime(str, sizeof(str), "%B %d, %Y %H:%M", &t); printf("fpn: initial daily=%s\n", str); #endif } break; case repeatWeekly: #ifdef ALARMS_DEBUG printf("fpn: repeatWeekly\n"); #endif freq = cale->repeatFrequency; begin_days = dateToDays(&(cale->begin)); date1_days = dateToDays(date1); /* Jump to closest current date if appt. started in the past */ if (date1_days > begin_days) { #ifdef ALARMS_DEBUG printf("fpn: begin_days %d date1_days %d\n", begin_days, date1_days); printf("fpn: date1->tm_wday %d appt->begin.tm_wday %d\n", date1->tm_wday, cale->begin.tm_wday); #endif /* Jump by appropriate number of weeks */ offset = date1_days - begin_days; offset = (offset/(freq*7))*(freq*7); #ifdef ALARMS_DEBUG printf("fpn: offset %d\n", offset); #endif add_days_to_date(&t, offset); } /* Within the week find which day is a repeat */ found=0; for (count=0, i=t.tm_wday; i>=0; i--, count++) { if (cale->repeatDays[i]) { sub_days_from_date(&t, count); found=1; break; } } if (!found) { for (count=0, i=t.tm_wday; i<7; i++, count++) { if (cale->repeatDays[i]) { add_days_to_date(&t, count); found=1; break; } } } #ifdef ALARMS_DEBUG strftime(str, sizeof(str), "%B %d, %Y %H:%M", &t); printf("fpn: initial weekly=%s\n", str); #endif break; case repeatMonthlyByDay: #ifdef ALARMS_DEBUG printf("fpn: repeatMonthlyByDay\n"); #endif /* Jump to closest current date if appt. started in the past */ if ((date1->tm_year > cale->begin.tm_year) || (date1->tm_mon > cale->begin.tm_mon)) { /* First, adjust month */ freq = cale->repeatFrequency; offset = ((date1->tm_year - cale->begin.tm_year)*12) - cale->begin.tm_mon + date1->tm_mon; offset = (offset/freq)*freq; add_months_to_date(&t, offset); /* Second, adjust to correct day in new month */ get_month_info(t.tm_mon, 1, t.tm_year, &fdom, &ndim); t.tm_mday=((cale->repeatDay+7-fdom)%7) - ((cale->repeatDay)%7) + cale->repeatDay + 1; #ifdef ALARMS_DEBUG printf("fpn: months offset = %d\n", offset); printf("fpn: %02d/01/%02d, fdom=%d\n", t.tm_mon+1, t.tm_year+1900, fdom); printf("fpn: mday = %d\n", t.tm_mday); #endif if (t.tm_mday > ndim-1) { t.tm_mday -= 7; } #ifdef ALARMS_DEBUG strftime(str, sizeof(str), "%B %d, %Y %H:%M", &t); printf("fpn: initial monthly by day=%s\n", str); #endif } break; case repeatMonthlyByDate: #ifdef ALARMS_DEBUG printf("fpn: repeatMonthlyByDate\n"); #endif /* Jump to closest current date if appt. started in the past */ if ((date1->tm_year > cale->begin.tm_year) || (date1->tm_mon > cale->begin.tm_mon)) { freq = cale->repeatFrequency; offset = ((date1->tm_year - cale->begin.tm_year)*12) - cale->begin.tm_mon + date1->tm_mon; offset = (offset/freq)*freq; #ifdef ALARMS_DEBUG printf("fpn: months offset = %d\n", offset); #endif add_months_to_date(&t, offset); } break; case repeatYearly: #ifdef ALARMS_DEBUG printf("fpn: repeatYearly\n"); #endif /* Jump to closest current date if appt. started in the past */ if (date1->tm_year > cale->begin.tm_year) { freq = cale->repeatFrequency; offset = ((date1->tm_year - cale->begin.tm_year)/freq)*freq; #ifdef ALARMS_DEBUG printf("fpn: (%d - %d)%%%d\n", date1->tm_year, cale->begin.tm_year, freq); printf("fpn: years offset = %d\n", offset); #endif add_years_to_date(&t, offset); } break; } /* end switch on repeatType */ /* Search forwards/backwards through time for alarms */ safety_counter=0; while (forward || backward) { safety_counter++; if (safety_counter > 3000) { jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, "find_prev_next(): %s\n", _("infinite loop, breaking\n")); if (cale->description) { jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, "desc=[%s]\n", cale->description); } break; } kill_update_next = 0; t_temp = mktime_dst_adj(&t); #ifdef ALARMS_DEBUG strftime(str, sizeof(str), "%B %d, %Y %H:%M", &t); printf("fpn: trying with=%s\n", str); #endif /* Check for exceptions in repeat appointments */ found_exception=0; for (i=0; iexceptions; i++) { if ((t.tm_mday==cale->exception[i].tm_mday) && (t.tm_mon==cale->exception[i].tm_mon) && (t.tm_year==cale->exception[i].tm_year) ) { found_exception=1; break; } } if (found_exception) { if (forward) { forward_backward_in_ce_time(cale, &t, 1); continue; } if (backward) { forward_backward_in_ce_time(cale, &t, -1); continue; } } /* Check that proposed alarm is not before the appt begin date */ t_begin = mktime_dst_adj(&(cale->begin)); if (t_temp < t_begin) { #ifdef ALARMS_DEBUG printf("fpn: before begin date\n"); #endif backward=0; kill_update_next = 1; } /* Check that proposed alarm is not past appt end date */ if (!(cale->repeatForever)) { t_end = mktime_dst_adj(&(cale->repeatEnd)); if (t_temp >= t_end) { #ifdef ALARMS_DEBUG printf("fpn: after end date\n"); #endif forward=0; } } /* Check if proposed alarm falls within the desired window [t1,t2] */ t_temp-=adv; if (t_temp >= t2) { if (!kill_update_next) { memcpy(tm_next, &t, sizeof(t)); *next_found=1; forward=0; #ifdef ALARMS_DEBUG printf("fpn: next found\n"); #endif } } else { memcpy(tm_prev, &t, sizeof(t)); *prev_found=1; backward=0; #ifdef ALARMS_DEBUG printf("fpn: prev_found\n"); #endif } /* Change &t to the next/previous occurrence of the appointment * and try search again */ if (forward) { forward_backward_in_ce_time(cale, &t, 1); continue; } if (backward) { forward_backward_in_ce_time(cale, &t, -1); continue; } } /* end of while loop going forward/backward */ return EXIT_SUCCESS; } /* * This routine takes time (t) and either advances t to the next * occurrence of a repeating appointment, or the previous occurrence * * appt is the appointment passed in * t is an in/out parameter * forward_or_backward should be 1 for forward or -1 for backward */ int forward_backward_in_ce_time(const struct CalendarEvent *cale, struct tm *t, int forward_or_backward) { int count, dow, freq, fdom, ndim; freq = cale->repeatFrequency; /* Go forward in time */ if (forward_or_backward==1) { switch (cale->repeatType) { case calendarRepeatNone: #ifdef ALARMS_DEBUG printf("fbiat: repeatNone encountered. This should never happen!\n"); #endif break; case calendarRepeatDaily: add_days_to_date(t, freq); break; case calendarRepeatWeekly: for (count=0, dow=t->tm_wday; count<14; count++) { add_days_to_date(t, 1); #ifdef ALARMS_DEBUG printf("fbiat: weekly forward t.tm_wday=%d, freq=%d\n", t->tm_wday, freq); #endif dow++; if (dow==7) { #ifdef ALARMS_DEBUG printf("fbiat: dow==7\n"); #endif add_days_to_date(t, (freq-1)*7); dow=0; } if (cale->repeatDays[dow]) { #ifdef ALARMS_DEBUG printf("fbiat: repeatDay[dow] dow=%d\n", dow); #endif break; } } break; case calendarRepeatMonthlyByDay: add_months_to_date(t, freq); get_month_info(t->tm_mon, 1, t->tm_year, &fdom, &ndim); t->tm_mday=((cale->repeatDay+7-fdom)%7) - ((cale->repeatDay)%7) + cale->repeatDay + 1; if (t->tm_mday > ndim-1) { t->tm_mday -= 7; } break; case calendarRepeatMonthlyByDate: t->tm_mday=cale->begin.tm_mday; add_months_to_date(t, freq); break; case calendarRepeatYearly: t->tm_mday=cale->begin.tm_mday; add_years_to_date(t, freq); break; } /* switch on repeatType */ return EXIT_SUCCESS; } /* Go back in time */ if (forward_or_backward==-1) { switch (cale->repeatType) { case calendarRepeatNone: #ifdef ALARMS_DEBUG printf("fbiat: repeatNone encountered. This should never happen!\n"); #endif break; case calendarRepeatDaily: sub_days_from_date(t, freq); break; case calendarRepeatWeekly: for (count=0, dow=t->tm_wday; count<14; count++) { sub_days_from_date(t, 1); #ifdef ALARMS_DEBUG printf("fbiat: weekly backward t.tm_wday=%d, freq=%d\n", t->tm_wday, freq); #endif dow--; if (dow==-1) { #ifdef ALARMS_DEBUG printf("fbiat: dow==-1\n"); #endif sub_days_from_date(t, (freq-1)*7); dow=6; } if (cale->repeatDays[dow]) { #ifdef ALARMS_DEBUG printf("fbiat: repeatDay[dow] dow=%d\n", dow); #endif break; } } break; case calendarRepeatMonthlyByDay: sub_months_from_date(t, freq); get_month_info(t->tm_mon, 1, t->tm_year, &fdom, &ndim); t->tm_mday=((cale->repeatDay+7-fdom)%7) - ((cale->repeatDay)%7) + cale->repeatDay + 1; if (t->tm_mday > ndim-1) { t->tm_mday -= 7; } break; case calendarRepeatMonthlyByDate: t->tm_mday=cale->begin.tm_mday; sub_months_from_date(t, freq); break; case calendarRepeatYearly: t->tm_mday=cale->begin.tm_mday; sub_years_from_date(t, freq); break; } /* switch on repeatType */ } return EXIT_SUCCESS; } /* Displays usage string on supplied file handle */ void fprint_usage_string(FILE *out) { fprintf(out, "%s [ -v || -h || [-d] [-p] [-a || -A] [-s] [-i] [-geometry] ]\n", EPN); fprintf(out, _(" -v display version and compile options\n")); fprintf(out, _(" -h display help text\n")); fprintf(out, _(" -d display debug info to stdout\n")); fprintf(out, _(" -p skip loading plugins\n")); fprintf(out, _(" -a ignore missed alarms since the last time program was run\n")); fprintf(out, _(" -A ignore all alarms past and future\n")); fprintf(out, _(" -s start sync using existing instance of GUI\n")); fprintf(out, _(" -i iconify program immediately after launch\n")); fprintf(out, _(" -geometry {X geometry} use specified geometry for main window\n\n")); fprintf(out, _(" The PILOTPORT and PILOTRATE environment variables specify\n")); fprintf(out, _(" which port to sync on, and at what speed.\n")); fprintf(out, _(" If PILOTPORT is not set then it defaults to /dev/pilot.\n")); } void free_mem_rec_header(mem_rec_header **mem_rh) { mem_rec_header *h, *next_h; for (h=*mem_rh; h; h=next_h) { next_h=h->next; free(h); } *mem_rh=NULL; } void free_search_record_list(struct search_record **sr) { struct search_record *temp_sr, *temp_sr_next; for (temp_sr = *sr; temp_sr; temp_sr=temp_sr_next) { temp_sr_next = temp_sr->next; free(temp_sr); } *sr = NULL; } /* Warning, this function will move the file pointer */ int get_app_info_size(FILE *in, int *size) { unsigned char raw_header[LEN_RAW_DB_HEADER]; DBHeader dbh; unsigned int offset; record_header rh; fseek(in, 0, SEEK_SET); if (fread(raw_header, LEN_RAW_DB_HEADER, 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if (feof(in)) { jp_logf(JP_LOG_WARN, "get_app_info_size(): %s\n", _("Error reading file")); return EXIT_FAILURE; } unpack_db_header(&dbh, raw_header); if (dbh.app_info_offset==0) { *size=0; return EXIT_SUCCESS; } if (dbh.sort_info_offset!=0) { *size = dbh.sort_info_offset - dbh.app_info_offset; return EXIT_SUCCESS; } if (dbh.number_of_records==0) { fseek(in, 0, SEEK_END); *size=ftell(in) - dbh.app_info_offset; return EXIT_SUCCESS; } if (fread(&rh, sizeof(record_header), 1, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } offset = ((rh.Offset[0]*256+rh.Offset[1])*256+rh.Offset[2])*256+rh.Offset[3]; *size=offset - dbh.app_info_offset; return EXIT_SUCCESS; } void get_compile_options(char *string, int len) { g_snprintf(string, len, PN" version "VERSION"\n" " Copyright (C) 1999-2014 by Judd Montgomery\n" " judd@jpilot.org, http://jpilot.org\n" "\n" PN" comes with ABSOLUTELY NO WARRANTY; for details see the file\n" "COPYING included with the source code, or in /usr/share/docs/jpilot/.\n\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; version 2 of the License.\n\n" "%s %s %s\n" "%s\n" " %s - %s\n" " %s - %d.%d.%d\n" " %s - %s\n" " %s - %s\n" " %s - %s\n" " %s - %s\n" " %s - %s\n" " %s - %s\n" " %s - %s", _("Date compiled"), __DATE__, __TIME__, _("Compiled with these options:"), _("Installed Path"), BASE_DIR, _("pilot-link version"), PILOT_LINK_VERSION, PILOT_LINK_MAJOR, PILOT_LINK_MINOR, _("USB support"), _("yes"), _("Private record support"), #ifdef ENABLE_PRIVATE _("yes"), #else _("no"), #endif _("Datebk support"), #ifdef ENABLE_DATEBK _("yes"), #else _("no"), #endif _("Plugin support"), #ifdef ENABLE_PLUGINS _("yes"), #else _("no"), #endif _("Manana support"), #ifdef ENABLE_MANANA _("yes"), #else _("no"), #endif _("NLS support (foreign languages)"), #ifdef ENABLE_NLS _("yes"), #else _("no"), #endif _("GTK2 support"), _("yes") ); } /* Get today's date and work out day in month. This is used to highlight * today in the gui (read-only) views. Returns the day of month if today * is in the passed month else returns -1. */ int get_highlighted_today(struct tm *date) { time_t now; struct tm* now_tm; /* Quit immediately if the user option is not enabled */ if (!get_pref_int_default(PREF_DATEBOOK_HI_TODAY, FALSE)) return -1; /* Get now time */ now = time(NULL); now_tm = localtime(&now); /* Check if option is on and return today's day of month if the month * and year match was was passed in */ if (now_tm->tm_mon != date->tm_mon || now_tm->tm_year != date->tm_year) return -1; /* Today is within the passed month, return the day of month */ return now_tm->tm_mday; } /* creates the full path name of a file in the ~/.jpilot dir */ int get_home_file_name(const char *file, char *full_name, int max_size) { char *home, default_path[]="."; #ifdef ENABLE_PROMETHEON home = getenv("COPILOT_HOME"); #else home = getenv("JPILOT_HOME"); #endif if (!home) {/* No JPILOT_HOME var */ home = getenv("HOME"); if (!home) {/* No HOME var */ fprintf(stderr, _("Can't get HOME environment variable\n")); } } if (!home) { home = default_path; } if (strlen(home)>(max_size-strlen(file)-strlen("/."EPN"/")-2)) { fprintf(stderr, _("HOME environment variable is too long to process\n")); home=default_path; } sprintf(full_name, "%s/."EPN"/%s", home, file); return EXIT_SUCCESS; } /* * month = 0-11 * day = day of month 1-31 * returns: * dow = day of week for this date * ndim = number of days in month 28-31 */ void get_month_info(int month, int day, int year, int *dow, int *ndim) { time_t ltime; struct tm *now; struct tm new_time; int days_in_month[]={31,28,31,30,31,30,31,31,30,31,30,31 }; time(<ime); now = localtime(<ime); new_time.tm_sec=0; new_time.tm_min=0; new_time.tm_hour=11; new_time.tm_mday=day; /* day of month 1-31 */ new_time.tm_mon=month; new_time.tm_year=year; new_time.tm_isdst=now->tm_isdst; mktime(&new_time); *dow = new_time.tm_wday; /* leap year */ if (month == 1) { if ((year%4 == 0) && !(((year+1900)%100==0) && ((year+1900)%400!=0)) ) { days_in_month[1]++; } } *ndim = days_in_month[month]; } int get_next_unique_pc_id(unsigned int *next_unique_id) { FILE *pc_in_out; char file_name[FILENAME_MAX]; char str[256]; /* Check that file exists and is not empty. If not, * create it and start unique id numbering from 1 */ pc_in_out = jp_open_home_file(EPN".next_id", "a"); if (pc_in_out==NULL) { jp_logf(JP_LOG_WARN, _("Error opening file: %s\n"),file_name); return EXIT_FAILURE; } if (ftell(pc_in_out)==0) { /* The file is new. We have to write out the file header */ *next_unique_id=1; write_to_next_id_open(pc_in_out, *next_unique_id); } jp_close_home_file(pc_in_out); /* Now that file has been verified we can use it to find the next id */ pc_in_out = jp_open_home_file(EPN".next_id", "r+"); if (pc_in_out==NULL) { jp_logf(JP_LOG_WARN, _("Error opening file: %s\n"),file_name); return EXIT_FAILURE; } memset(str, '\0', sizeof(FILE_VERSION)+4); if (fread(str, strlen(FILE_VERSION), 1, pc_in_out) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if (!strcmp(str, FILE_VERSION)) { /* Must be a versioned file */ fseek(pc_in_out, 0, SEEK_SET); if (fgets(str, 200, pc_in_out) == NULL) { jp_logf(JP_LOG_WARN, "fgets failed %s %d\n", __FILE__, __LINE__); } if (fgets(str, 200, pc_in_out) == NULL) { jp_logf(JP_LOG_WARN, "fgets failed %s %d\n" __FILE__, __LINE__); } str[200]='\0'; *next_unique_id = atoi(str); } else { fseek(pc_in_out, 0, SEEK_SET); if (fread(next_unique_id, sizeof(*next_unique_id), 1, pc_in_out) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } } (*next_unique_id)++; if (fseek(pc_in_out, 0, SEEK_SET)) { jp_logf(JP_LOG_WARN, "fseek failed %s %d\n", __FILE__, __LINE__); } /* rewind(pc_in_out); */ /* todo - if > 16777216 then cleanup */ write_to_next_id_open(pc_in_out, *next_unique_id); jp_close_home_file(pc_in_out); return EXIT_SUCCESS; } int get_pixmaps(GtkWidget *widget, int which_pixmap, GdkPixmap **out_pixmap, GdkBitmap **out_mask) { /* Externally stored icon definitions */ #include "icons/clist_mini_icons.h" static int init_done=0; static GdkPixmap *pixmap_note; static GdkPixmap *pixmap_alarm; static GdkPixmap *pixmap_check; static GdkPixmap *pixmap_checked; static GdkPixmap *pixmap_float_check; static GdkPixmap *pixmap_float_checked; static GdkPixmap *pixmap_sdcard; static GdkBitmap *mask_note; static GdkBitmap *mask_alarm; static GdkBitmap *mask_check; static GdkBitmap *mask_checked; static GdkBitmap *mask_float_check; static GdkBitmap *mask_float_checked; static GdkBitmap *mask_sdcard; GtkStyle *style; /* Pixmaps are created only once when procedure is first called */ if (!init_done) { init_done = 1; /* Make the note pixmap */ style = gtk_widget_get_style(widget); pixmap_note = gdk_pixmap_create_from_xpm_d(widget->window, &mask_note, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_note); /* Make the alarm pixmap */ pixmap_alarm = gdk_pixmap_create_from_xpm_d(widget->window, &mask_alarm, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_alarm); /* Make the check pixmap */ pixmap_check = gdk_pixmap_create_from_xpm_d(widget->window, &mask_check, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_check); /* Make the checked pixmap */ pixmap_checked = gdk_pixmap_create_from_xpm_d (widget->window, &mask_checked, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_checked); /* Make the float_checked pixmap */ pixmap_float_check = gdk_pixmap_create_from_xpm_d (widget->window, &mask_float_check, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_float_check); /* Make the float_checked pixmap */ pixmap_float_checked = gdk_pixmap_create_from_xpm_d (widget->window, &mask_float_checked, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_float_checked); /* Make the sdcard pixmap */ pixmap_sdcard = gdk_pixmap_create_from_xpm_d(widget->window, &mask_sdcard, &style->bg[GTK_STATE_NORMAL], (gchar **)xpm_sdcard); } /* End initialization of pixmaps */ switch (which_pixmap) { case PIXMAP_NOTE: *out_pixmap = pixmap_note; *out_mask = mask_note; break; case PIXMAP_ALARM: *out_pixmap = pixmap_alarm; *out_mask = mask_alarm; break; case PIXMAP_BOX_CHECK: *out_pixmap = pixmap_check; *out_mask = mask_check; break; case PIXMAP_BOX_CHECKED: *out_pixmap = pixmap_checked; *out_mask = mask_checked; break; case PIXMAP_FLOAT_CHECK: *out_pixmap = pixmap_float_check; *out_mask = mask_float_check; break; case PIXMAP_FLOAT_CHECKED: *out_pixmap = pixmap_float_checked; *out_mask = mask_float_checked; break; case PIXMAP_SDCARD: *out_pixmap = pixmap_sdcard; *out_mask = mask_sdcard; break; default: *out_pixmap = NULL; *out_mask = NULL; } return EXIT_SUCCESS; } int get_timeout_interval(void) { const char *svalue; get_pref(PREF_TIME, NULL, &svalue); if (strstr(svalue,"%S")) return CLOCK_TICK; else return 60*CLOCK_TICK; } int jp_cal_dialog(GtkWindow *main_window, const char *title, int monday_is_fdow, int *mon, int *day, int *year) { return cal_dialog(main_window, title, monday_is_fdow, mon, day, year); } void jp_charset_j2p(char *const buf, int max_len) { long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); charset_j2p(buf, max_len, char_set); } void jp_charset_p2j(char *const buf, int max_len) { long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set == CHAR_SET_JAPANESE) jp_Sjis2Euc(buf, max_len); else charset_p2j(buf, max_len, char_set); } char* jp_charset_p2newj(const char *buf, int max_len) { long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); return(charset_p2newj(buf, max_len, char_set)); } int jp_close_home_file(FILE *pc_in) { /* unlock access */ #ifndef USE_FLOCK struct flock lock; int r; lock.l_type = F_UNLCK; lock.l_start = 0; lock.l_whence = SEEK_SET; lock.l_len = 0; r = fcntl(fileno(pc_in), F_SETLK, &lock); if (r == -1) #else if (flock(fileno(pc_in), LOCK_UN) < 0) #endif jp_logf(JP_LOG_WARN, "unlocking failed: %s\n", strerror(errno)); return fclose(pc_in); } int jp_copy_file(char *src, char *dest) { FILE *in, *out; int r; struct stat statb; struct utimbuf times; unsigned char buf[10002]; if (!strcmp(src, dest)) { return EXIT_SUCCESS; } in = fopen(src, "r"); out = fopen(dest, "w"); if (!in) { return EXIT_FAILURE; } if (!out) { fclose(in); return EXIT_FAILURE; } while ((r = fread(buf, 1, sizeof(buf)-2, in))) { fwrite(buf, 1, r, out); } fclose(in); fclose(out); /* Set the create and modify times of new file to the same as the old */ stat(src, &statb); times.actime = statb.st_atime; times.modtime = statb.st_mtime; utime(dest, ×); return EXIT_SUCCESS; } FILE *jp_open_home_file(const char *filename, const char *mode) { char fullname[FILENAME_MAX]; FILE *pc_in; get_home_file_name(filename, fullname, sizeof(fullname)); pc_in = fopen(fullname, mode); if (pc_in == NULL) { pc_in = fopen(fullname, "w+"); if (pc_in) { fclose(pc_in); pc_in = fopen(fullname, mode); } } /* if the file exists */ if (pc_in) { /* lock access */ #ifndef USE_FLOCK struct flock lock; int r; if (*mode == 'r') lock.l_type = F_RDLCK; else lock.l_type = F_WRLCK; lock.l_start = 0; lock.l_whence = SEEK_SET; lock.l_len = 0; /* Lock to the end of file */ r = fcntl(fileno(pc_in), F_SETLK, &lock); if (r == -1) #else if (flock(fileno(pc_in), LOCK_EX) < 0) #endif { jp_logf(JP_LOG_WARN, "locking %s failed: %s\n", filename, strerror(errno)); if (ENOLCK != errno) { fclose(pc_in); return NULL; } else jp_logf(JP_LOG_WARN, "continue without locking\n"); } /* Enhance privacy by only allowing user to read & write files */ chmod(fullname, 0600); } return pc_in; } size_t jp_strftime(char *s, size_t max, const char *format, const struct tm *tm) { size_t ret; gchar *utf8_text; gchar *local_format; /* the format string is UTF-8 encoded since it comes from a .po file */ local_format = g_locale_from_utf8(format, -1, NULL, NULL, NULL); ret = strftime(s, max, local_format, tm); g_free(local_format); utf8_text = g_locale_to_utf8(s, -1, NULL, NULL, NULL); g_strlcpy(s, utf8_text, max); g_free(utf8_text); return ret; } /* RFC 2849 */ void ldif_out(FILE *f, const char *name, const char *fmt, ...) { va_list ap; unsigned char buf[8192]; char *p; int printable = 1; va_start(ap, fmt); vsnprintf((char *)buf, sizeof(buf), fmt, ap); if (buf[0] == ' ' || buf[0] == ':' || buf[0] == '<') /* SAFE-INIT-CHAR */ { printable = 0; } for (p = (char *)buf; *p && printable; p++) { if (*p < 32 || *p > 126) { /* SAFE-CHAR, excluding all control chars */ printable = 0; } if (*p == ' ' && *(p + 1) == '\0') { /* note 8 */ printable = 0; } } if (printable) { fprintf(f, "%s: %s\n", name, buf); } else { fprintf(f, "%s:: ", name); base64_out(f, buf); fprintf(f, "\n"); } } /* Parse the string and replace CR and LFs with spaces * a null is written if len is reached */ void lstrncpy_remove_cr_lfs(char *dest, char *src, int len) { int i; gchar* end; if ((!src) || (!dest)) { return; } dest[0]='\0'; for (i=0; src[i] && (i=0) && (*sizep>0) ) { *bufp=malloc(*sizep); if (*bufp) { memcpy(*bufp, temp_buf, *sizep); } } else { *bufp=NULL; } pi_file_close(pf1); return r; } int pdb_file_write_app_block(char *DB_name, void *bufp, size_t size_in) { char local_pdb_file[FILENAME_MAX]; char full_local_pdb_file[FILENAME_MAX]; char full_local_pdb_file2[FILENAME_MAX]; struct pi_file *pf1, *pf2; struct DBInfo infop; void *app_info; void *sort_info; void *record; int r; int idx; size_t size; int attr; int cat; pi_uid_t uid; struct stat statb; struct utimbuf times; jp_logf(JP_LOG_DEBUG, "pdb_file_write_app_block\n"); g_snprintf(local_pdb_file, sizeof(local_pdb_file), "%s.pdb", DB_name); get_home_file_name(local_pdb_file, full_local_pdb_file, sizeof(full_local_pdb_file)); strcpy(full_local_pdb_file2, full_local_pdb_file); strcat(full_local_pdb_file2, "2"); /* After we are finished, set the create and modify times of new file to the same as the old */ stat(full_local_pdb_file, &statb); times.actime = statb.st_atime; times.modtime = statb.st_mtime; pf1 = pi_file_open(full_local_pdb_file); if (!pf1) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_local_pdb_file); return EXIT_FAILURE; } pi_file_get_info(pf1, &infop); pf2 = pi_file_create(full_local_pdb_file2, &infop); if (!pf2) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_local_pdb_file2); return EXIT_FAILURE; } pi_file_get_app_info(pf1, &app_info, &size); pi_file_set_app_info(pf2, bufp, size_in); pi_file_get_sort_info(pf1, &sort_info, &size); pi_file_set_sort_info(pf2, sort_info, size); for(idx=0;;idx++) { r = pi_file_read_record(pf1, idx, &record, &size, &attr, &cat, &uid); if (r<0) break; pi_file_append_record(pf2, record, size, attr, cat, uid); } pi_file_close(pf1); pi_file_close(pf2); if (rename(full_local_pdb_file2, full_local_pdb_file) < 0) { jp_logf(JP_LOG_WARN, "pdb_file_write_app_block(): %s\n", _("rename failed")); } utime(full_local_pdb_file, ×); return EXIT_SUCCESS; } /* DB_name is filename with extention and path, i.e: "/tmp/Net Prefs.prc" */ int pdb_file_write_dbinfo(char *full_DB_name, struct DBInfo *Pinfo_in) { char full_local_pdb_file2[FILENAME_MAX]; struct pi_file *pf1, *pf2; struct DBInfo infop; void *app_info; void *sort_info; void *record; int r; int idx; size_t size; int attr; int cat; pi_uid_t uid; struct stat statb; struct utimbuf times; jp_logf(JP_LOG_DEBUG, "pdb_file_write_dbinfo\n"); g_snprintf(full_local_pdb_file2, sizeof(full_local_pdb_file2), "%s2", full_DB_name); /* After we are finished, set the create and modify times of new file to the same as the old */ stat(full_DB_name, &statb); times.actime = statb.st_atime; times.modtime = statb.st_mtime; pf1 = pi_file_open(full_DB_name); if (!pf1) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_DB_name); return EXIT_FAILURE; } pi_file_get_info(pf1, &infop); /* Set the DBInfo to the one coming into the function */ pf2 = pi_file_create(full_local_pdb_file2, Pinfo_in); if (!pf2) { jp_logf(JP_LOG_WARN, _("Unable to open file: %s\n"), full_local_pdb_file2); return EXIT_FAILURE; } pi_file_get_app_info(pf1, &app_info, &size); pi_file_set_app_info(pf2, app_info, size); pi_file_get_sort_info(pf1, &sort_info, &size); pi_file_set_sort_info(pf2, sort_info, size); for(idx=0;;idx++) { r = pi_file_read_record(pf1, idx, &record, &size, &attr, &cat, &uid); if (r<0) break; pi_file_append_record(pf2, record, size, attr, cat, uid); } pi_file_close(pf1); pi_file_close(pf2); if (rename(full_local_pdb_file2, full_DB_name) < 0) { jp_logf(JP_LOG_WARN, "pdb_file_write_dbinfo(): %s\n", _("rename failed")); } utime(full_DB_name, ×); return EXIT_SUCCESS; } void print_string(char *str, int len) { unsigned char c; int i; for (i=0;i= 0x7f) jp_logf(JP_LOG_STDOUT, "%x", c); else jp_logf(JP_LOG_STDOUT, "%c", c); } jp_logf(JP_LOG_STDOUT, "\n"); } int read_gtkrc_file(void) { char filename[FILENAME_MAX]; char fullname[FILENAME_MAX]; struct stat buf; const char *svalue; get_pref(PREF_RCFILE, NULL, &svalue); if (svalue) { jp_logf(JP_LOG_DEBUG, "rc file from prefs is %s\n", svalue); } else { jp_logf(JP_LOG_DEBUG, "rc file from prefs is NULL\n"); } g_strlcpy(filename, svalue, sizeof(filename)); /* Try to read the file out of the home directory first */ get_home_file_name(filename, fullname, sizeof(fullname)); if (stat(fullname, &buf)==0) { jp_logf(JP_LOG_DEBUG, "parsing %s\n", fullname); gtk_rc_parse(fullname); return EXIT_SUCCESS; } g_snprintf(fullname, sizeof(fullname), "%s/%s/%s/%s", BASE_DIR, "share", EPN, filename); if (stat(fullname, &buf)==0) { jp_logf(JP_LOG_DEBUG, "parsing %s\n", fullname); gtk_rc_parse(fullname); return EXIT_SUCCESS; } return EXIT_FAILURE; } /* Parse the string and replace CR and LFs with spaces */ void remove_cr_lfs(char *str) { int i; if (!str) { return; } for (i=0; str[i]; i++) { if ((str[i]=='\r') || (str[i]=='\n')) { str[i]=' '; } } } void rename_dbnames(char dbname[][32]) { int i; long datebook_version, address_version, todo_version, memo_version; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); get_pref(PREF_ADDRESS_VERSION, &address_version, NULL); get_pref(PREF_TODO_VERSION, &todo_version, NULL); get_pref(PREF_MEMO_VERSION, &memo_version, NULL); for (i=0; dbname[i] && dbname[i][0]; i++) { if (datebook_version==1) { if (!strcmp(dbname[i], "DatebookDB.pdb")) { strcpy(dbname[i], "CalendarDB-PDat.pdb"); } if (!strcmp(dbname[i], "DatebookDB.pc3")) { strcpy(dbname[i], "CalendarDB-PDat.pc3"); } if (!strcmp(dbname[i], "DatebookDB")) { strcpy(dbname[i], "CalendarDB-PDat"); } } if (address_version==1) { if (!strcmp(dbname[i], "AddressDB.pdb")) { strcpy(dbname[i], "ContactsDB-PAdd.pdb"); } if (!strcmp(dbname[i], "AddressDB.pc3")) { strcpy(dbname[i], "ContactsDB-PAdd.pc3"); } if (!strcmp(dbname[i], "AddressDB")) { strcpy(dbname[i], "ContactsDB-PAdd"); } } if (todo_version==1) { if (!strcmp(dbname[i], "ToDoDB.pdb")) { strcpy(dbname[i], "TasksDB-PTod.pdb"); } if (!strcmp(dbname[i], "ToDoDB.pc3")) { strcpy(dbname[i], "TasksDB-PTod.pc3"); } if (!strcmp(dbname[i], "ToDoDB")) { strcpy(dbname[i], "TasksDB-PTod"); } } if (memo_version==1) { if (!strcmp(dbname[i], "MemoDB.pdb")) { strcpy(dbname[i], "MemosDB-PMem.pdb"); } if (!strcmp(dbname[i], "MemoDB.pc3")) { strcpy(dbname[i], "MemosDB-PMem.pc3"); } if (!strcmp(dbname[i], "MemoDB")) { strcpy(dbname[i], "MemosDB-PMem"); } } if (memo_version==2) { if (!strcmp(dbname[i], "MemoDB.pdb")) { strcpy(dbname[i], "Memo32DB.pdb"); } if (!strcmp(dbname[i], "MemoDB.pc3")) { strcpy(dbname[i], "Memo32DB.pc3"); } if (!strcmp(dbname[i], "MemoDB")) { strcpy(dbname[i], "Memo32DB"); } } } } int rename_file(char *old_filename, char *new_filename) { char old_fullname[FILENAME_MAX]; char new_fullname[FILENAME_MAX]; get_home_file_name(old_filename, old_fullname, sizeof(old_fullname)); get_home_file_name(new_filename, new_fullname, sizeof(new_fullname)); return rename(old_fullname, new_fullname); } void set_bg_rgb_clist_row(GtkWidget *clist, int row, int r, int g, int b) { GtkStyle *old_style, *new_style; GdkColor color; if ((old_style = gtk_widget_get_style(clist))) { new_style = gtk_style_copy(old_style); } else { new_style = gtk_style_new(); } color.red=r; color.green=g; color.blue=b; color.pixel=0; new_style->base[GTK_STATE_NORMAL] = color; gtk_clist_set_row_style(GTK_CLIST(clist), row, new_style); } void set_fg_rgb_clist_cell(GtkWidget *clist, int row, int col, int r, int g, int b) { GtkStyle *old_style, *new_style; GdkColor fg_color; if ((old_style = gtk_clist_get_row_style(GTK_CLIST(clist), row)) || (old_style = gtk_widget_get_style(clist))) { new_style = gtk_style_copy(old_style); } else { new_style = gtk_style_new(); } fg_color.red=r; fg_color.green=g; fg_color.blue=b; fg_color.pixel=0; new_style->fg[GTK_STATE_NORMAL] = fg_color; new_style->fg[GTK_STATE_SELECTED] = fg_color; gtk_clist_set_cell_style(GTK_CLIST(clist), row, col, new_style); } int setup_sync(unsigned int flags) { long num_backups; const char *svalue; const char *port; int r; #ifndef HAVE_SETENV char str[80]; #endif struct my_sync_info sync_info; /* look in env for PILOTRATE first */ if (!(getenv("PILOTRATE"))) { get_pref(PREF_RATE, NULL, &svalue); jp_logf(JP_LOG_DEBUG, "setting PILOTRATE=[%s]\n", svalue); if (svalue) { #ifdef HAVE_SETENV setenv("PILOTRATE", svalue, TRUE); #else sprintf(str, "PILOTRATE=%s", svalue); putenv(str); #endif } } get_pref(PREF_PORT, NULL, &port); get_pref(PREF_NUM_BACKUPS, &num_backups, NULL); jp_logf(JP_LOG_DEBUG, "pref port=[%s]\n", port); jp_logf(JP_LOG_DEBUG, "num_backups=%d\n", num_backups); get_pref(PREF_USER, NULL, &svalue); g_strlcpy(sync_info.username, svalue, sizeof(sync_info.username)); get_pref(PREF_USER_ID, &(sync_info.userID), NULL); get_pref(PREF_PC_ID, &(sync_info.PC_ID), NULL); if (sync_info.PC_ID == 0) { srandom(time(NULL)); /* RAND_MAX is 32768 on Solaris machines for some reason. * If someone knows how to fix this, let me know. */ if (RAND_MAX==32768) { sync_info.PC_ID = 1+(2000000000.0*random()/(2147483647+1.0)); } else { sync_info.PC_ID = 1+(2000000000.0*random()/(RAND_MAX+1.0)); } jp_logf(JP_LOG_WARN, _("PC ID is 0.\n")); jp_logf(JP_LOG_WARN, _("Generated a new PC ID. It is %lu\n"), sync_info.PC_ID); set_pref(PREF_PC_ID, sync_info.PC_ID, NULL, TRUE); } sync_info.sync_over_ride = 0; g_strlcpy(sync_info.port, port, sizeof(sync_info.port)); sync_info.flags=flags; sync_info.num_backups=num_backups; r = sync_once(&sync_info); return r; } /* * Copy src string into dest while escaping quotes with double quotes. * dest could be as long as strlen(src)*2. * Return value is the number of chars written to dest. */ int str_to_csv_str(char *dest, char *src) { int s, d; if (dest) dest[0]='\0'; if ((!src) || (!dest)) { return EXIT_SUCCESS; } s=d=0; while (src[s]) { if (src[s]=='\"') { dest[d++]='\"'; } dest[d++]=src[s++]; } dest[d++]='\0'; return d; } /* * Copy src string into dest while escaping carriage returns with
    * dest could be as long as strlen(src)*5. * Return value is the number of chars written to dest. */ int str_to_keepass_str(char *dest, char *src) { int s, d; if (dest) dest[0]='\0'; if ((!src) || (!dest)) { return EXIT_SUCCESS; } s=d=0; while (src[s]) { if (src[s]=='\n') { dest[d++]='<'; dest[d++]='b'; dest[d++]='r'; dest[d++]='/'; dest[d++]='>'; s++; continue; } if (src[s]=='&') { dest[d++]='&'; dest[d++]='a'; dest[d++]='m'; dest[d++]='p'; dest[d++]=';'; s++; continue; } if (src[s]=='<') { dest[d++]='&'; dest[d++]='l'; dest[d++]='t'; dest[d++]=';'; s++; continue; } if (src[s]=='>') { dest[d++]='&'; dest[d++]='g'; dest[d++]='t'; dest[d++]=';'; s++; continue; } dest[d++]=src[s++]; } dest[d++]='\0'; return d; } /* * Quote a TEXT format string as specified by RFC 2445. * Wrap it at 60-ish characters. */ int str_to_ical_str(char *dest, int destsz, char *src) { return str_to_iv_str(dest, destsz, src, 1); } /* * Quote for iCalendar (RFC 2445) or vCard (RFC 2426). * The only difference is that iCalendar also quotes semicolons. * Wrap at 70-ish characters. */ static int str_to_iv_str(char *dest, int destsz, char *src, int isical) { int c, i; char *destend, *odest; if ((!src) || (!dest)) { return EXIT_SUCCESS; } odest = dest; destend = dest + destsz - 4; /* max 4 chars into dest per loop iteration */ c=0; while (*src) { if (dest >= destend) { break; } if (c>ICAL_LINE_LENGTH) { /* Assume UTF-8 coding and stop on a valid character boundary */ for (i=0; i<4; i++) { if ((*src & 0xC0) != 0x80) { if (*src) { *dest++= CR; *dest++= LF; *dest++=' '; } c=0; break; } *dest++=*src++; } if (c != 0) { jp_logf(JP_LOG_WARN,_("Invalid UTF-8 encoding in export string\n")); /* Force truncation of line anyways */ *dest++= CR; *dest++= LF; *dest++=' '; c=0; } continue; } if (*src=='\n') { *dest++='\\'; *dest++='n'; c+=2; src++; continue; } if (*src=='\\' || (isical && *src == ';') || *src == ',') { *dest++='\\'; c++; } *dest++=*src++; c++; } *dest++='\0'; return dest - odest; } /* * Quote a *TEXT-LIST-CHAR format string as specified by RFC 2426. * Wrap it at 60-ish characters. */ int str_to_vcard_str(char *dest, int destsz, char *src) { return str_to_iv_str(dest, destsz, src, 0); } /* * This is a slow algorithm, but its not used much */ int sub_days_from_date(struct tm *date, int n) { int ndim; int fdom; int flag; int reset_days; int i; get_month_info(date->tm_mon, 1, date->tm_year, &fdom, &ndim); for (i=0; itm_mday) < 1) { date->tm_mday=28; reset_days = 1; flag = 1; if (--(date->tm_mon) < 0) { date->tm_mon=11; flag = 1; if (--(date->tm_year)<3) { date->tm_year = 3; } } } if (flag) { get_month_info(date->tm_mon, 1, date->tm_year, &fdom, &ndim); } /* this assumes that flag is always set when reset_days is set */ if (reset_days) { date->tm_mday=ndim; } } date->tm_isdst=-1; mktime(date); return EXIT_SUCCESS; } /* * This function will decrement the date by n number of months and * adjust the day to the last day of the month if it exceeds the number * of days in the new month */ int sub_months_from_date(struct tm *date, int n) { int i; int days_in_month[]={31,28,31,30,31,30,31,31,30,31,30,31}; for (i=0; itm_mon) < 0) { date->tm_mon=11; if (--(date->tm_year)<3) { date->tm_year = 3; } } } if ((date->tm_year%4 == 0) && !(((date->tm_year+1900)%100==0) && ((date->tm_year+1900)%400!=0))) { days_in_month[1]++; } if (date->tm_mday > days_in_month[date->tm_mon]) { date->tm_mday = days_in_month[date->tm_mon]; } date->tm_isdst=-1; mktime(date); return EXIT_SUCCESS; } int sub_years_from_date(struct tm *date, int n) { return add_or_sub_years_to_date(date, -n); } gint timeout_sync_up(gpointer data) { time_t ltime; struct tm *now; int secs, diff_secs; int timeout_interval = get_timeout_interval(); if (timeout_interval == CLOCK_TICK) { glob_date_timer_tag = gtk_timeout_add(timeout_interval, timeout_date, NULL); } else { /* Interval is in minutes. Sync up with current time */ time(<ime); now = localtime(<ime); secs = now->tm_sec; if (secs < 2) { glob_date_timer_tag = gtk_timeout_add(timeout_interval, timeout_date, NULL); } else { diff_secs = (secs < 61) ? 60-secs : 59; // Account for leap seconds glob_date_timer_tag = gtk_timeout_add(diff_secs*CLOCK_TICK, timeout_sync_up, NULL); } } timeout_date(NULL); // Update label return FALSE; // Destroy this timeout } gint timeout_date(gpointer data) { char str[102]; char datef[102]; const char *svalue1, *svalue2; time_t ltime; struct tm *now; if (glob_date_label==NULL) { return FALSE; } time(<ime); now = localtime(<ime); /* Build a long date string */ get_pref(PREF_LONGDATE, NULL, &svalue1); get_pref(PREF_TIME, NULL, &svalue2); if ((svalue1==NULL)||(svalue2==NULL)) { strcpy(datef, _("Today is %A, %x %X")); } else { sprintf(datef, _("Today is %%A, %s %s"), svalue1, svalue2); } jp_strftime(str, 100, datef, now); str[100]='\0'; gtk_label_set_text(GTK_LABEL(glob_date_label), str); return TRUE; } /* * This undeletes a record from the appropriate Datafile */ int undelete_pc_record(AppType app_type, void *VP, int flag) { PC3RecordHeader header; MyAppointment *mappt; MyCalendarEvent *mcale; MyAddress *maddr; MyContact *mcont; MyToDo *mtodo; MyMemo *mmemo; unsigned int unique_id; char filename[FILENAME_MAX]; char filename2[FILENAME_MAX]; FILE *pc_file = NULL; FILE *pc_file2 = NULL; char *record; int found; int ret = -1; int num; #ifdef ENABLE_MANANA long ivalue; #endif char dbname[][32]={ "DatebookDB.pc3", "AddressDB.pc3", "ToDoDB.pc3", "MemoDB.pc3", "" }; if (VP==NULL) { return EXIT_FAILURE; } /* Convert to new database names if prefs set */ rename_dbnames(dbname); /* to keep the compiler happy with -Wall*/ mappt = NULL; mcale = NULL; maddr = NULL; mcont = NULL; mmemo = NULL; switch (app_type) { case DATEBOOK: mappt = (MyAppointment *) VP; unique_id = mappt->unique_id; strcpy(filename, dbname[0]); break; case CALENDAR: mcale = (MyCalendarEvent *) VP; unique_id = mcale->unique_id; strcpy(filename, dbname[0]); break; case ADDRESS: maddr = (MyAddress *) VP; unique_id = maddr->unique_id; strcpy(filename, dbname[1]); break; case CONTACTS: mcont = (MyContact *) VP; unique_id = mcont->unique_id; strcpy(filename, dbname[1]); break; case TODO: mtodo = (MyToDo *) VP; unique_id = mtodo->unique_id; #ifdef ENABLE_MANANA get_pref(PREF_MANANA_MODE, &ivalue, NULL); if (ivalue) { strcpy(filename, "MananaDB.pc3"); } else { strcpy(filename, dbname[2]); } #else strcpy(filename, dbname[2]); #endif break; case MEMO: mmemo = (MyMemo *) VP; unique_id = mmemo->unique_id; strcpy(filename, dbname[3]); break; default: return EXIT_SUCCESS; } found = FALSE; record = NULL; g_snprintf(filename2, sizeof(filename2), "%s.pct", filename); pc_file = jp_open_home_file(filename , "r"); if (!pc_file) { return EXIT_FAILURE; } pc_file2=jp_open_home_file(filename2, "w"); if (!pc_file2) { jp_close_home_file(pc_file); return EXIT_FAILURE; } while(!feof(pc_file)) { read_header(pc_file, &header); if (feof(pc_file)) { break; } /* Skip copying DELETED_PALM_REC entry which undeletes it */ if (header.unique_id == unique_id && header.rt == DELETED_PALM_REC) { found = TRUE; if (fseek(pc_file, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); ret = -1; break; } continue; } /* Change header on DELETED_PC_REC to undelete this type */ if ((header.unique_id == unique_id) && (header.rt == DELETED_PC_REC)) { found = TRUE; header.rt = NEW_PC_REC; } /* Otherwise, keep whatever is there by copying it to the new pc3 file */ record = malloc(header.rec_len); if (!record) { jp_logf(JP_LOG_WARN, "cleanup_pc_file(): Out of memory\n"); ret = -1; break; } num = fread(record, header.rec_len, 1, pc_file); if (num != 1) { if (ferror(pc_file)) { ret = -1; break; } } ret = write_header(pc_file2, &header); ret = fwrite(record, header.rec_len, 1, pc_file2); if (ret != 1) { ret = -1; break; } free(record); record = NULL; } if (record) { free(record); } if (pc_file) { jp_close_home_file(pc_file); } if (pc_file2) { jp_close_home_file(pc_file2); } if (found) { rename_file(filename2, filename); } else { unlink_file(filename2); } return ret; } int unlink_file(char *filename) { char fullname[FILENAME_MAX]; get_home_file_name(filename, fullname, sizeof(fullname)); return unlink(fullname); } int unpack_db_header(DBHeader *dbh, unsigned char *buffer) { unsigned long temp; g_strlcpy(dbh->db_name, (char *)buffer, 32); dbh->flags = bytes_to_bin(buffer + 32, 2); dbh->version = bytes_to_bin(buffer + 34, 2); temp = bytes_to_bin(buffer + 36, 4); dbh->creation_time = pilot_time_to_unix_time(temp); temp = bytes_to_bin(buffer + 40, 4); dbh->modification_time = pilot_time_to_unix_time(temp); temp = bytes_to_bin(buffer + 44, 4); dbh->backup_time = pilot_time_to_unix_time(temp); dbh->modification_number = bytes_to_bin(buffer + 48, 4); dbh->app_info_offset = bytes_to_bin(buffer + 52, 4); dbh->sort_info_offset = bytes_to_bin(buffer + 56, 4); g_strlcpy(dbh->type, (char *)(buffer + 60), 5); g_strlcpy(dbh->creator_id, (char *)(buffer + 64), 5); g_strlcpy(dbh->unique_id_seed, (char *)(buffer + 68), 5); dbh->next_record_list_id = bytes_to_bin(buffer + 72, 4); dbh->number_of_records = bytes_to_bin(buffer + 76, 2); return EXIT_SUCCESS; } /* Validate CSV header before import * Current test merely checks for the correct number of fields in the header * but does not check name, type, etc. More tests could also be added * to compare the jpilot version that produced the file with the jpilot * version that is importing the file. */ int verify_csv_header(const char *header, int num_fields, const char *file_name) { int i, comma_cnt; for (i=0, comma_cnt=0; i #include #include #include #include #include #include #include #include "libplugin.h" #include "i18n.h" #include "utils.h" /****************************** Prototypes ************************************/ static int pack_header(PC3RecordHeader *header, unsigned char *packed_header); static int static_find_next_offset(mem_rec_header *mem_rh, long fpos, long *next_offset, unsigned char *attrib, unsigned int *unique_id); static void static_free_mem_rec_header(mem_rec_header **mem_rh); static int unpack_header(PC3RecordHeader *header, unsigned char *packed_header); /****************************** Main Code *************************************/ /* * This deletes a record from the appropriate Datafile */ int jp_delete_record(const char *DB_name, buf_rec *br, int flag) { FILE *pc_in; PC3RecordHeader header; char PC_name[FILENAME_MAX]; if (br==NULL) { return EXIT_FAILURE; } g_snprintf(PC_name, sizeof(PC_name), "%s.pc3", DB_name); if ((br->rt==DELETED_PALM_REC) || (br->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("This record is already deleted.\n" "It is scheduled to be deleted from the Palm on the next sync.\n")); return EXIT_SUCCESS; } switch (br->rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: pc_in=jp_open_home_file(PC_name, "r+"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open PC records file\n")); return EXIT_FAILURE; } while(!feof(pc_in)) { read_header(pc_in, &header); if (feof(pc_in)) { jp_logf(JP_LOG_WARN, _("Couldn't find record to delete\n")); jp_close_home_file(pc_in); return EXIT_FAILURE; } if (header.header_version==2) { /* Keep unique ID intact */ if ((header.unique_id==br->unique_id) && ((header.rt==NEW_PC_REC) || (header.rt==REPLACEMENT_PALM_REC))) { if (fseek(pc_in, -header.header_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); } header.rt=DELETED_PC_REC; write_header(pc_in, &header); jp_logf(JP_LOG_DEBUG, "record deleted\n"); jp_close_home_file(pc_in); return EXIT_SUCCESS; } } else { jp_logf(JP_LOG_WARN, _("Unknown header version %d\n"), header.header_version); } if (fseek(pc_in, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); } } jp_close_home_file(pc_in); return EXIT_FAILURE; case PALM_REC: jp_logf(JP_LOG_DEBUG, "Deleting Palm ID %d\n", br->unique_id); pc_in=jp_open_home_file(PC_name, "a"); if (pc_in==NULL) { jp_logf(JP_LOG_WARN, _("Unable to open PC records file\n")); return EXIT_FAILURE; } header.unique_id=br->unique_id; if (flag==MODIFY_FLAG) { header.rt=MODIFIED_PALM_REC; } else { header.rt=DELETED_PALM_REC; } header.attrib=br->attrib; header.rec_len=br->size; jp_logf(JP_LOG_DEBUG, "writing header to pc file\n"); write_header(pc_in, &header); /* This will be used during the sync process to make sure the palm * record hasn't changed before it is deleted. */ jp_logf(JP_LOG_DEBUG, "writing record to pc file, %d bytes\n", header.rec_len); fwrite(br->buf, header.rec_len, 1, pc_in); jp_logf(JP_LOG_DEBUG, "record deleted\n"); jp_close_home_file(pc_in); break; default: break; } return EXIT_SUCCESS; } int jp_edit_cats(GtkWidget *widget, char *db_name, struct CategoryAppInfo *cai) { return edit_cats(widget, db_name, cai); } int jp_free_DB_records(GList **br_list) { GList *temp_list; buf_rec *br; for (temp_list = *br_list; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; if (br->buf) { free(br->buf); temp_list->data=NULL; } free(br); } } g_list_free(*br_list); *br_list=NULL; return EXIT_SUCCESS; } int jp_get_app_info(const char *DB_name, unsigned char **buf, int *buf_size) { FILE *in; int num; int rec_size; unsigned char raw_header[LEN_RAW_DB_HEADER]; DBHeader dbh; char PDB_name[FILENAME_MAX]; if ((!buf_size) || (!buf)) { return EXIT_FAILURE; } *buf = NULL; *buf_size=0; g_snprintf(PDB_name, sizeof(PDB_name), "%s.pdb", DB_name); in = jp_open_home_file(PDB_name, "r"); if (!in) { jp_logf(JP_LOG_WARN, _("%s:%d Error opening file: %s\n"), __FILE__, __LINE__, PDB_name); return EXIT_FAILURE; } num = fread(raw_header, LEN_RAW_DB_HEADER, 1, in); if (num != 1) { if (ferror(in)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading file: %s\n"), __FILE__, __LINE__, PDB_name); jp_close_home_file(in); return EXIT_FAILURE; } if (feof(in)) { jp_close_home_file(in); return JPILOT_EOF; } } unpack_db_header(&dbh, raw_header); num = get_app_info_size(in, &rec_size); if (num) { jp_close_home_file(in); return EXIT_FAILURE; } fseek(in, dbh.app_info_offset, SEEK_SET); *buf=malloc(rec_size); if (!(*buf)) { jp_logf(JP_LOG_WARN, "jp_get_app_info(): %s\n", _("Out of memory")); jp_close_home_file(in); return EXIT_FAILURE; } num = fread(*buf, rec_size, 1, in); if (num != 1) { if (ferror(in)) { jp_close_home_file(in); free(*buf); jp_logf(JP_LOG_WARN, _("%s:%d Error reading file: %s\n"), __FILE__, __LINE__, PDB_name); return EXIT_FAILURE; } } jp_close_home_file(in); *buf_size=rec_size; return EXIT_SUCCESS; } int jp_get_home_file_name(const char *file, char *full_name, int max_size) { return get_home_file_name(file, full_name, max_size); } void jp_init(void) { jp_logf(0, "jp_init()\n"); } int jp_install_append_line(char *line) { FILE *out; int r; out = jp_open_home_file(EPN".install", "a"); if (!out) { return EXIT_FAILURE; } r = fprintf(out, "%s\n", line); if (r==EOF) { jp_close_home_file(out); return EXIT_FAILURE; } jp_close_home_file(out); return EXIT_SUCCESS; } /* * file must not be open elsewhere when this is called * the first line in file is 0 */ int jp_install_remove_line(int deleted_line) { FILE *in; FILE *out; char line[1002]; char *Pc; int r, line_count; in = jp_open_home_file(EPN".install", "r"); if (!in) { jp_logf(JP_LOG_DEBUG, "failed opening install_file\n"); return EXIT_FAILURE; } out = jp_open_home_file(EPN".install.tmp", "w"); if (!out) { jp_close_home_file(in); jp_logf(JP_LOG_DEBUG, "failed opening install_file.tmp\n"); return EXIT_FAILURE; } for (line_count=0; (!feof(in)); line_count++) { line[0]='\0'; Pc = fgets(line, sizeof(line), in); if (!Pc) { break; } if (line_count == deleted_line) { continue; } r = fprintf(out, "%s", line); if (r==EOF) { break; } } jp_close_home_file(in); jp_close_home_file(out); rename_file(EPN".install.tmp", EPN".install"); return EXIT_SUCCESS; } static void jp_pack_htonl(unsigned char *dest, unsigned long l) { dest[3]=l & 0xFF; dest[2]=l>>8 & 0xFF; dest[1]=l>>16 & 0xFF; dest[0]=l>>24 & 0xFF; } /* * if buf_rec->unique_id==0 then the palm assigns an ID, else * use buf_rec->unique_id. */ int jp_pc_write(const char *DB_name, buf_rec *br) { PC3RecordHeader header; FILE *out; unsigned int next_unique_id; unsigned char packed_header[256]; int len; char PC_name[FILENAME_MAX]; g_snprintf(PC_name, sizeof(PC_name), "%s.pc3", DB_name); if (br->unique_id==0) { get_next_unique_pc_id(&next_unique_id); header.unique_id=next_unique_id; br->unique_id=next_unique_id; } else { header.unique_id=br->unique_id; } #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "br->unique id = %d\n",br->unique_id); #endif out = jp_open_home_file(PC_name, "a"); if (!out) { jp_logf(JP_LOG_WARN, _("Error opening file: %s\n"), PC_name); return EXIT_FAILURE; } header.rec_len=br->size; header.rt=br->rt; header.attrib=br->attrib; len = pack_header(&header, packed_header); write_header(out, &header); fwrite(br->buf, header.rec_len, 1, out); jp_close_home_file(out); return EXIT_SUCCESS; } int jp_pdb_file_write_app_block(const char *DB_name, void *bufp, int size_in) { return pdb_file_write_app_block((char *)DB_name, bufp, size_in); } int jp_read_DB_files(const char *DB_name, GList **records) { FILE *in; FILE *pc_in; char *buf; GList *temp_list; GList *end_of_list; int num_records, recs_returned, i, num, r; long offset, prev_offset, next_offset, rec_size; int out_of_order; long fpos, fend; int ret; unsigned char attrib; unsigned int unique_id; mem_rec_header *mem_rh, *temp_mem_rh, *last_mem_rh; record_header rh; unsigned char raw_header[LEN_RAW_DB_HEADER]; DBHeader dbh; buf_rec *temp_br; int temp_br_used; char PDB_name[FILENAME_MAX]; char PC_name[FILENAME_MAX]; jp_logf(JP_LOG_DEBUG, "Entering jp_read_DB_files: %s\n", DB_name); mem_rh = last_mem_rh = NULL; *records = end_of_list = NULL; recs_returned = 0; next_offset = 0; attrib = 0; unique_id = 0; g_snprintf(PDB_name, sizeof(PDB_name), "%s.pdb", DB_name); g_snprintf(PC_name, sizeof(PC_name), "%s.pc3", DB_name); in = jp_open_home_file(PDB_name, "r"); if (!in) { jp_logf(JP_LOG_WARN, _("Error opening file: %s\n"), PDB_name); return -1; } /* Read the database header */ num = fread(raw_header, LEN_RAW_DB_HEADER, 1, in); if (num != 1) { if (ferror(in)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), PDB_name); jp_close_home_file(in); return -1; } if (feof(in)) { jp_close_home_file(in); return JPILOT_EOF; } } unpack_db_header(&dbh, raw_header); #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "db_name = %s\n", dbh.db_name); jp_logf(JP_LOG_DEBUG, "num records = %d\n", dbh.number_of_records); jp_logf(JP_LOG_DEBUG, "app info offset = %d\n", dbh.app_info_offset); #endif /* Read each record entry header */ num_records = dbh.number_of_records; out_of_order = 0; prev_offset = 0; for (i=1; inext = NULL; temp_mem_rh->rec_num = i; temp_mem_rh->offset = offset; temp_mem_rh->attrib = rh.attrib; temp_mem_rh->unique_id = (rh.unique_ID[0]*256+rh.unique_ID[1])*256+rh.unique_ID[2]; if (mem_rh == NULL) { mem_rh = temp_mem_rh; last_mem_rh = temp_mem_rh; } else { last_mem_rh->next = temp_mem_rh; last_mem_rh = temp_mem_rh; } } temp_mem_rh = mem_rh; if (num_records) { if (out_of_order) { ret=static_find_next_offset(mem_rh, 0, &next_offset, &attrib, &unique_id); } else { if (mem_rh) { next_offset = mem_rh->offset; attrib = mem_rh->attrib; unique_id = mem_rh->unique_id; } } fseek(in, next_offset, SEEK_SET); while(!feof(in)) { fpos = ftell(in); if (out_of_order) { ret = static_find_next_offset(mem_rh, fpos, &next_offset, &attrib, &unique_id); if (!ret) { /* Next offset should be end of file */ fseek(in, 0, SEEK_END); fend = ftell(in); fseek(in, fpos, SEEK_SET); next_offset = fend + 1; } } else { if (temp_mem_rh) { attrib = temp_mem_rh->attrib; unique_id = temp_mem_rh->unique_id; if (temp_mem_rh->next) { temp_mem_rh = temp_mem_rh->next; next_offset = temp_mem_rh->offset; } else { /* Next offset should be end of file */ fseek(in, 0, SEEK_END); fend = ftell(in); fseek(in, fpos, SEEK_SET); next_offset = fend + 1; } } } rec_size = next_offset - fpos; #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "rec_size = %u\n",rec_size); jp_logf(JP_LOG_DEBUG, "fpos,next_offset = %u %u\n",fpos,next_offset); jp_logf(JP_LOG_DEBUG, "----------\n"); #endif buf = malloc(rec_size); if (!buf) break; num = fread(buf, 1, rec_size, in); if (numrt = PALM_REC; temp_br->unique_id = unique_id; temp_br->attrib = attrib; temp_br->buf = buf; temp_br->size = rec_size; *records = g_list_prepend(*records, temp_br); recs_returned++; } } jp_close_home_file(in); static_free_mem_rec_header(&mem_rh); /* Get the appointments out of the PC database */ pc_in = jp_open_home_file(PC_name, "r"); if (pc_in==NULL) { jp_logf(JP_LOG_DEBUG, "jp_open_home_file failed: %s\n", PC_name); return -1; } while(!feof(pc_in)) { temp_br_used = 0; temp_br = malloc(sizeof(buf_rec)); if (!temp_br) { jp_logf(JP_LOG_WARN, "jp_read_DB_files(): %s 3\n", _("Out of memory")); recs_returned = -1; break; } r = pc_read_next_rec(pc_in, temp_br); if ((r==JPILOT_EOF) || (r<0)) { free(temp_br); break; } if (temp_br->rt!=DELETED_PALM_REC && temp_br->rt!=MODIFIED_PALM_REC && temp_br->rt!=DELETED_DELETED_PALM_REC) { *records = g_list_prepend(*records, temp_br); temp_br_used = 1; recs_returned++; } if ((temp_br->rt==DELETED_PALM_REC) || (temp_br->rt==MODIFIED_PALM_REC)) { for (temp_list=*records; temp_list; temp_list=temp_list->next) { if (((buf_rec *)temp_list->data)->unique_id == temp_br->unique_id) { if (((buf_rec *)temp_list->data)->rt == PALM_REC) { ((buf_rec *)temp_list->data)->rt = temp_br->rt; } } } } if (!temp_br_used) { free(temp_br->buf); free(temp_br); } } jp_close_home_file(pc_in); jp_logf(JP_LOG_DEBUG, "Leaving jp_read_DB_files\n"); return recs_returned; } const char *jp_strstr(const char *haystack, const char *needle, int case_sense) { char *needle2; char *haystack2; register char *Ps2; register const char *Ps1; char *r; if (!haystack) { return NULL; } if (!needle) { return haystack; } if (case_sense) { return strstr(haystack, needle); } else { needle2 = malloc(strlen(needle)+2); haystack2 = malloc(strlen(haystack)+2); Ps1 = needle; Ps2 = needle2; while (Ps1[0]) { Ps2[0] = tolower(Ps1[0]); Ps1++; Ps2++; } Ps2[0]='\0'; Ps1 = haystack; Ps2 = haystack2; while (Ps1[0]) { Ps2[0] = tolower(Ps1[0]); Ps1++; Ps2++; } Ps2[0]='\0'; r = strstr(haystack2, needle2); if (r) { r = (char *)((r-haystack2)+haystack); } free(needle2); free(haystack2); return r; } } /* * This undeletes a record from the appropriate Datafile */ int jp_undelete_record(const char *DB_name, buf_rec *br, int flag) { char filename[FILENAME_MAX]; char filename2[FILENAME_MAX]; FILE *pc_file = NULL; FILE *pc_file2 = NULL; PC3RecordHeader header; char *record; unsigned int unique_id; int found; int ret = -1; int num; if (br==NULL) { return EXIT_FAILURE; } unique_id = br->unique_id; found = FALSE; record = NULL; g_snprintf(filename, sizeof(filename), "%s.pc3", DB_name); g_snprintf(filename2, sizeof(filename2), "%s.pct", filename); pc_file = jp_open_home_file(filename , "r"); if (!pc_file) { return EXIT_FAILURE; } pc_file2=jp_open_home_file(filename2, "w"); if (!pc_file2) { jp_close_home_file(pc_file); return EXIT_FAILURE; } while(!feof(pc_file)) { read_header(pc_file, &header); if (feof(pc_file)) { break; } /* Skip copying DELETED_PALM_REC entry which undeletes it */ if ((header.unique_id == unique_id) && (header.rt == DELETED_PALM_REC)) { found = TRUE; if (fseek(pc_file, header.rec_len, SEEK_CUR)) { jp_logf(JP_LOG_WARN, "fseek failed\n"); ret = -1; break; } continue; } /* Change header on DELETED_PC_REC to undelete this type */ if ((header.unique_id == unique_id) && (header.rt == DELETED_PC_REC)) { found = TRUE; header.rt = NEW_PC_REC; } /* Otherwise, keep whatever is there by copying it to the new pc3 file */ record = malloc(header.rec_len); if (!record) { jp_logf(JP_LOG_WARN, "cleanup_pc_file(): Out of memory\n"); ret = -1; break; } num = fread(record, header.rec_len, 1, pc_file); if (num != 1) { if (ferror(pc_file)) { ret = -1; break; } } ret = write_header(pc_file2, &header); ret = fwrite(record, header.rec_len, 1, pc_file2); if (ret != 1) { ret = -1; break; } free(record); record = NULL; } if (record) { free(record); } if (pc_file) { jp_close_home_file(pc_file); } if (pc_file2) { jp_close_home_file(pc_file2); } if (found) { rename_file(filename2, filename); } else { unlink_file(filename2); } return ret; } static void jp_unpack_ntohl(unsigned long *l, unsigned char *src) { *l=src[0]<<24 | src[1]<<16 | src[2]<<8 | src[3]; } static int pack_header(PC3RecordHeader *header, unsigned char *packed_header) { unsigned char *p; unsigned long l; l=0; p=packed_header; /* * Header structure: * unsigned long header_len; * unsigned long header_version; * unsigned long rec_len; * unsigned long unique_id; * unsigned long rt; * unsigned char attrib; */ /* 4 + 4 + 4 + 4 + 4 + 1 */ header->header_len = 21; header->header_version = 2; jp_pack_htonl(p, header->header_len); jp_pack_htonl(p+4, header->header_version); jp_pack_htonl(p+8, header->rec_len); jp_pack_htonl(p+12, header->unique_id); jp_pack_htonl(p+16, header->rt); memcpy(p+20, &header->attrib, 1); return header->header_len; } int pc_read_next_rec(FILE *in, buf_rec *br) { PC3RecordHeader header; int rec_len, num; char *record; if (feof(in)) { return JPILOT_EOF; } num = read_header(in, &header); if (num < 1) { if (ferror(in)) { jp_logf(JP_LOG_WARN, _("Error reading PC file 1\n")); return JPILOT_EOF; } if (feof(in)) { return JPILOT_EOF; } } rec_len = header.rec_len; record = malloc(rec_len); if (!record) { jp_logf(JP_LOG_WARN, "pc_read_next_rec(): %s\n", _("Out of memory")); return JPILOT_EOF; } num = fread(record, rec_len, 1, in); if (num != 1) { if (ferror(in)) { jp_logf(JP_LOG_WARN, _("Error reading PC file 2\n")); free(record); return JPILOT_EOF; } } br->rt = header.rt; br->unique_id = header.unique_id; br->attrib = header.attrib; br->buf = record; br->size = rec_len; return EXIT_SUCCESS; } /* FIXME: Add jp_ and document. */ int read_header(FILE *pc_in, PC3RecordHeader *header) { unsigned char packed_header[256]; int num; num = fread(packed_header, 4, 1, pc_in); if (feof(pc_in)) { return JPILOT_EOF; } if (num!=1) { return num; } jp_unpack_ntohl(&(header->header_len), packed_header); if (header->header_len > sizeof(packed_header)-1) { jp_logf(JP_LOG_WARN, "read_header() %s\n", _("error")); return EXIT_FAILURE; } num = fread(packed_header+4, (header->header_len)-4, 1, pc_in); if (feof(pc_in)) { return JPILOT_EOF; } if (num!=1) { return num; } unpack_header(header, packed_header); #ifdef JPILOT_DEBUG printf("header_len =%ld\n", header->header_len); printf("header_version=%ld\n", header->header_version); printf("rec_len =%ld\n", header->rec_len); printf("unique_id =%ld\n", header->unique_id); printf("rt =%ld\n", header->rt); printf("attrib =%d\n", header->attrib); #endif return 1; } /* returns 1 if found */ /* 0 if eof */ static int static_find_next_offset(mem_rec_header *mem_rh, long fpos, long *next_offset, unsigned char *attrib, unsigned int *unique_id) { mem_rec_header *temp_mem_rh; unsigned char found = 0; unsigned long found_at; found_at=0x1000000; for (temp_mem_rh=mem_rh; temp_mem_rh; temp_mem_rh = temp_mem_rh->next) { if ((temp_mem_rh->offset > fpos) && (temp_mem_rh->offset < found_at)) { found_at = temp_mem_rh->offset; } if ((temp_mem_rh->offset == fpos)) { found = 1; *attrib = temp_mem_rh->attrib; *unique_id = temp_mem_rh->unique_id; } } *next_offset = found_at; return found; } static void static_free_mem_rec_header(mem_rec_header **mem_rh) { mem_rec_header *h, *next_h; for (h=*mem_rh; h; h=next_h) { next_h=h->next; free(h); } *mem_rh=NULL; } static int unpack_header(PC3RecordHeader *header, unsigned char *packed_header) { unsigned char *p; /* * Header structure: * unsigned long header_len; * unsigned long header_version; * unsigned long rec_len; * unsigned long unique_id; * unsigned long rt; * unsigned char attrib; */ p = packed_header; jp_unpack_ntohl(&(header->header_len), p); jp_unpack_ntohl(&(header->header_version), p+4); if (header->header_version > 2) { jp_logf(JP_LOG_WARN, _("Unknown PC header version = %d\n"), header->header_version); } jp_unpack_ntohl(&(header->rec_len), p+8); jp_unpack_ntohl(&(header->unique_id), p+12); jp_unpack_ntohl(&(header->rt), p+16); header->attrib = p[20]; return EXIT_SUCCESS; } /* FIXME: Add jp_ and document */ int write_header(FILE *pc_out, PC3RecordHeader *header) { unsigned long len; unsigned char packed_header[256]; len = pack_header(header, packed_header); if (len>0) { fwrite(packed_header, len, 1, pc_out); } else { jp_logf(JP_LOG_WARN, "%s:%d pack_header returned error\n", __FILE__, __LINE__); } return len; } jpilot-1.8.2/address.h0000664000175000017500000000637112340261240011545 00000000000000/******************************************************************************* * address.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __ADDRESS_H__ #define __ADDRESS_H__ #include #include "utils.h" /* * This describes how to draw a GUI entry for each field in an address record */ typedef struct { int record_field; int notebook_page; int type; } address_schema_entry; #define NUM_IMS 2 #define NUM_ADDRESSES 3 #define NUM_CONTACT_NOTEBOOK_PAGES 6 #define NUM_ADDRESS_NOTEBOOK_PAGES 4 #define NUM_ADDRESS_FIELDS 19 #define ADDRESS_GUI_LABEL_TEXT 2 /* Show a label and a textview widget */ #define ADDRESS_GUI_DIAL_SHOW_PHONE_MENU_TEXT 3 /* Show a dial button, show in list radio button, and a phone menu, and a textview */ #define ADDRESS_GUI_IM_MENU_TEXT 4 /* Show a IM menu and a textview */ #define ADDRESS_GUI_ADDR_MENU_TEXT 5 /* Show a address menu and a textview */ #define ADDRESS_GUI_WEBSITE_TEXT 6 /* Show a website button and a textview */ #define ADDRESS_GUI_BIRTHDAY 7 /* Show a birthdate checkbox and complex birthday GUI */ #define SORT_BY_LNAME 1 #define SORT_BY_FNAME 2 #define SORT_BY_COMPANY 4 /* This flag affects sorting of address records */ extern int addr_sort_order; int get_address_app_info(struct AddressAppInfo *aai); int pc_address_write(struct Address *a, PCRecType rt, unsigned char attrib, unsigned int *unqiue_id); void free_AddressList(AddressList **al); int get_addresses(AddressList **address_list, int sort_order); int get_addresses2(AddressList **address_list, int sort_order, int modified, int deleted, int privates, int category); int address_print(void); int address_import(GtkWidget *window); int address_export(GtkWidget *window); /* Contact header */ int get_contact_app_info(struct ContactAppInfo *cai); int pc_contact_write(struct Contact *c, PCRecType rt, unsigned char attrib, unsigned int *unqiue_id); void free_ContactList(ContactList **cl); int get_contacts(ContactList **contact_list, int sort_order); int get_contacts2(ContactList **contact_list, int sort_order, int modified, int deleted, int privates, int category); int copy_address_ai_to_contact_ai(const struct AddressAppInfo *aai, struct ContactAppInfo *cai); int copy_contact_to_address(const struct Contact *c, struct Address *a); int copy_address_to_contact(const struct Address *a, struct Contact *c); int copy_addresses_to_contacts(AddressList *al, ContactList **cl); #endif jpilot-1.8.2/datebook.c0000664000175000017500000006412312340261240011702 00000000000000/******************************************************************************* * datebook.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "datebook.h" #include "calendar.h" #include "log.h" #include "prefs.h" #include "libplugin.h" #include "password.h" /****************************** Main Code *************************************/ int appointment_on_day_list(int mon, int year, int *mask, int category, int datebook_version) { struct tm tm_dom; CalendarEventList *tcel, *cel; int dow, ndim; int bit; int show_priv; int skip_privates; memset(&tm_dom, 0, sizeof(tm_dom)); tm_dom.tm_hour=11; tm_dom.tm_mday=1; tm_dom.tm_mon=mon; tm_dom.tm_year=year; cel = NULL; /* Get private records back * We want to highlight a day with a private record if we are showing or * masking private records */ if (datebook_version) { /* Calendar supports category option */ get_days_calendar_events2(&cel, NULL, 2, 2, 1, category, NULL); } else { get_days_calendar_events2(&cel, NULL, 2, 2, 1, CATEGORY_ALL, NULL); } show_priv = show_privates(GET_PRIVATES); skip_privates = (show_priv==HIDE_PRIVATES); get_month_info(mon, 1, year, &dow, &ndim); *mask = 0; weed_calendar_event_list(&cel, mon, year, skip_privates, mask); for (tm_dom.tm_mday=1, bit=1; tm_dom.tm_mday<=ndim; tm_dom.tm_mday++, bit=bit<<1) { if (*mask & bit) { continue; } mktime(&tm_dom); for (tcel=cel; tcel; tcel = tcel->next) { if (calendar_isApptOnDate(&(tcel->mcale.cale), &tm_dom)) { *mask = *mask | bit; break; } } } free_CalendarEventList(&cel); return EXIT_SUCCESS; } /* returns 0 if times equal */ /* returns 1 if time1 is greater (later) */ /* returns 2 if time2 is greater (later) */ int compareTimesToDay(struct tm *tm1, struct tm *tm2) { unsigned int t1, t2; t1 = tm1->tm_year*366+tm1->tm_yday; t2 = tm2->tm_year*366+tm2->tm_yday; if (t1 > t2 ) return 1; if (t1 < t2 ) return 2; return 0; } /* Year is years since 1900 */ /* Mon is 0-11 */ /* Day is 1-31 */ /* */ int datebook_add_exception(struct CalendarEvent *cale, int year, int mon, int day) { struct tm *new_exception, *Ptm; if (cale->exceptions==0) { cale->exception=NULL; } new_exception = malloc((cale->exceptions + 1) * sizeof(struct tm)); if (!new_exception) { jp_logf(JP_LOG_WARN, "datebook_add_exception(): %s\n", _("Out of memory")); return EXIT_FAILURE; } memcpy(new_exception, cale->exception, (cale->exceptions) * sizeof(struct tm)); free(cale->exception); cale->exceptions++; cale->exception = new_exception; Ptm = &(cale->exception[cale->exceptions - 1]); Ptm->tm_year = year; Ptm->tm_mon = mon; Ptm->tm_mday = day; Ptm->tm_hour = 0; Ptm->tm_min = 0; Ptm->tm_sec = 0; Ptm->tm_isdst = -1; mktime(Ptm); return EXIT_SUCCESS; } /* All datebook appts are handled as calendar events now. * This code scrap is being kept for reference only. */ #if 0 /* * If a copy is made, then it should be freed through free_Appointment */ static int datebook_copy_appointment(struct Appointment *a1, struct Appointment **a2) { long datebook_version; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); *a2=malloc(sizeof(struct Appointment)); if (!(*a2)) { jp_logf(JP_LOG_WARN, "datebook_copy_appointment(): %s\n", _("Out of memory")); return EXIT_FAILURE; } memcpy(*a2, a1, sizeof(struct Appointment)); (*a2)->exception = malloc(a1->exceptions * sizeof(struct tm)); if (!(*a2)->exception) { jp_logf(JP_LOG_WARN, "datebook_copy_appointment(): %s 2\n", _("Out of memory")); return EXIT_FAILURE; } memcpy((*a2)->exception, a1->exception, a1->exceptions * sizeof(struct tm)); if (a1->description) { (*a2)->description=strdup(a1->description); } if (a1->note) { (*a2)->note=strdup(a1->note); } return EXIT_SUCCESS; } #endif /* * If a copy is made, then it should be freed through free_CalendarEvent */ int copy_calendar_event(const struct CalendarEvent *source, struct CalendarEvent **dest) { int r; *dest = malloc(sizeof(struct CalendarEvent)); if (*dest) { /* zero out memory to remove valgrind warnings */ memset(*dest, 0, sizeof(struct CalendarEvent)); } r = copy_CalendarEvent(source, *dest); if (!r) { return EXIT_SUCCESS; } return EXIT_FAILURE; } /* calendar_sort in calendar.c is now used for all datebook sorting * This code scrap is being kept for reference only. */ #if 0 static int datebook_sort(AppointmentList **al, int (*compare_func)(const void*, const void*)) { AppointmentList *temp_al; AppointmentList **sort_al; int count, i; /* Count the entries in the list */ for (count=0, temp_al=*al; temp_al; temp_al=temp_al->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } /* Allocate an array to be qsorted */ sort_al = calloc(count, sizeof(AppointmentList *)); if (!sort_al) { jp_logf(JP_LOG_WARN, "datebook_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_al=*al; temp_al; temp_al=temp_al->next, i++) { sort_al[i] = temp_al; } /* qsort them */ qsort(sort_al, count, sizeof(AppointmentList *), compare_func); /* Put the linked list in the order of the array */ sort_al[count-1]->next = NULL; for (i=count-1; i; i--) { sort_al[i-1]->next=sort_al[i]; } *al = sort_al[0]; free(sort_al); return EXIT_SUCCESS; } #endif #ifdef ENABLE_DATEBK static void db3_fill_struct(char *note, int type, struct db4_struct *db4) { /* jp_logf(JP_LOG_WARN, "db3_fill_struct()\n"); */ switch (note[2]) { case 'c': case 'C': db4->floating_event=DB3_FLOAT_COMPLETE; break; case 'd': db4->floating_event=DB3_FLOAT_DONE; break; case 'f': case 'F': db4->floating_event=DB3_FLOAT; break; } if (type==DB3_TAG_TYPE_DBplus) { return; } switch (note[3]) { case 'b': db4->custom_font=DB3_FONT_BOLD; break; case 'l': db4->custom_font=DB3_FONT_LARGE; break; case 'L': db4->custom_font=DB3_FONT_LARGE_BOLD; break; } db4->category = (note[4] - '@') & 0x0F; db4->icon = (note[5] - '@'); if (note[6] == 's') { db4->spans_midnight = DB3_SPAN_MID_YES; } /* bytes 8,9 I don't understand yet */ if (type==DB3_TAG_TYPE_DB3) { return; } if (note[9] == 'l') { db4->link = DB3_LINK_YES; } /* bytes 11-14 I don't understand yet */ /* bytes 15-18 lower 6 bits make 24 bit number (not sure of byte order) */ db4->custom_alarm_sound = ((note[14] & 0x3F) << 18) + ((note[15] & 0x3F) << 12) + ((note[16] & 0x3F) << 6) + ((note[17] & 0x3F) << 0); db4->color = (note[18] - '@') & 0x0F; /* Byte 19 is a carriage return */ } // FIXME: verify that new routine calendar_db3_hack_date in calendar.c // works for datebook databases as well and then remove. #if 0 static int db3_hack_date(struct Appointment *appt, struct tm *today) { int t1, t2; if (today==NULL) { return EXIT_SUCCESS; } if (!appt->note) { return EXIT_SUCCESS; } if (strlen(appt->note) > 8) { if ((appt->note[0]=='#') && (appt->note[1]=='#')) { if (appt->note[2]=='f' || appt->note[2]=='F') { /* Check to see if its in the future */ t1 = appt->begin.tm_mday + appt->begin.tm_mon*31 + appt->begin.tm_year*372; t2 = today->tm_mday + today->tm_mon*31 + today->tm_year*372; if (t1 > t2) return EXIT_SUCCESS; /* We found some silly hack, so we lie about the date */ /* memcpy(&(appt->begin), today, sizeof(struct tm));*/ /* memcpy(&(appt->end), today, sizeof(struct tm));*/ appt->begin.tm_mday = today->tm_mday; appt->begin.tm_mon = today->tm_mon; appt->begin.tm_year = today->tm_year; appt->begin.tm_wday = today->tm_wday; appt->begin.tm_yday = today->tm_yday; appt->begin.tm_isdst = today->tm_isdst; appt->end.tm_mday = today->tm_mday; appt->end.tm_mon = today->tm_mon; appt->end.tm_year = today->tm_year; appt->end.tm_wday = today->tm_wday; appt->end.tm_yday = today->tm_yday; appt->end.tm_isdst = today->tm_isdst; /* If the appointment has an end date, and today is past the end * date, because of this hack we would never be able to view * it anymore (or delete it). */ if (!(appt->repeatForever)) { if (compareTimesToDay(today, &(appt->repeatEnd))==1) { /* end date is before start date, illegal appointment */ /* make it legal, by only floating up to the end date */ memcpy(&(appt->begin), &(appt->repeatEnd), sizeof(struct tm)); memcpy(&(appt->end), &(appt->repeatEnd), sizeof(struct tm)); } } } } } return EXIT_SUCCESS; } #endif /* * Parses the note tag and looks for db3 or db4 tags. * returns -1: error, 0: false, 1: true * for true: will in db4 * * db4 can be passed in NULL for just checking for datebk tags. */ int db3_parse_tag(char *note, int *type, struct db4_struct *db4) { /* Characters allowed to exist in each character of a db3/4 tag */ /* NULL means any character is allowed */ char *allowed[]={ "#", "#", /* First 2 characters are # */ "@FfCcd", /* F or f floating, C or c completed, d done */ "@blL", /* b bold, l large, L large bold */ "@ABCDEFGHIJKLMNO", /* Category */ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrst", /* icon */ "@s", /* Spans midnight */ NULL, /* Lower 2 digits of next 2 chars are time zone */ NULL, "@l\n", /* l link, EOL for datebk3 tags */ NULL, /* Lower 6 bits of next 4 chars make a 24 bit number (advance) */ NULL, /* I don't understand this yet and have not coded it */ NULL, NULL, NULL, /* Lower 6 bits of next 4 chars make a 24 bit number */ NULL, /* which is the custom sound */ NULL, NULL, "@ABCDEFGHIJKLMNO", /* Color */ "\n", /* EOL for datebk4 tags */ }; int len, i; /* We need to guarantee these to be set upon return */ if (db4) { memset(db4, 0, sizeof(*db4)); } *type=DB3_TAG_TYPE_NONE; if (!note) { return 0; } len = strlen(note); for (i=0; i<20; i++) { if (i+1>len) { return 0; } if ((i==3) && (note[i]=='\n')) { /* If we made it this far and CR then its a db+ tag */ *type=DB3_TAG_TYPE_DBplus; if (note[i+1]) { if (db4) { db4->note=&(note[i+1]); } } if (db4) { db3_fill_struct(note, DB3_TAG_TYPE_DBplus, db4); } return 1; } if ((i==9) && (note[i]=='\n')) { /* If we made it this far and CR then its a db3 tag */ *type=DB3_TAG_TYPE_DB3; if (note[i+1]) { if (db4) { db4->note=&(note[i+1]); } } if (db4) { db3_fill_struct(note, DB3_TAG_TYPE_DB3, db4); } return 1; } if (allowed[i]==NULL) continue; if (!strchr(allowed[i], note[i])) { return 0; } } /* If we made it this far then its a db4 tag */ *type=DB3_TAG_TYPE_DB4; if (note[i]) { if (db4) { db4->note=&(note[i]); } } if (db4) { db3_fill_struct(note, DB3_TAG_TYPE_DB4, db4); } return 1; } #endif void free_AppointmentList(AppointmentList **al) { AppointmentList *temp_al, *temp_al_next; for (temp_al = *al; temp_al; temp_al=temp_al_next) { free_Appointment(&(temp_al->mappt.appt)); temp_al_next = temp_al->next; free(temp_al); } *al = NULL; } int get_calendar_or_datebook_app_info(struct CalendarAppInfo *cai, long datebook_version) { int num, r; int rec_size; unsigned char *buf; char DBname[32]; struct AppointmentAppInfo aai; pi_buffer_t pi_buf; memset(&aai, 0, sizeof(aai)); memset(cai, 0, sizeof(*cai)); /* Put at least one entry in there */ strcpy(aai.category.name[0], "Unfiled"); strcpy(cai->category.name[0], "Unfiled"); if (datebook_version) { strcpy(DBname, "CalendarDB-PDat"); } else { strcpy(DBname, "DatebookDB"); } r = jp_get_app_info(DBname, &buf, &rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, DBname); if (buf) { free(buf); } return EXIT_FAILURE; } pi_buf.data = buf; pi_buf.used = rec_size; pi_buf.allocated = rec_size; if (datebook_version) { num = unpack_CalendarAppInfo(cai, &pi_buf); } else { num = unpack_AppointmentAppInfo(&aai, buf, rec_size); } if (buf) { free(buf); } if ((num<0) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), DBname); return EXIT_FAILURE; } if (datebook_version==0) { copy_appointment_ai_to_calendar_ai(&aai, cai); } return EXIT_SUCCESS; } /* The following 3 routines are slow because they copy everything from CalenderEvents over to Appointments. This is not troublesome because only jpilot-dump still uses these routines. Everything else uses the updated calendar versions */ int get_days_appointments(AppointmentList **appointment_list, struct tm *now, int *total_records) { return get_days_appointments2(appointment_list, now, 1, 1, 1, total_records); } /* * If Null is passed in for date, then all appointments will be returned * modified, deleted and private, 0 for no, 1 for yes, 2 for use prefs */ int get_days_appointments2(AppointmentList **appointment_list, struct tm *now, int modified, int deleted, int privates, int *total_records) { int r; CalendarEventList *cel; r = get_days_calendar_events2(&cel, now, modified, deleted, privates, CATEGORY_ALL, total_records); copy_calendarEvents_to_appointments(cel, appointment_list); free_CalendarEventList(&cel); return r; } unsigned int isApptOnDate(struct Appointment *appt, struct tm *date) { struct CalendarEvent cale; int r; copy_appointment_to_calendarEvent(appt, &cale); r = calendar_isApptOnDate(&cale, date); free_CalendarEvent(&cale); return r; } unsigned int calendar_isApptOnDate(struct CalendarEvent *cale, struct tm *date) { unsigned int ret; unsigned int r; int week1, week2; int dow, ndim; int i; /* days_in_month is adjusted for leap year with the date structure */ int days_in_month[]={31,28,31,30,31,30,31,31,30,31,30,31}; int exception_days; static int days, begin_days; jp_logf(JP_LOG_DEBUG, "calendar_isApptOnDate\n"); ret = FALSE; if (!date) { return FALSE; } /* Leap year */ if ((date->tm_year%4 == 0) && !(((date->tm_year+1900)%100==0) && ((date->tm_year+1900)%400!=0)) ) { days_in_month[1]++; } /* See if the appointment starts after date */ r = compareTimesToDay(&(cale->begin), date); if (r == 1) { return FALSE; } if (r == 0) { ret = TRUE; } /* If the appointment has an end date, see that we are not past it */ if (!(cale->repeatForever)) { r = compareTimesToDay(&(cale->repeatEnd), date); if (r == 2) { return FALSE; } } switch (cale->repeatType) { case calendarRepeatNone: break; case calendarRepeatDaily: /* See if this appt repeats on this day */ begin_days = dateToDays(&(cale->begin)); days = dateToDays(date); ret = (((days - begin_days)%(cale->repeatFrequency))==0); break; case calendarRepeatWeekly: get_month_info(date->tm_mon, date->tm_mday, date->tm_year, &dow, &ndim); /* See if the appointment repeats on this day */ if (!(cale->repeatDays[dow])) { ret = FALSE; break; } /* See if we are in a week that is repeated in */ begin_days = dateToDays(&(cale->begin)); days = dateToDays(date); /* In repeatWeekly Palm treats the week as running Monday-Sunday [0-6] * This contrasts with the C time structures which run Sunday-Sat[0-6] * The date calculation requires switching between the two. * Palm tm structure = C tm structure -1 with wraparound for Sunday */ if (cale->begin.tm_wday == 0) { ret = (days - begin_days) + 6; } else { ret = (days - begin_days) + (cale->begin.tm_wday - 1); } ret = ((((int)ret/7) % cale->repeatFrequency) == 0); break; case calendarRepeatMonthlyByDay: /* See if we are in a month that is repeated in */ ret = (((date->tm_year - cale->begin.tm_year)*12 + (date->tm_mon - cale->begin.tm_mon))%(cale->repeatFrequency)==0); if (!ret) { break; } /* If the days of the week match - good */ /* e.g. Monday or Thur, etc. */ if (cale->repeatDay%7 != date->tm_wday) { ret = FALSE; break; } /* Are they both in the same week in the month */ /* e.g. The 3rd Mon, or the 2nd Fri, etc. */ week1 = cale->repeatDay/7; week2 = (date->tm_mday - 1)/7; if (week1 != week2) { ret = FALSE; } /* See if the appointment repeats on the last week of the month */ /* and this is the 4th, and last. */ if (week1 > 3) { if ((date->tm_mday + 7) > days_in_month[date->tm_mon]) { ret = TRUE; } } break; case calendarRepeatMonthlyByDate: /* See if we are in a repeating month */ ret = (((date->tm_year - cale->begin.tm_year)*12 + (date->tm_mon - cale->begin.tm_mon))%(cale->repeatFrequency) == 0); if (!ret) { break; } /* See if this is the date that the appt repeats on */ if (date->tm_mday == cale->begin.tm_mday) { ret = TRUE; break; } /* If appt occurs after the last day of the month and this date */ /* is the last day of the month then it occurs today */ ret = ((cale->begin.tm_mday > days_in_month[date->tm_mon]) && (date->tm_mday == days_in_month[date->tm_mon])); break; case calendarRepeatYearly: if ((date->tm_year - cale->begin.tm_year)%(cale->repeatFrequency) != 0) { ret = FALSE; break; } if ((date->tm_mday == cale->begin.tm_mday) && (date->tm_mon == cale->begin.tm_mon)) { ret = TRUE; break; } /* Take care of Feb 29th (Leap Day) */ if ((cale->begin.tm_mon == 1) && (cale->begin.tm_mday == 29) && (date->tm_mon == 1) && (date->tm_mday == 28)) { ret = TRUE; break; } break; default: jp_logf(JP_LOG_WARN, _("Unknown repeatType (%d) found in DatebookDB\n"), cale->repeatType); ret = FALSE; }/* switch */ /* Check for exceptions */ if (ret && cale->exceptions) { days = dateToDays(date); for (i=0; iexceptions; i++) { #ifdef JPILOT_DEBUG jp_logf(JP_LOG_DEBUG, "exception %d mon %d\n", i, cale->exception[i].tm_mon); jp_logf(JP_LOG_DEBUG, "exception %d day %d\n", i, cale->exception[i].tm_mday); jp_logf(JP_LOG_DEBUG, "exception %d year %d\n", i, cale->exception[i].tm_year); jp_logf(JP_LOG_DEBUG, "exception %d yday %d\n", i, cale->exception[i].tm_yday); jp_logf(JP_LOG_DEBUG, "today is yday %d\n", date->tm_yday); #endif exception_days = dateToDays(&(cale->exception[i])); if (exception_days == days) { ret = FALSE; break; } } } return ret; } int weed_calendar_event_list(CalendarEventList **cel, int mon, int year, int skip_privates, int *mask) { struct tm tm_fdom; struct tm tm_ldom; struct tm tm_test; CalendarEventList *prev_cel, *next_cel, *tcel; int r, fdow, ndim; int days, begin_days; int ret; int trash_it; memset(&tm_fdom, 0, sizeof(tm_fdom)); tm_fdom.tm_hour=11; tm_fdom.tm_mday=1; tm_fdom.tm_mon=mon; tm_fdom.tm_year=year; get_month_info(mon, 1, year, &fdow, &ndim); memcpy(&tm_ldom, &tm_fdom, sizeof(tm_fdom)); tm_ldom.tm_mday=ndim; mktime(&tm_fdom); mktime(&tm_ldom); memcpy(&tm_test, &tm_fdom, sizeof(tm_fdom)); days = dateToDays(&tm_fdom); next_cel=NULL; /* We are going to try to shrink the linked list since we are about to * search though it ~30 times. */ for (prev_cel=NULL, tcel=*cel; tcel; tcel = next_cel) { if (skip_privates && (tcel->mcale.attrib & dlpRecAttrSecret)) { trash_it=1; goto trash; } trash_it=0; /* See if the appointment starts after the last day of the month */ r = compareTimesToDay(&(tcel->mcale.cale.begin), &tm_ldom); if (r == 1) { trash_it=1; goto trash; } /* If the appointment has an end date, see if it ended before the 1st */ if (!(tcel->mcale.cale.repeatForever)) { r = compareTimesToDay(&(tcel->mcale.cale.repeatEnd), &tm_fdom); if (r == 2) { trash_it=1; goto trash; } } /* No repeat */ /* See if its a non-repeating appointment that is this month/year */ if (tcel->mcale.cale.repeatType==calendarRepeatNone) { if ((tcel->mcale.cale.begin.tm_year==year) && (tcel->mcale.cale.begin.tm_mon==mon)) { tm_test.tm_mday=tcel->mcale.cale.begin.tm_mday; mktime(&tm_test); /* Go ahead and mark this day (highlight it) */ if (calendar_isApptOnDate(&(tcel->mcale.cale), &tm_test)) { *mask = *mask | (1 << ((tcel->mcale.cale.begin.tm_mday)-1)); } } else { trash_it=1; goto trash; } } /* Daily */ /* See if this daily appt repeats this month or not */ if (tcel->mcale.cale.repeatType==calendarRepeatDaily) { begin_days = dateToDays(&(tcel->mcale.cale.begin)); ret = ((days - begin_days)%(tcel->mcale.cale.repeatFrequency)); if ((ret>31) || (ret<-31)) { trash_it=1; goto trash; } } /* Weekly */ if (tcel->mcale.cale.repeatType==calendarRepeatWeekly) { begin_days = dateToDays(&(tcel->mcale.cale.begin)); /* Note: Palm Bug? I think the palm does this wrong. * I prefer this way of doing it so that you can have appts repeating * from Wed->Tue, for example. The palms way prevents this */ /* ret = (((int)((days - begin_days - fdow)/7))%(appt->repeatFrequency)==0);*/ /* But, here is the palm way */ ret = (((int)((days-begin_days+tcel->mcale.cale.begin.tm_wday-fdow)/7)) %(tcel->mcale.cale.repeatFrequency)); if ((ret>6) || (ret<-6)) { trash_it=1; goto trash; } } /* Monthly */ if ((tcel->mcale.cale.repeatType==calendarRepeatMonthlyByDay) || (tcel->mcale.cale.repeatType==calendarRepeatMonthlyByDate)) { /* See if we are in a month that is repeated in */ ret = (((year - tcel->mcale.cale.begin.tm_year)*12 + (mon - tcel->mcale.cale.begin.tm_mon))%(tcel->mcale.cale.repeatFrequency)==0); if (!ret) { trash_it=1; goto trash; } if (tcel->mcale.cale.repeatType==calendarRepeatMonthlyByDay) { tm_test.tm_mday=tcel->mcale.cale.begin.tm_mday; mktime(&tm_test); if (calendar_isApptOnDate(&(tcel->mcale.cale), &tm_test)) { *mask = *mask | (1 << ((tcel->mcale.cale.begin.tm_mday)-1)); } } } /* Yearly */ /* See if its a yearly appointment that does reoccur on this month */ if (tcel->mcale.cale.repeatType==calendarRepeatYearly) { if ((tcel->mcale.cale.begin.tm_mon==mon)) { tm_test.tm_mday=tcel->mcale.cale.begin.tm_mday; mktime(&tm_test); if (calendar_isApptOnDate(&(tcel->mcale.cale), &tm_test)) { *mask = *mask | (1 << ((tcel->mcale.cale.begin.tm_mday)-1)); } } else { trash_it=1; goto trash; } } /* Remove it from this list if it can't help us */ trash: if (trash_it) { if (prev_cel) { prev_cel->next=tcel->next; } else { *cel=tcel->next; } next_cel=tcel->next; free_CalendarEvent(&(tcel->mcale.cale)); free(tcel); } else { prev_cel=tcel; next_cel=tcel->next; } } return EXIT_SUCCESS; } jpilot-1.8.2/config.sub0000755000175000017500000010535412201675101011732 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-08-10' # This file 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 3 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or1k-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: jpilot-1.8.2/prefs_gui.h0000664000175000017500000000176312340261240012103 00000000000000/******************************************************************************* * prefs_gui.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include void cb_prefs_gui(GtkWidget *widget, gpointer data); jpilot-1.8.2/print_logo.c0000664000175000017500000007712412320101153012265 00000000000000/******************************************************************************* * print_logo.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001 by Colin Brough * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include "print_logo.h" /****************************** Main Code *************************************/ static void print_logo_data(FILE *f) { fputs( "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffffffffffffffffff2d10080808000a1429ffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffffffffffffff1808364f5a535a5a4f3e220008ffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffffffffff08214f5b635f5b5f5b5b5b63635b390820ffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffffff27144f5f5b5b5a5b5a5a5b5a5b5a5b5a68531800ffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffffff142a5f5b5b5a5b5a5b5b5a5b5a5b5a5b5a5a5f633100ffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffffff0831685b5b5a5b5a5b5a5a5b5a5b5a5b535b5b5b5b5f4304ffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffffff35185b5b5a5a5b5a5b5b5a5b5b5b5a5b5b5e5b5a5a5a5b633e00ffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffff350d5a5f5a5b5b5a5b5a5b5a5b5a5a5b5a5b5a5b5a5b5b5b5b632908ffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fffff0d5b5b5b5a5b5a5b5b5a5b5a5b5b5a5b5b5b5f635f5f635f5b5b5b08ffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "fff08475f5a5b5a5b5a5b5a5b5a5b5a5a5b5f5a4f31221c1822395a5f633e00ffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "f3521635b5a5b5a5b5a5b5a5b5b5a5b5b5f3e100827393e3e390808395f5b00ffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "f01535f5a5b5a5b5a5b5a5b5a5b5a5b5b211873ceffffffffffce390043630dffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3" "529635b5a5b5b5a5b5b5a5b5b5a5b632921deffffffffffffffffff4f004300000035" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0" "c4f5b5b5a5b5a5b5a5b5a5b5a5b5f3608c6ffffffffffffffffffffce080021a37c08" "14ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1" "85f5b5a5b5a5b5a5b5a5b5a5b5f3908b5ffffffffffffffffffffffff5408bdffffc6" "1044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff353" "9635a5b5a5b5b5a5b5a5b5b5f4f08b5ffffffffffffffffffffffffff7b08efffffff" "ad00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff084" "75b5b5a5b5a5b5a5b5a5b5a5b106bffffffffffffffffffffffffffff9400deffffff" "f710ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff085" "a5b5b5a5b5b5a5b5a5b5a633e10e7ffffffffffffffffffffffffffff9d01efffffff" "ff35ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215" "f5b5a5a5b535b5b535b5b5b0873ffffffffffffffffffffffffffffff840af7ffffff" "ff39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff35365" "f5a5b585a5f5a5b5e5b5f4a00c6ffffffffffffffffffffffffffffff6b29ffffffff" "ff39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff104f5" "b5b5a5b5a5b5a5b5a5a5f2910f7ffffffffffffffffffffffffffffff5a4affffffff" "ff29ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff105a5" "b5a5b5a5b5a5b5a5b5b5b104affffffffffffffffffffffffffffffff217bffffffff" "ef0dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215f5" "a5b5a5b5b5a5b5b5a5b5a0894ffffffffffffffffffffffffffffffbd08ceffffffff" "d410ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29685" "b5a5b5a5b5a5b5a5b5b4a08deffffffffffffffffffffffffffffff634affffffffff" "9d1cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff353e5b5" "a5b5b5a5b5a5b5a5a5f3e10efffffffffffffffffffffffffffffef10a6fffffffff7" "31ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27435f5" "a5b5a5b5a5b5a5b5b633e10e7ffffffffffffffffffffffad5ad47b0094deffffffad" "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08535b5" "b5b5a5b5b5a5b5b5a5b4308ceffffffffffffffffffffef08007b3900006bffffff3e" "3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015e5b5" "a5a5b5a5b5a5b5a5b5f3e08ceffffffffffffffffffffe700189400000094ffffce10" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff185f5b5" "b5a5b5b5a5b5f5f5b5b5a08ceffffffffffffffffffffffc16b298c8473ffffff5a3e" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d2a685a5" "a5b5a5b5f53222a535f5b0094fffffffffffff9efc1706c6b210063efffffffbd01ff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a3e5b5a5" "b5b5a5f53113f4310224f084fffffffffb65b39100d3474863e2b0d1c94efbd21ffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff004a5f5b5" "a5a5f4f0958d5d5a6581818007ca67c39265786aad0c6933417b4c7660d1c013effff" "ffffffffffffffffff4b2a1c14112affffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff085a5b5a5" "b5b5b113fd5d4d0d4d5cdcd9b34316da2c7d4d0b166140a60b8d4d4d5bf75311020ff" "ffffffffffff1026295883868e866d1b20ffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22685a5b5" "b5f2a1fc7d4d0d0d0d4d0d0d5d5d0dda2352b0a0a2b86c6d5d4d0d0d0d4d8d5b89154" "04092001003faad0d5d5d8d8d8d8d5cd7c00ffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29475b5b5b5" "a5b116dd5d0d0d0d0d4d5d0d0d0d0d0b88e7f91b1d5d5d4d0d0d0d0d0d0d0d0d4d8d5" "aa6e4a669bd5d5d4d0d0d0d0d0d0d4d4d5a62a29ffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff185a5b5a5a5" "b5f117cd8d0d0d4d5aa91d4d0d0d0d0d4d8d8d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d4" "d4d5d5d5d5d4d0d0d0d0d0d0d0d0d0d0d0d8c75810ffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215b5b5b5b5" "a5f1674d5d4d0d57f086ed5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0" "d0d4d0d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d59114ffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff29395f5a5a5a5" "b682257d5d0d586000043b5d5d5d4d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d5b81bffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff085f5b5b5b5b5" "b63362bd0d4d59b86aa350a2b75b4d5d5d5d5d4d4d4d4d4d4d4d4d0d0d0d0d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d8c03f20ffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff35635a5a5a535" "a5b5308a6d4d0d5d5d5d5a6581f081f587c91b4bcc7c7c7c7c7d5d4d4d0d0d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d546ffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffff0c535f5b5b5b5f5" "b5a53017cd8d0d0d4d0d4d4d5d5aa4300000001080000000000439bd5d5d4d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4c70dffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffff22635a585a5a5b5" "a5b5a016ed5d0d0d0d0d0d4d0d0d8d5bca69b93867560756e5018012b75cdd5d4d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d59b00ffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffff144f5f5b5b5a5b5b5" "a5b5b0934d5d4d0d0d0d0d0d0d0d0d0d4d4d5d8d5d8d5d8ddddcd1809202a6ec6d5d4" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d5503effffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffff21635b5a5a5b5a5a5" "b5b5a21003fc7d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d8bb86580dffffff3e187cc6" "d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4bf0dffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffff0c4f5b5a5b5b5a5b5b5" "a5b5b145a3e1bc7d4d0d0d0d0d0d0d0d0d0d0d0d0d4c76018113e35ffffffffff2018" "5fb8d5d8d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d56d2dffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffff225f5b5a5b5a5b5a5b5" "a5b5a14cef73231cdd4d0d0d0d0d0d0d0d0d0d0d4d54a14ffffffffffffffffffffff" "190d58b1d5d5d4d4d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d8bb04ffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffff145a5f5a5b5a5b5b5a5b5" "a5b4f22f7ffe71c58d5d0d0d0d0d0d0d0d0d0d4d57501ffffffffffffffffffffffff" "ffff3e083475aad5d5d4d4d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d5463eff\n" "ffffffffffffffffffffffffffffffffffffffffffffff14395f5b5b5a5b5a5b5a5b5" "a5f3e4affffffb600b1d4d0d0d0d0d0d0d0d0d5b400ffffffffffffffffffffffffff" "ffffffff2900001b4d93c7d0d5d8d5d4d4d4d0d0d0d0d0d0d0d0d0d88d3eff\n" "ffffffffffffffffffffffffffffffffffffffffffffff045b5b5a5b5a5b5b5a5b5a5" "b632d4fffffffff4f34d5d4d0d0d0d0d0d0d4d54a00ffffffffffffffffffffffffff" "ffffffffffffffff320c18315886a2bcc6d5d5d5d8d4d4d4d0d0d0d4b817ff\n" "ffffffffffffffffffffffffffffffffffffffffffff0c4a5f5b5a5b5a5b5a5b5b5a5" "b632173ffffffffde0977d5d0d0d0d0d0d0d56e0017ffffffffffffffffffffffffff" "ffffffffffffffffffffffff3d2010080d2a466d9bb4c6d0d5d5d4d4d014ff\n" "ffffffffffffffffffffffffffffffffffffffffff2d36635b5a585a5b535b5a585a5" "b5f217bffffffffff9400b1d8d0d0d0d0d8aa0108ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffff4b391c0a0a184683c6d5d83fff\n" "ffffffffffffffffffffffffffffffffffffffffff1863585a5b5a5b5b5e5b5b5a5b5" "a682184ffffffffffff4f1bc7d4d0d0d4d5297c63ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffff200a468a29ff\n" "ffffffffffffffffffffffffffffffffffffffff08535f5b5a5b5a5b5a5b5a5b5a5b5" "b5b1c8cfffffffffffff71c17b8d5ddcd3443ff4fffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffff3e140014\n" "ffffffffffffffffffffffffffffffffffffff273e5f5a5b5a5b5a5b5a5b5b5a5b5a5" "b5b149dffffffffffffffe7430d7c7c264fefff21ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffff18685a5b5a5b5a5b5a5b5a5b5a5b5a5" "b5a18c6ffffffffffffffffff73000073fffff718ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffff1c4f5b5b5a5b5b5a5b5b5a5b5a5b5a5b5" "b5318deffffffffffffffffffffc6c6ffffffde10ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffff22635a5b5a5b5a5b5a5b5a5b5b5a5b5a5" "f4329f7ffffffffffffffffffffffffffffffef10ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffff10535b5b5a5b5a5b5b5a5b5a5b5a5b5a5b6" "3294affffffffffffffffffffffffffffffffce08ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffff273e5f5b5a5b5b5a5b5a5b5a5b5a5b5b5a5b5" "f216bffffffffffffffffffffffffffffffffc600ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffff215f5b5a5b5a5b5a5b5a5b5b5a5b5a5b5a5b6" "32191ffffffffffffffffffffffffffffffffce08ffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffff04535f5a5b5a5b5a5b5a5b5a5b5a5b5b5a5b5b5" "b18b5ffffffffffffffffffffffffffffffffb500ffffffffffffffffffffffffffff" "ffffffffffffffff201c2dffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffff204a5f5b5a5b5a5b5b5a5b5b5a5b5a5b5a5b5a5b4" "f10deffffffffffffffffffffffffffffffffb500ffffffffffffffffffffffffffff" "ffffffffffff21a7d4ddc8b3b3afa39d9d7e843e08102dffffffffffffffff\n" "ffffffffffffffffffffffffffff215f5b5a5b5a5b5a5b5a5b5a5b5f5a5b5a5b5a5b3" "e31ffffffffffffffffffffffffffffffffffce00ffffffffffffffffffffffffffff" "ffffffffffff7efff9f9f6f9f9f9f9f9f9fffff9e5af7332ffffffffffffff\n" "ffffffffffffffffffffffffff204a5f5a5b5b5a5b5b5a5b5b5b424f5b5a5b5a5b632" "96bfffffffffffffffffffffffffffffffffff708ffffffffffffffffffffffffffff" "ffffffffff4ff1b6363535363535363e3e5a5f63a3f9fff147ffffffffffff\n" "ffffffffffffffffffffffffff2e685a5b5a5b5a5b5a5b5a5b5f17315f5b5a5b5b5f1" "87bfffffffffffffffffffffffffffffffffff921ffffffffffffffffffffffffffff" "ffffffffffa3ff4a2e91969d9d919d91896a5e500db6f9f96c00ffffffffff\n" "ffffffffffffffffffffffff14535b5a5b5b5a5b5a5b5a5b5a682920685a5b5a5b5b1" "09bffffffffffffffffffffffffffffffffffff3e0affffffffffffffffffffffffff" "fffffffffff1c855cdd9d4d9d4d9d4d9d9d9d9d461e5f9c87032ffffffffff\n" "ffffffffffffffffffffffff295f5a5b5b5a5b5b5a5b5b5a5b6336215b5b5b5a5b4f1" "8efffffffffffffffffffffffffffffffffffff6b00ffffffffffffffffffffffffff" "ffffffff7cff7cabd4d4d4d1d4d1d4d1d4d1d9839df9ed70c829ffffffffff\n" "ffffffffffffffffffffff10535f5b5a5a585a5b535f5a585a5b3e185f5a5a5b5f314" "affffffffffffffffffffffffffffffffffffff940004ffffffffffffffffffffffff" "ffffffffdae58bd4d4cdd4ccd4ccd1ccd1d4cd6dedf99d8c9cffffffffffff\n" "ffffffffffffffffffffff29685a5b5b5a5b5a5b5a5b5a5b5b5f43215a5b5b5a5f1c8" "4ffffffffffffffffffffffffffffffffffffffad084700ffffffffffffffffffffff" "ffffff53f99dabd4d4d4d1d4d1d4d4d4ccd4b384f9f98cd447ffffffffffff\n" "ffffffffffffffffffff104f5b5b5a5a5b5a5b5a5b5a5b5a5a5b4a115a5b5a5b5a10c" "6ffffffffffffffffffffffffffffffffffffffd40c4f4a00ffffffffffffffffffff" "ffffffb6f98bcdd4d4cdd4ccd4ccd1d4d1d483d4f9d4a7c8ffffffffffffff\n" "ffffffffffffffffffff21685b5a5b5b5b5a5b5b5a5b5b5a5b5b5a084f5b5b5f3636f" "fffffffffffffffffffffffffffffffffffffffef08396847043effffffffffffffff" "ffff5af9baa1d4d4cdd4d4d1d4d1d4ccd4c592f9f9a3d45bffffffffffffff\n" "ffffffffffffffffff1c4f5b5a5b5a5a5b5a5b5a5b5a5b5a5b5a5310435f5a63148cf" "fffffffffffffffff9d7bfffffffffffffffffff7212a63634f0d14ffffffffffffff" "ffff92ff8bbfd4d4ccd4cdd4ccd4d1d4d491cbf9edafbc27ffffffffffffff\n" "ffffffffffffffffff215f5b5a5b5b5a5b5a5b5a5b5a5b5a5b5f5b1839635b4f18def" "fffffffffffffef6b42089bffffffffffffffffff4f18685a5b5a2900ffffffffffff" "fffff1e58fd4d4d1d4d1d4d1d4d1ccd1c570f1f9b7dd70ffffffffffffffff\n" "ffffffffffffffff003e5f5a5b5a5a5b5a5b5a5b5a5b5a5b5a5b5f21215b63225afff" "fffffffffffff9d10f9a714d4ffffffffffffffff73085b5b5b5b63430d0cffffffff" "ff70ffa3b3d4ccd4cdd4ccd4cdd4d4d4a7bcf9f19ddd4fffffffffffffffff\n" "ffffffffffffffff0d5b5b5b5b5a5b5b5b5a5b5b5a5b5b5a5b5a6336105b5b08adfff" "fffffffffffffef4a92ff4f17d4ffffffffffffff9b015a5b5a5a5b5f5a391000ffff" "ffc8f99cd1d4d4d1d4d1d4d1d4d4d4d17eedf9b7c89dffffffffffffffffff\n" "ffffffffffffffff35635a5a5b535b5a535b5a585a5b535b5a585b43085f2918effff" "fffffffffffffffde1cdded293cffffffffffffffd4084f5b5a5b5a5b5b635b290800" "47f9c883cdcdccd4d9d9d4d4d4d1d9ab5ff9f98cdd5bffffffffffffffffff\n" "ffffffffffffff0c4f5b5b5b5a5f5a5b5f5a5b5a5b5a5f5a5b5a5f5308310063fffff" "fffffffffffffffff8447f9f1217bfffffffffffff717365f5b5a5b5a5a5b5b5f4f21" "b6f96c365566667a6e7a91abcdccd450a7f9e592c8ffffffffffffffffffff\n" "ffffffffffffff31685a5b5a5b5b5a5b5a5b5b5a5b5b5a5b5b5a5b5f210000cefffff" "ffffffffffffffffff739539d36006bc6ffffffffff4f185f5a5b5a5b5b5a5a633e53" "f9ed7ebbb3ababa1a1997a6150515031f1ffa3b370ffffffffffffffffffff\n" "ffffffffffff294f5b5a5b5a5b5a5b5a5b5a5b5a5b5a5b5a5b5a5b63310073fffffff" "ffffffffffffff78c310a0008182110084ae7ffffff94005a5b5b5a5b5a5b5b5b39af" "ffb6a1bbbbc2c2bbbbbbc3c3b3ab4468f9f97cb73effffffffffffffffffff\n" "ffffffffffff22635b5a5b5a5b5a5b5b5a5b5a5b5a5b5b5a5b5a5b5b4f00bdfffffff" "fffffffffff9d1800214a5b535f5b5b4f1821d4ffffd4004f5b5a5b5a5b5a5b534af1" "f17eb3bfbbb3bbb3bbb3b3bbbbcc61184f3e211000ffffffffffffffffffff\n" "ffffffffff4c3e5f5a5b5a5b5a5b5a5b5a5b5b5a5b5a5b5a5b5a5a5b5a084afffffff" "fffffffd43c04294f685b5b5b5b5a5b5f631817deffff2127685a5b5b5a5b5f3e70f9" "b651b3abb3c2c2c3c3c2c2bbc27a11314a4f534f10ffffffffffffffffffff\n" "ffffffffff1c5a5b5b5a5b5b5a5b5b5a5b5a5b5a5b5b5a5b5a5b5a5b633e008cfffff" "fffe75a0a1047635b5a5b5a5a5a5b5a5b5b5a005affff6b085b5b5f535b5a6331a6ed" "36314235423632446189a7c3910847635b5b5b683635ffffffffffffffffff\n" "ffffffffff215f5a5b5a5b5a5b5b5b5a5b5a5b5a5b5a5b5b5a5b5b5a5b5f1c00adffe" "7a62100295b5f5b5a5b5a5b5b5b5a5b5a5b5f2a0af7ffb500535b5a5a5b5b533ee5f1" "e5f1ededdda36c4f3921186e2e2d685a5b5a5a5b3e35ffffffffffffffffff\n" "ffffffffff36635b5a5b5a5b4f535a5b5a5b5a5b5a5b5a5b5a5b5a5b5a5b5f2900291" "000184f5f5b5a5b5a5b5b5a5b5a5b5a5b5a5b5a01a6ffef103e635b5b5a5f4a4af9f9" "f9f6f9f1f9fffff9f9e5c8680c5b5b5b5a5b5b633535ffffffffffffffffff\n" "ffffffff14535b5a5b5b5a6322315f5b5b5a5b5b5b5f685f5f5b5a5b5a5a5b5f43293" "14f5b635a5b5a5b5a5b5a5b5a5b5f5f63685b63183effff3e185f5b5a5b5b3684f9f1" "f1f9f9f9f19dd4f9f9f9ff8422635a5b5a5b5a5f21ffffffffffffffffffff\n" "ffffffff185f5b5a5b5a5b5f391c5f5b5a5b5a5b5a36221936535f5a5b5a5b5a5b686" "35b5a5b5b5a5b5a5b5a5b5a5b5b4f292d213e5f3121f7ff94085a5b5a5b5b31c88470" "f1dd8cd4b34f5be5ddedf97c2163585a5b5a5b5f11ffffffffffffffffffff\n" "ffffffff355f5a5b5a5b5a5b53104a5f5b5a5b5f2a1f666635115a5b5a5b5b5a5b5a5" "b5a5b5a5b5a5b5b5a5b5b5a5b5b1800005f29000818f7ffe70c4f5f5a5f5331edaf91" "f9b34fe57c103ef9634ff18c0147635b5a5b5b4f08ffffffffffffffffffff\n" "ffffff394f5b5b5b5a5b5b5a632a21635b5a5b5310b1ddddd5501c5b5b5a5a5b5a5b5" "35b5a5b5a5b5a5b5a5b5a5b5f2910c639a7f17c008cffffff2136635b5b5335e5f9f9" "f1f9f9f973549df99d91ed4f2e183e5b5b5a632900ffffffffffffffffffff\n" "ffffff105a5b5a5b5a5b5a5b5f530d4f5b5b5f364ad8d0d0d4cd2a365f5b5b5a5b5a5" "b5a5b5b5a5b5b5a5b5a5b5b4f008cffbd21e7f96863ffffff63105b5b5a5b29ddf9f1" "f1f1f6f9c8a3f1f9f9f9f9edf1ba214f5b5f4f008e31ffffffffffffffffff\n" "ffffff185f5b5b5a5b5a5b5a5b6318105f5b5b118dd5d0d0d0d591115b5a5b5a5b5b5" "a5b5a5b5a5b5a5b5a5b5a682910f7ffff5a63fff121adffffa6005a5f5b5b217cf9f9" "f9f1f1f1f9f9f1f1f6f1f1f9f9f94f4a5f5b1135dd830d040c1400ffffffff\n" "ffff48365f5b5a5a5b5b5a5b5a5b43003e635318bbd4d0d0d0d0d5313b5f5a5b5a5b5" "a5b5a5b5b5b5b5b5a5b633e0084ffffffef2a9dffa721f7ffde083e5a5b684f1447af" "edf9f9f9f9f9f9f9f9f9f6f1f9f95a5b53220ab8d4d5c7c0a293831fffffff\n" "ffff1c4f5b5a5b5b5a5b5a5b5a5b5f2d00533643d5d4d0d0d0d0d886095b5b5b5a5b5" "a5b5f53535a5f5a585f4f003cffffffffffbd1091ff4a5affff21001021364a5a3108" "215b7092afb7d4ddf1f1f6f9ed7e361a082ab1d8d0d0d0d4d4d8dd4700ffff\n" "ffff145a5b5a5a5b5a5b5a5b5b5a5b5f21080986d5d0d0d0d0d0d0d531225f5b5b5b5" "f5336100a113e5b634f0039efffffffffffffbd18c8ed0d9bff7308ffff0c08081008" "3535353514000a183542473b350414358dd5d4d0d0d0d0d0d4d58314ffffff\n" "ffff215b5b5b5b5a5b5a5b5a5a5b5a5b5f29008ed5d0d0d0d0d0d0d4bc0a2a5f635b3" "610359bb17f0d3e31004fe7ffffffffffffffffad18e5a318efc600ffffffffffffff" "ffffffff1175c0b1a2977e77a2cdc7d8d5d0d0d0d0d0d0d4d88a10ffffffff\n" "ffff2e635a5a5b5a5b5b5a5b5f5b5f5b682a34c0d4d0d0d0d0d0d0d0d8a6181122112" "69bd4d5d4dd660021a6ffffffffffffffffffffff6b3eed2acef714ffffffffffffff" "ffffff0883d5d4d4d4d4d8d8d4d0d0d0d0d0d0d0d0d0d5d56600ffffffffff\n" "ffff395b5b5b5a5b5a5b5b5f4f43433e1414bcd8d0d0d0d0d0d0d0d0d0d5b875588ac" "dd5d4d0d4d88d1ce7ffffffffffffffffffffffffff4f1008deff35ffffffffffffff" "ffff007cd5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d58d1f00ffffffffffff\n" "ff4c3e5f5a5b5a5b5b5f4f22000000083fb1d4d0d0d0d0d0d0d0d0d0d0d0d4d5d5d5d" "4d0d0d0d0d59e21fffffffffffffffffffffffffffff76363efff6800ffffffffffff" "ff116ed5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d56d11ffffffffffffffff\n" "ff2d4a5b5b5a5b5a5b4f103583a2a6b4d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d0d" "0d0d0d0d0d88d2af7ffffffffffffffffffffffffffffffffffffc600ffffffffffff" "394ad5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d5cd4600ffffffffffffffffff\n" "ff20535b5a5b5b5a682a34d5ddd5d4d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d0d0d8664ffffffffffffffffffffffffffffffffffffffff718ffffffffff2a" "3fd0d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d44a00ffffffffffffffffffff\n" "ff18535f5a5b535b5b1160ddd0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d0d0d5475bffffffffffffffffffffffffffffffffffffffff31ffffffffff46" "d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d58d19ffffffffffffffffffffff\n" "ff215a5b5a5b5e5b5b1174d8d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d0d4c7179dffffffffffffffffffffffffffffffffffffffff4affffffff2acd" "d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d87e16ffffffffffffffffffffff\n" "ff1c5a5b5a5b5a5b5b0974d5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d0d4b110e7ffffffffffffffffffffffffffffffffffffffff4affffff0aaad5" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d534ffffffffffffffffffffff\n" "ff215f5b5a5b5a5b5f0960d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d0d5773effffffffffffffffffffffffffffffffffffffffff5bffff1c91d8d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4c618ffffffffffffffffffff\n" "ff315f5b5b5a5b5b5b1150d5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d4d5466fffffffffffffffffffffffffffffffffffffffffff5effff47d5d4d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d535ffffffffffffffffffff\n" "ff2a635a5b5a5b5a682a35d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d4cd18adffffffffffffffffffffffffffffffffffffffffff4f0c1fc0d4d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d59b08ffffffffffffffffffff\n" "ff315f5a585a5b5a5b4f0ab1d5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d4b110e7ffffffffffffffffffffffffffffffffffffffffff310086d8d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d5aa14ffffffffffffffffffffff\n" "ff2a5f5b5b5a5b5a5b5b0966d5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d0d5583effffffffffffffffffffffffffffffffffffffffffef091fcdd4d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d5d56d0affffffffffffffffffffffff\n" "ff2a635b5a5b5a5b5a5f3e18c6d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d5aa00a4ffffffffffffffffffffffffffffffffffffffffffef0175d5d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d0d4d5d58a3129ffffffffffffffffffffffffff\n" "ff215f5b5a5b5a5b5b5b5a097cd5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d0d57401efffffffffffffffffffffffffffffffffffffffffffa6009bd8d0d0d0d0" "d0d0d0d0d0d0d0d0d0d0d0d4d59b3f1cffffffffffffffffffffffffffffff\n" "ff215a5b5b5a5b5a5a5b5f3231d5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d4d53436ffffffffffffffffffffffffffffffffffffffffffff5a00b4d4d0d0d0d0" "d0d0d0d0d0d0d0d0d0d4d5b84929ffffffffffffffffffffffffffffffffff\n" "ff185b5b5a5b5a5b5b5a5b580997d8d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d4bb0094ffffffffffffffffffffffffffffffffffffffffffff2d0dc7d5d0d0d0d0" "d0d0d0d0d0d0d0d4d5c67c0a4bffffffffffffffffffffffffffffffffffff\n" "ff14535f5a5b5b5a5b5a5b5f322ad5d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "0d57e36ffffffffffffffffffffffffffffffffffffffffffffde014ad5d0d0d0d0d0" "d0d0d0d0d0d4d5c67c2bffffffffffffffffffffffffffffffffffffffffff\n" "ff004f5b5a5b5a5b5a5b5a5b5f097fd5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "4d5497effffffffffffffffffffffffffffffffffffffffffff8c0091d8d0d0d0d0d0" "d0d0d0d4d5c66a18ffffffffffffffffffffffffffffffffffffffffffffff\n" "ff21395f5a5b5a5b5b5a5b5a633b26c7d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "4d0299dffffffffffffffffffffffffffffffffffffffffffff2a1fc7d4d0d0d0d0d0" "d0d0d4d5911fffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffff2a635b5a5b5a5b5a5b5a5b5f1c34d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "4b10cdeffffffffffffffffffffffffffffffffffffffffff8c00aad8d0d0d0d0d0d0" "d0d5cd5f1cffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffff215b5b5a5b5b5a5b5a5b5a5b4f0986d8d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "57736ffffffffffffffffffffffffffffffffffffffffff9d0075d4d0d0d0d0d0d0d0" "d5b818ffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffff204f5f5b5a5b5a5b5b5a5b5a683b18c6d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "d575bffffffffffffffffffffffffffffffffffffffff7b005fd5d4d0d0d0d0d0d4d5" "a60dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffff21295f5b5a5b5a5b5a5b5b5a5b5f1166d5d4d0d0d0d0d0d0d0d0d0d0d0d0d0d0d" "5506cfffffffffffffffffffffffffffffffffffff75a0043d5d4d0d0d0d0d0d4d58a" "04ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffff014a5f5a5b5a5b5a5b5a5b5a5b4f09a6d5d0d0d0d0d0d0d0d0d0d0d0d0d0d4d" "5497cffffffffffffffffffffffffffffffffffce36006ed5d4d0d0d0d0d0d4d57c08" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffff085a5b5b5a5b5a5b5a5b5b5a683617bfd4d0d0d0d0d0d0d0d0d0d0d0d0d0d" "53191ffffffffffffffffffffffffffffffd4630117aad5d4d0d0d0d0d0d0d58a08ff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffff21115e5b5b5a5b5a5b5a5b5a5b5b1a46d5d4d0d0d0d0d0d0d0d0d0d0d0d4c" "d1fadffffffffffffffffffffffffffef8410146ec6d4d0d0d0d0d0d0d0d8b10affff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffff1c185a5f5b5b5a5b5b5a5b5a5b58016dd5d4d0d0d0d0d0d0d0d0d0d0d0c" "704baffffffffffffffffffffffff9d210031c7ddd4d0d0d0d0d0d0d0d0d531ffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffff1c1043635b5b5a5b5a5b5b5a634f019ed8d0d0d0d0d0d0d0d0d0d0d4a" "610deffffffffffffffffffde94390cffff1731a6d5d4d0d0d0d0d0d0dd7419ffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffff2d00295a5f5b5a5b5a5b5a5b632235d5d0d0d0d0d0d0d0d0d0d0d57" "736ffffffffffffffd484350000ffffffffff39006ed5d4d0d0d0d4d5aa04ffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffff0010475b5f5f5b5f5f5f685b10b1d4d0d0d0d0d0d0d0d0d4dd5" "732fffffff7deb65a00002dffffffffffffffffff0058cdd5ddd5d5bf29ffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffff0008293e3e3e392121210158d5d4d0d0d0d0d0d0d0d4aa0" "d013e351818000a39ffffffffffffffffffffffffff0c1b6a6d6a4d0dffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffff0000141014ffffffff0c43bfd5d4d0d0d0d0d0d57c1" "1ff5a5a5a5affffffffffffffffffffffffffffffffffff2a2a2affffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffff2a188ad5d4d4d0d0d4d534f" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffff0946a6cdd5d5d58a0cf" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffff2a0c18636d4604fff" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff34111134fffff" "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" "\n\n", f); } void print_logo(FILE *f, int x, int y, float size) { fprintf(f, "%%----------------------------------------\n" "%% Now the jpilot penguin logo; this is data\n" "%% saved as Postscript from xv, then included\n" "%% into the C code of jpilot!!\n\n" "/origstate save def\n" "20 dict begin\n" "/pix 100 string def\n" "%d %d translate\n" "100.00800 %f mul 131.97600 %f mul scale\n" "100 132 8\n" "[100 0 0 -132 0 132]\n" "{currentfile pix readhexstring pop}\n" "image\n", x, y, size, size); print_logo_data(f); fputs("end origstate restore\n\n" "%%----------------------------------------\n" "%% End of logo\n" "%%----------------------------------------\n", f); } jpilot-1.8.2/restore.h0000664000175000017500000000204612340261240011576 00000000000000/******************************************************************************* * restore.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2001-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _RESTORE_GUI_H__ #define _RESTORE_GUI_H__ int restore_gui(GtkWidget *main_window, int w, int h, int x, int y); #endif jpilot-1.8.2/reconf0000775000175000017500000000056512320101153011142 00000000000000#!/bin/sh set -e set -v set -x if [ -e Makefile ] then make distclean fi rm -rf *.cache *.m4 rm -f config.log config.status #rm -f config.guess config.sub depcomp ltmain.sh #(cat m4/*.m4 > acinclude.m4 2> /dev/null) cp INSTALL INSTALL.bak cp ABOUT-NLS ABOUT-NLS.bak autoreconf --verbose --install --force $@ mv INSTALL.bak INSTALL mv ABOUT-NLS.bak ABOUT-NLS #./configure jpilot-1.8.2/log.c0000664000175000017500000001370712340261240010675 00000000000000/******************************************************************************* * log.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * Thanks to Jason Day for his patches that allowed plugins to log correctly */ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #ifdef USE_FLOCK # include #else # include #endif #include #include #include "i18n.h" #include "log.h" #include "utils.h" #include "sync.h" #include "prefs.h" /********************************* Constants **********************************/ #define WRITE_MAX_BUF 4096 /******************************* Global vars **********************************/ int pipe_to_parent; int glob_log_file_mask; int glob_log_stdout_mask; int glob_log_gui_mask; extern void output_to_pane(const char *str); extern pid_t jpilot_master_pid; /****************************** Prototypes ************************************/ static int jp_vlogf (int level, const char *format, va_list val); /****************************** Main Code *************************************/ int jp_logf(int level, const char *format, ...) { va_list val; int rval; if (!((level & glob_log_file_mask) || (level & glob_log_stdout_mask) || (level & glob_log_gui_mask))) { return EXIT_SUCCESS; } va_start(val, format); rval = jp_vlogf(level, format, val); va_end(val); return rval; } static int jp_vlogf (int level, const char *format, va_list val) { char real_buf[WRITE_MAX_BUF+32]; char *buf, *local_buf; int size; int len; static FILE *fp=NULL; static int err_count=0; char cmd[16]; if (!((level & glob_log_file_mask) || (level & glob_log_stdout_mask) || (level & glob_log_gui_mask))) { return EXIT_SUCCESS; } if ((!fp) && (err_count>10)) { return EXIT_FAILURE; } if ((!fp) && (err_count==10)) { fprintf(stderr, _("Unable to open log file, giving up.\n")); err_count++; return EXIT_FAILURE; } if ((!fp) && (err_count<10)) { char fullname[FILENAME_MAX]; get_home_file_name(EPN".log", fullname, sizeof(fullname)); fp = fopen(fullname, "w"); if (!fp) { fprintf(stderr, _("Unable to open log file\n")); err_count++; } } buf=&(real_buf[16]); buf[0] = '\0'; size = g_vsnprintf(buf, WRITE_MAX_BUF, format, val); /* glibc >2.1 can return size > WRITE_MAX_BUF */ /* just in case g_vsnprintf reached the max */ buf[WRITE_MAX_BUF-1] = '\0'; size=strlen(buf); local_buf = buf; /* UTF-8 text so transform in local encoding */ if (g_utf8_validate(buf, -1, NULL)) { local_buf = g_locale_from_utf8(buf, -1, NULL, NULL, NULL); if (NULL == local_buf) local_buf = buf; } if ((fp) && (level & glob_log_file_mask)) { fwrite(local_buf, size, 1, fp); fflush(fp); } if (level & glob_log_stdout_mask) { fputs(local_buf, stdout); } /* free the buffer is a conversion was used */ if (local_buf != buf) g_free(local_buf); if ((pipe_to_parent) && (level & glob_log_gui_mask)) { /* do not use a pipe for intra-process log * otherwise we may have a dead lock (jpilot freezes) */ if (getpid() == jpilot_master_pid) output_to_pane(buf); else { sprintf(cmd, "%d:", PIPE_PRINT); len = strlen(cmd); buf = buf-len; strncpy(buf, cmd, len); size += len; buf[size]='\0'; buf[size+1]='\n'; size += 2; if (write(pipe_to_parent, buf, size) < 0) { fprintf(stderr, "write returned error %s %d\n", __FILE__, __LINE__); } } } return EXIT_SUCCESS; } /* * This function writes data to the parent process. * A line feed, or a null must be the last character written. */ int write_to_parent(int command, const char *format, ...) { va_list val; int len, size; char real_buf[WRITE_MAX_BUF+32]; char *buf; char cmd[20]; buf=&(real_buf[16]); buf[0] = '\0'; va_start(val, format); g_vsnprintf(buf, WRITE_MAX_BUF, format, val); /* glibc >2.1 can return size > WRITE_MAX_BUF */ /* just in case g_vsnprintf reached the max */ buf[WRITE_MAX_BUF-1] = '\0'; size=strlen(buf); va_end(val); /* This is for jpilot-sync */ if (pipe_to_parent==STDOUT_FILENO) { if (command==PIPE_PRINT) { if (write(pipe_to_parent, buf, strlen(buf)) < 0) { jp_logf(JP_LOG_WARN, "write failed %s %d\n", __FILE__, __LINE__); } } return TRUE; } sprintf(cmd, "%d:", command); len = strlen(cmd); buf = buf-len; strncpy(buf, cmd, len); size += len; /* The pipe doesn't flush unless a CR is written */ /* This is our key to the parent for a record separator */ buf[size]='\0'; buf[size+1]='\n'; size += 2; if (write(pipe_to_parent, buf, size) < 0) { jp_logf(JP_LOG_WARN, "write failed %s %d\n", __FILE__, __LINE__); } return TRUE; } jpilot-1.8.2/alarms.h0000664000175000017500000000246012340261240011372 00000000000000/******************************************************************************* * alarms.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ int alarms_init(unsigned char skip_past_alarms, unsigned char skip_all_alarms); /* * find the next alarm to happen after date2, and find all missed alarms * between date1 and date2. * soonest_only can be used to not find missed alarms. * date1, and date2 can be NULL, meaning the current time. */ int alarms_find_next(struct tm *date1, struct tm *date2, int soonest_only); jpilot-1.8.2/pidfile.c0000664000175000017500000000547312336011036011532 00000000000000/******************************************************************************* * pidfile.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2005 by Jason Day * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include "i18n.h" #include "log.h" #include "utils.h" #include "pidfile.h" /********************************* Constants **********************************/ #define JPILOT_PIDFILE "jpilot.pid" #ifndef O_SYNC # define O_SYNC 0 /* use it if we have it */ #endif /******************************* Global vars **********************************/ static char pidfile[FILENAME_MAX]; /****************************** Main Code *************************************/ void setup_pidfile(void) { memset(pidfile, 0, FILENAME_MAX); get_home_file_name(JPILOT_PIDFILE, pidfile, FILENAME_MAX); } pid_t check_for_jpilot(void) { FILE *pidfp; int pid; pid = 0; if ((pidfp = fopen(pidfile, "r")) != NULL) { if (fscanf(pidfp, "%d", &pid) == EOF) { if (ferror(pidfp)) { jp_logf(JP_LOG_WARN, "fscanf failed %s %d\n", __FILE__, __LINE__); } } if (kill (pid, 0) == -1) { jp_logf(JP_LOG_WARN, _("removing stale pidfile\n")); pid = 0; unlink(pidfile); } fclose(pidfp); } return pid; } void write_pid(void) { char tmp[20]; int fd; jp_logf(JP_LOG_DEBUG, "pidfile: %s\n", pidfile); if ((fd = open(pidfile, O_WRONLY|O_CREAT|O_EXCL|O_SYNC, S_IRUSR|S_IWUSR)) != -1) { g_snprintf(tmp, sizeof(tmp), "%d\n", getpid()); if (write(fd, tmp, strlen (tmp)) < 0) { jp_logf(JP_LOG_WARN, "write failed %s %d\n", __FILE__, __LINE__); } close(fd); } else { jp_logf(JP_LOG_FATAL,_("create pidfile failed: %s\n"), strerror(errno)); jp_logf(JP_LOG_WARN, _("Warning: hotplug syncing disabled.\n")); } } void cleanup_pidfile(void) { if (getpid() == check_for_jpilot()) unlink(pidfile); } jpilot-1.8.2/missing0000755000175000017500000001533012261335263011350 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: jpilot-1.8.2/plugins.h0000664000175000017500000000540312340261240011574 00000000000000/******************************************************************************* * plugins.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "config.h" #ifdef ENABLE_PLUGINS #ifndef __PLUGINS_H__ #define __PLUGINS_H__ #include #include #include #include #include "libplugin.h" #include "prefs.h" #define MAX_NUM_PLUGINS 50 struct plugin_s { char *full_path; void *handle; unsigned char sync_on; unsigned char user_only; char *name; char *menu_name; char *help_name; char *db_name; int number; int (*plugin_get_name)(char *name, int len); int (*plugin_get_menu_name)(char *name, int len); int (*plugin_get_help_name)(char *name, int len); int (*plugin_get_db_name)(char *db_name, int len); int (*plugin_startup)(jp_startup_info *info); int (*plugin_gui)(GtkWidget *vbox, GtkWidget *hbox, unsigned int unique_id); int (*plugin_help)(char **text, int *width, int *height); int (*plugin_print)(void); int (*plugin_import)(GtkWidget *window); int (*plugin_export)(GtkWidget *window); int (*plugin_gui_cleanup)(void); int (*plugin_pre_sync_pre_connect)(void); int (*plugin_pre_sync)(void); int (*plugin_sync)(int sd); int (*plugin_search)(const char *search_string, int case_sense, struct search_result **sr); int (*plugin_post_sync)(void); int (*plugin_exit_cleanup)(void); int (*plugin_unpack_cai_from_ai)(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len); int (*plugin_pack_cai_into_ai)(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len); }; int load_plugins(void); GList *get_plugin_list(void); /* * Free the search_result record list */ void free_search_result(struct search_result **sr); /* * Write out the jpilot.plugins file that tells which plugins to sync */ void write_plugin_sync_file(void); /* * Free the plugin_list */ void free_plugin_list(GList **plugin_list); #endif #endif jpilot-1.8.2/jpilotrc.green0000664000175000017500000001041612320101153012604 00000000000000style "window" { #fg[NORMAL] = { 1.0, 0, 0 } bg[NORMAL] = { 0.0, 0.5, 0.5 } } style "label_high" { fg[NORMAL] = { 0.0, 0.0, 0.8 } } style "today" { base[NORMAL] = { 0.0, 0.70, .71 } } style "tooltips" { fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 1.0, 0.98, .84 } } style "button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0, 0.5, 0.5 } fg[ACTIVE] = { 0, 0.0, 0.0 } bg[ACTIVE] = { 0, 0.6, 0.6 } fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.0, 0.5, 0.5 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { 0.0, .690, .678 } } style "button_app" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, .65, .65 } } style "toggle_button" = "button" { fg[NORMAL] = { 0, 0, 0.0 } bg[NORMAL] = { 0, 0.5, 0.5 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } bg[ACTIVE] = { 0.0, 0.7, 0.7 } bg[PRELIGHT] = { 0.0, 0.5, 0.5 } } style "spin_button" { #fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.0, 0.5, 0.5 } fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } bg[INSENSITIVE] = { 0.0, 0.5, 0.5 } #fg[PRELIGHT] = { 1.0, 1.0, 1.0 } #bg[PRELIGHT] = { 1.0, 1.0, 0.0 } } style "text" { #This is how to use a different font under GTK 1.x #font = "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1" #This is how to use a different font under GTK 2.x #font_name = "Sans 12" fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0, 0.5, 0.5 } fg[PRELIGHT] = { 0.0, 0.0, 0.0 } bg[PRELIGHT] = { 0.0, 0.55, 0.55 } #fg[SELECTED] = { 0.0, 0.0, 0.0 } #bg[SELECTED] = { 0.0, 0.7, 0.7 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } bg[ACTIVE] = { 0.0, 0.5, 0.5 } #bg of scrollbars fg[INSENSITIVE] = { 0.0, 0.0, 0.0 } #fg of scrollbar buttons when insensitive bg[INSENSITIVE] = { 0.0, 0.5, 0.5 } #bg of scrollbar buttons when insensitive text[NORMAL] = { 0.0, 0.0, 0.0 } base[NORMAL] = { 1.0, 1.0, 1.0 } #base[NORMAL] = { 0, 0.5, 0.5 } } style "menu" { fg[NORMAL] = { 0.0, 0.0, 0.0 } bg[NORMAL] = { 0.0, 0.5, 0.5 } fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 0.0, 0.55, 0.55 } fg[ACTIVE] = { 1.0, 0.0, 0.0 } bg[ACTIVE] = { 0, 0.5, 0.5 } fg[SELECTED] = { 1.0, 0.0, 0.0 } bg[SELECTED] = { 0, 0.5, 0.5 } } style "notebook" { fg[NORMAL] = { 0, 0, 0 } bg[NORMAL] = { 0.0, 0.5, 0.5 } fg[ACTIVE] = { 0, 0.0, 0.0 } bg[ACTIVE] = { 0.0, 0.45, 0.45 } } style "calendar" { fg[NORMAL] = { 0.0, 0.0, 0.0 } # normal days text and month/year text bg[NORMAL] = { 0.0, 0.7, 0.7 } # top header part and off month days fg[SELECTED] = { 0.0, 0.0, 0.0 } # selected and week numbers for GTK1.x bg[SELECTED] = { 0.0, 0.7, 0.7 } # selected and week numbers for GTK1.x text[SELECTED] = { 0.0, 0.0, 0.0 } # selected and week numbers for GTK2.x base[SELECTED] = { 0.0, 0.7, 0.7 } # selected and week numbers for GTK2.x text[ACTIVE] = { 0.0, 0.0, 0.0 } # week numbers when focus is not on widget for GTK2.x base[ACTIVE] = { 0.0, 0.7, 0.7 } # week numbers when focus is not on widget for GTK2.x fg[PRELIGHT] = { 1.0, 1.0, 1.0 } # prelights for arrows bg[PRELIGHT] = { 0.0, 0.7, 0.7 } # prelights for arrows base[NORMAL] = { 0.0, 0.5, 0.5 } # bg for calendar } ################################################################################ # These set the widget types to use the styles defined above. widget_class "GtkWindow" style "window" widget_class "GtkDialog" style "window" widget_class "GtkMessageDialog" style "window" widget_class "GtkFileSelection" style "window" widget_class "GtkFontSel*" style "notebook" widget_class "*GtkNotebook" style "notebook" widget_class "*GtkButton*" style "button" widget_class "*GtkCheckButton*" style "toggle_button" widget_class "*GtkRadioButton*" style "toggle_button" widget_class "*GtkToggleButton*" style "toggle_button" widget_class "*GtkSpinButton*" style "spin_button" widget_class "*Menu*" style "menu" widget_class "*GtkText" style "text" widget_class "*GtkTextView" style "text" widget_class "*GtkCList" style "text" widget_class "*GtkVScrollbar" style "text" widget_class "*GtkHScrollbar" style "text" widget_class "*GtkEventBox" style "window" widget_class "*GtkCalendar" style "calendar" ############################################################ # These set the widget types for named gtk widgets in the C code widget "*.button_app" style "button_app" widget "*.label_high" style "label_high" widget "*.today" style "today" widget "*tooltip*" style "tooltips" jpilot-1.8.2/jpilot-merge.c0000664000175000017500000002301212340261240012500 00000000000000/******************************************************************************* * merge.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2010-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_LOCALE_H # include #endif /* Pilot-link header files */ #include #include #include #include #include /* Jpilot header files */ #include "utils.h" #include "i18n.h" #include "otherconv.h" #include "libplugin.h" #include "sync.h" /******************************* Global vars **********************************/ /* Start Hack */ /* FIXME: The following is a hack. * The variables below are global variables in jpilot.c which are unused in * this code but must be instantiated for the code to compile. * The same is true of the functions which are only used in GUI mode. */ pid_t jpilot_master_pid = -1; GtkWidget *glob_dialog; GtkWidget *glob_date_label; gint glob_date_timer_tag; void output_to_pane(const char *str) {} int sync_once(struct my_sync_info *sync_info) { return EXIT_SUCCESS; } int jp_pack_Contact(struct Contact *c, pi_buffer_t *buf) { return 0; } int edit_cats(GtkWidget *widget, char *db_name, struct CategoryAppInfo *cai) { return 0; } /* End Hack */ /****************************** Main Code *************************************/ static int read_pc_recs(char *file_name, GList **records) { FILE *pc_in; int recs_returned; buf_rec *temp_br; int r; /* Get the records out of the PC database */ pc_in = fopen(file_name, "r"); if (pc_in==NULL) { fprintf(stderr, _("Unable to open file: %s\n"), file_name); return -1; } while(!feof(pc_in)) { temp_br = malloc(sizeof(buf_rec)); if (!temp_br) { fprintf(stderr, _("Out of memory")); recs_returned = -1; break; } r = pc_read_next_rec(pc_in, temp_br); if ((r==JPILOT_EOF) || (r<0)) { free(temp_br); break; } *records = g_list_prepend(*records, temp_br); recs_returned++; } fclose(pc_in); return 0; } static int merge_pdb_file(char *src_pdb_file, char *src_pc_file, char *dest_pdb_file) { struct pi_file *pf1, *pf2; struct DBInfo infop; void *app_info; void *sort_info; void *record; int r; int idx; size_t size; int attr; int cat; pi_uid_t uid; buf_rec *temp_br_pdb; buf_rec *temp_br_pc; GList *Ppdb_record = NULL; GList *Ppc_record = NULL; GList *pdb_records = NULL; GList *pc_records = NULL; int dont_add; unsigned int next_available_unique_id; // Statistics int pdb_count=0; int recs_added = 0; int recs_deleted = 0; int recs_modified = 0; int recs_written = 0; if (access(src_pdb_file, R_OK)) { fprintf(stderr, _("Unable to open file: %s\n"), src_pdb_file); return 1; } if (access(src_pc_file, R_OK)) { fprintf(stderr, _("Unable to open file: %s\n"), src_pc_file); return 1; } r = read_pc_recs(src_pc_file, &pc_records); if (r < 0) { fprintf(stderr, "read_pc_recs returned %d\n", r); exit(1); } pf1 = pi_file_open(src_pdb_file); if (!pf1) { fprintf(stderr, _("%s: Unable to open file:%s\n"), "pi_file_open", src_pdb_file); exit(1); } pi_file_get_info(pf1, &infop); pf2 = pi_file_create(dest_pdb_file, &infop); if (!pf2) { fprintf(stderr, _("%s: Unable to open file:%s\n"), "pi_file_open", dest_pdb_file); exit(1); } pi_file_get_app_info(pf1, &app_info, &size); pi_file_set_app_info(pf2, app_info, size); pi_file_get_sort_info(pf1, &sort_info, &size); pi_file_set_sort_info(pf2, sort_info, size); for(idx=0;;idx++) { r = pi_file_read_record(pf1, idx, &record, &size, &attr, &cat, &uid); //printf("attr=%d, cat=%d\n", attr, cat); if (r<0) break; pdb_count++; temp_br_pdb = malloc(sizeof(buf_rec)); temp_br_pdb->rt = PALM_REC; temp_br_pdb->unique_id = uid; temp_br_pdb->attrib = attr | cat; //temp_br_pdb->buf = record; temp_br_pdb->buf = malloc(size); memcpy(temp_br_pdb->buf, record, size); temp_br_pdb->size = size; dont_add=0; // Look through the pc record list for (Ppc_record=pc_records; Ppc_record; Ppc_record=Ppc_record->next) { temp_br_pc = (buf_rec *)Ppc_record->data; if ((temp_br_pc->rt==DELETED_PC_REC) || (temp_br_pc->rt==DELETED_DELETED_PALM_REC)) { continue; } if ((temp_br_pc->rt==DELETED_PALM_REC) || (temp_br_pc->rt==MODIFIED_PALM_REC)) { if (temp_br_pdb->unique_id == temp_br_pc->unique_id) { // Don't add it to the pdb list dont_add=1; if (temp_br_pc->rt==DELETED_PALM_REC) { recs_deleted++; } break; } } if ((temp_br_pc->rt==REPLACEMENT_PALM_REC)) { if (temp_br_pdb->unique_id == temp_br_pc->unique_id) { // Replace the record data in the pdb record with replacement record data //printf("REPLACEMENT\n"); dont_add=1; pdb_records = g_list_prepend(pdb_records, temp_br_pc); recs_modified++; //break; } } } if (! dont_add) { pdb_records = g_list_prepend(pdb_records, temp_br_pdb); } } // Find the next available unique ID next_available_unique_id = 0; for (Ppdb_record=pdb_records; Ppdb_record; Ppdb_record=Ppdb_record->next) { temp_br_pdb = (buf_rec *)Ppdb_record->data; if (temp_br_pdb->unique_id > next_available_unique_id) { next_available_unique_id = temp_br_pdb->unique_id + 1; } } // Add the NEW records to the list for (Ppc_record=pc_records; Ppc_record; Ppc_record=Ppc_record->next) { temp_br_pc = (buf_rec *)Ppc_record->data; if ((temp_br_pc->rt==NEW_PC_REC)) { temp_br_pc->unique_id = next_available_unique_id++; pdb_records = g_list_prepend(pdb_records, temp_br_pc); recs_added++; continue; } } pdb_records = g_list_reverse(pdb_records); for (Ppdb_record=pdb_records; Ppdb_record; Ppdb_record=Ppdb_record->next) { temp_br_pdb = (buf_rec *)Ppdb_record->data; //printf("rt=%d\n", temp_br_pdb->rt); //printf("unique_id=%d\n", temp_br_pdb->unique_id); //printf("attrib=%d\n", temp_br_pdb->attrib); //printf("buf=%ld\n", temp_br_pdb->buf); //printf("size=%d\n", temp_br_pdb->size); pi_file_append_record(pf2, temp_br_pdb->buf, temp_br_pdb->size, (temp_br_pdb->attrib)&0xF0, (temp_br_pdb->attrib)&0x0F, temp_br_pdb->unique_id); recs_written++; } pi_file_close(pf1); pi_file_close(pf2); printf(_("Records read from pdb = %d\n"), pdb_count); printf(_("Records added = %d\n"), recs_added); printf(_("Records deleted = %d\n"), recs_deleted); printf(_("Records modified = %d\n"), recs_modified); printf(_("Records written = %d\n"), recs_written); return 0; } int main(int argc, char *argv[]) { /* enable internationalization(i18n) before printing any output */ #if defined(ENABLE_NLS) # ifdef HAVE_LOCALE_H setlocale(LC_ALL, ""); # endif bindtextdomain(EPN, LOCALEDIR); textdomain(EPN); #endif if (argc != 3) { fprintf(stderr, _("Usage: %s {input pdb file} {input pc3 file} {output pdb file}\n"), argv[0]); fprintf(stderr, _(" This program will merge an unsynced records file (pc3)\n")); fprintf(stderr, _(" into the corresponding palm database (pdb) file.\n\n")); fprintf(stderr, _(" WARNING: Only run this utility if you understand the consequences!\n")); fprintf(stderr, _(" The merge will leave your databases in an unsync-able state.\n")); fprintf(stderr, _(" It is intended for cases where J-pilot is being used as a standalone PIM\n")); fprintf(stderr, _(" and where no syncing occurs to physical hardware.\n")); fprintf(stderr, _(" WARNING: Make a backup copy of your databases before proceeding.\n")); fprintf(stderr, _(" It is quite simple to destroy your databases by accidentally merging\n")); fprintf(stderr, _(" address records into datebook databases, etc.\n")); exit(EXIT_FAILURE); } char *in_pdb; char *in_pc; char *out_pdb; in_pdb = argv[1]; in_pc = argv[2]; out_pdb = argv[3]; merge_pdb_file(in_pdb, in_pc, out_pdb); return EXIT_SUCCESS; } jpilot-1.8.2/SlackBuild0000775000175000017500000000762212336026331011717 00000000000000#!/bin/bash # # First build with # ./configure --prefix=/usr; make; make install # PACKAGE=jpilot VERSION=1.8.2 ARCH=i386 RELEASE=1 # STARTDIR=`pwd` TMPDIR=`mktemp -d -t slackware.XXXXXX` || exit 1 # echo Created $TMPDIR mkdir $TMPDIR/install cp description-pak $TMPDIR/install/slack-desc # cd / tar cf - \ usr/bin/jpilot \ usr/bin/jpilot-dump \ usr/bin/jpilot-dial \ usr/bin/jpilot-sync \ usr/lib/jpilot/plugins/libexpense.la \ usr/lib/jpilot/plugins/libexpense.so \ usr/lib/jpilot/plugins/libexpense.so.0 \ usr/lib/jpilot/plugins/libexpense.so.0.0.0 \ usr/lib/jpilot/plugins/libsynctime.la \ usr/lib/jpilot/plugins/libsynctime.so \ usr/lib/jpilot/plugins/libsynctime.so.0 \ usr/lib/jpilot/plugins/libsynctime.so.0.0.0 \ usr/lib/jpilot/plugins/libkeyring.la \ usr/lib/jpilot/plugins/libkeyring.so \ usr/lib/jpilot/plugins/libkeyring.so.0 \ usr/lib/jpilot/plugins/libkeyring.so.0.0.0 \ usr/man/man1/jpilot.1 \ usr/man/man1/jpilot-dial.1 \ usr/man/man1/jpilot-sync.1 \ usr/doc/$PACKAGE-$VERSION/AUTHORS \ usr/doc/$PACKAGE-$VERSION/BUGS \ usr/doc/$PACKAGE-$VERSION/COPYING \ usr/doc/$PACKAGE-$VERSION/ChangeLog \ usr/doc/$PACKAGE-$VERSION/INSTALL \ usr/doc/$PACKAGE-$VERSION/README \ usr/doc/$PACKAGE-$VERSION/TODO \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-address.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-datebook.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-expense.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-install.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-memo.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-1.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-2.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-3.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-4.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-5.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-6.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-7.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-prefs-8.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-print.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-search.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-todo.png \ usr/doc/$PACKAGE-$VERSION/manual/jpilot-toplogo.jpg \ usr/doc/$PACKAGE-$VERSION/manual/manual.html \ usr/doc/$PACKAGE-$VERSION/manual/plugin.html \ usr/doc/$PACKAGE-$VERSION/icons/README \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon1.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon2.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon3.xpm \ usr/doc/$PACKAGE-$VERSION/icons/jpilot-icon4.xpm \ usr/share/$PACKAGE/AddressDB.pdb \ usr/share/$PACKAGE/DatebookDB.pdb \ usr/share/$PACKAGE/ExpenseDB.pdb \ usr/share/$PACKAGE/Memo32DB.pdb \ usr/share/$PACKAGE/MemoDB.pdb \ usr/share/$PACKAGE/ToDoDB.pdb \ usr/share/$PACKAGE/TasksDB-PTod.pdb \ usr/share/$PACKAGE/CalendarDB-PDat.pdb \ usr/share/$PACKAGE/ContactsDB-PAdd.pdb \ usr/share/$PACKAGE/MemosDB-PMem.pdb \ usr/share/$PACKAGE/jpilotrc.blue \ usr/share/$PACKAGE/jpilotrc.default \ usr/share/$PACKAGE/jpilotrc.green \ usr/share/$PACKAGE/jpilotrc.purple \ usr/share/$PACKAGE/jpilotrc.steel \ usr/share/locale/ca/LC_MESSAGES/jpilot.mo \ usr/share/locale/cs/LC_MESSAGES/jpilot.mo \ usr/share/locale/da/LC_MESSAGES/jpilot.mo \ usr/share/locale/de/LC_MESSAGES/jpilot.mo \ usr/share/locale/es/LC_MESSAGES/jpilot.mo \ usr/share/locale/fr/LC_MESSAGES/jpilot.mo \ usr/share/locale/it/LC_MESSAGES/jpilot.mo \ usr/share/locale/ja/LC_MESSAGES/jpilot.mo \ usr/share/locale/ko/LC_MESSAGES/jpilot.mo \ usr/share/locale/nl/LC_MESSAGES/jpilot.mo \ usr/share/locale/no/LC_MESSAGES/jpilot.mo \ usr/share/locale/ru/LC_MESSAGES/jpilot.mo \ usr/share/locale/rw/LC_MESSAGES/jpilot.mo \ usr/share/locale/sv/LC_MESSAGES/jpilot.mo \ usr/share/locale/tr/LC_MESSAGES/jpilot.mo \ usr/share/locale/uk/LC_MESSAGES/jpilot.mo \ usr/share/locale/vi/LC_MESSAGES/jpilot.mo \ usr/share/locale/zh_CN/LC_MESSAGES/jpilot.mo \ usr/share/locale/zh_TW/LC_MESSAGES/jpilot.mo \ | (cd $TMPDIR; tar xf -) # cd $TMPDIR makepkg -l n -c n $PACKAGE-$VERSION-$ARCH-$RELEASE.tgz cp $TMPDIR/*.tgz $STARTDIR/ rm -rf $TMPDIR jpilot-1.8.2/memo_gui.c0000664000175000017500000016351412340261240011717 00000000000000/******************************************************************************* * memo_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include #include "memo.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "password.h" #include "print.h" #include "export.h" #include "stock_buttons.h" /********************************* Constants **********************************/ #define NUM_MEMO_CAT_ITEMS 16 #define MEMO_MAX_COLUMN_LEN 80 #define MEMO_CLIST_CHAR_WIDTH 50 #define NUM_MEMO_CSV_FIELDS 3 #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 /******************************* Global vars **********************************/ /* Keeps track of whether code is using Memo, or Memos database * 0 is Memo, 1 is Memos */ static long memo_version=0; extern GtkWidget *glob_date_label; extern int glob_date_timer_tag; static struct MemoAppInfo memo_app_info; static int memo_category = CATEGORY_ALL; static int clist_row_selected; static GtkWidget *clist; static GtkWidget *memo_text; static GObject *memo_text_buffer; static GtkWidget *private_checkbox; /* Need two extra slots for the ALL category and Edit Categories... */ static GtkWidget *memo_cat_menu_item1[NUM_MEMO_CAT_ITEMS+2]; static GtkWidget *memo_cat_menu_item2[NUM_MEMO_CAT_ITEMS]; static GtkWidget *category_menu1; static GtkWidget *category_menu2; static GtkWidget *pane; static struct sorted_cats sort_l[NUM_MEMO_CAT_ITEMS]; static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *undelete_record_button; static GtkWidget *copy_record_button; static GtkWidget *cancel_record_button; static int record_changed; static MemoList *glob_memo_list=NULL; static MemoList *export_memo_list=NULL; /****************************** Prototypes ************************************/ static int memo_clear_details(void); static int memo_clist_redraw(void); static void connect_changed_signals(int con_or_dis); static int memo_find(void); static int memo_get_details(struct Memo *new_memo, unsigned char *attrib); static void memo_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, MemoList **memo_list, int category, int main); static void cb_add_new_record(GtkWidget *widget, gpointer data); static void cb_edit_cats(GtkWidget *widget, gpointer data); /****************************** Main Code *************************************/ static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case NEW_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(undelete_record_button); break; case UNDELETE_FLAG: gtk_widget_show(undelete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(delete_record_button); break; default: return; } record_changed=new_state; } static void cb_record_changed(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if (GTK_CLIST(clist)->rows > 0) { set_new_button_to(MODIFY_FLAG); } else { set_new_button_to(NEW_FLAG); } } else if (record_changed==UNDELETE_FLAG) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is deleted.\n" "Undelete it or copy it to make changes.\n")); } } static void connect_changed_signals(int con_or_dis) { int i; static int connected=0; /* CONNECT */ if ((con_or_dis==CONNECT_SIGNALS) && (!connected)) { connected=1; for (i=0; i65534) { len=65534-text_len; line[len]='\0'; jp_logf(JP_LOG_WARN, _("Memo text > 65535, truncating\n")); strcat(text, line); break; } text_len+=len; strcat(text, line); } /* convert to valid UTF-8 and recalculate the length */ jp_charset_p2j(text, sizeof(text)); text_len = strlen(text); #ifdef JPILOT_DEBUG printf("text=[%s]\n", text); printf("text_len=%d\n", text_len); printf("strlen(text)=%d\n", strlen(text)); #endif new_memo.text=text; ret=import_record_ask(parent_window, pane, new_memo.text, &(memo_app_info.category), _("Unfiled"), 0, attrib & 0x0F, &new_cat_num); if ((ret==DIALOG_SAID_IMPORT_ALL) || (ret==DIALOG_SAID_IMPORT_YES)) { pc_memo_write(&new_memo, NEW_PC_REC, attrib, NULL); jp_logf(JP_LOG_WARN, _("Imported Memo %s\n"), file_path); } } /* CSV */ if (type==IMPORT_TYPE_CSV) { jp_logf(JP_LOG_DEBUG, "Memo import CSV [%s]\n", file_path); /* Get the first line containing the format and check for reasonableness */ if (fgets(text, sizeof(text), in) == NULL) { jp_logf(JP_LOG_WARN, "fgets failed %s %d\n", __FILE__, __LINE__); } ret = verify_csv_header(text, NUM_MEMO_CSV_FIELDS, file_path); if (EXIT_FAILURE == ret) return EXIT_FAILURE; import_all=FALSE; while (1) { /* Read the category field */ ret = read_csv_field(in, text, sizeof(text)); if (feof(in)) break; #ifdef JPILOT_DEBUG printf("category is [%s]\n", text); #endif g_strlcpy(old_cat_name, text, 16); /* Figure out what the best category number is */ suggested_cat_num=0; for (i=0; inext) { #ifdef JPILOT_DEBUG printf("category=%d\n", temp_memolist->mmemo.unique_id); printf("attrib=%d\n", temp_memolist->mmemo.attrib); printf("private=%d\n", temp_memolist->mmemo.attrib & 0x10); printf("memo=[%s]\n", temp_memolist->mmemo.memo.text); #endif new_memo.text=temp_memolist->mmemo.memo.text; index=temp_memolist->mmemo.unique_id-1; if (index<0) { g_strlcpy(old_cat_name, _("Unfiled"), 16); index=0; } else { g_strlcpy(old_cat_name, cai.name[index], 16); } attrib=0; /* Figure out what category it was in the dat file */ index=temp_memolist->mmemo.unique_id-1; suggested_cat_num=0; if (index>-1) { for (i=0; immemo.attrib & 0x10), suggested_cat_num, &new_cat_num); } else { new_cat_num=suggested_cat_num; } if (ret==DIALOG_SAID_IMPORT_QUIT) break; if (ret==DIALOG_SAID_IMPORT_SKIP) continue; if (ret==DIALOG_SAID_IMPORT_ALL) import_all=TRUE; attrib = (new_cat_num & 0x0F) | ((temp_memolist->mmemo.attrib & 0x10) ? dlpRecAttrSecret : 0); if ((ret==DIALOG_SAID_IMPORT_YES) || (import_all)) { pc_memo_write(&new_memo, NEW_PC_REC, attrib, NULL); } } free_MemoList(&memolist); } memo_refresh(); fclose(in); return EXIT_SUCCESS; } int memo_import(GtkWidget *window) { char *type_desc[] = { N_("Text"), N_("CSV (Comma Separated Values)"), N_("DAT/MPA (Palm Archive Formats)"), NULL }; int type_int[] = { IMPORT_TYPE_TEXT, IMPORT_TYPE_CSV, IMPORT_TYPE_DAT, 0 }; /* Hide ABA import of Memos until file format has been decoded */ if (memo_version==1) { type_desc[2] = NULL; type_int[2] = 0; } import_gui(window, pane, type_desc, type_int, cb_memo_import); return EXIT_SUCCESS; } /* End Import Code */ /* Start Export code */ static void cb_memo_export_ok(GtkWidget *export_window, GtkWidget *clist, int type, const char *filename) { MyMemo *mmemo; GList *list, *temp_list; FILE *out; struct stat statb; int i, r, len; const char *short_date; time_t ltime; struct tm *now; char *button_text[]={N_("OK")}; char *button_overwrite_text[]={N_("No"), N_("Yes")}; char text[1024]; char str1[256], str2[256]; char date_string[1024]; char pref_time[40]; char csv_text[65550]; long char_set; char *utf; int cat; int j; /* Open file for export, including corner cases where file exists or * can't be opened */ if (!stat(filename, &statb)) { if (S_ISDIR(statb.st_mode)) { g_snprintf(text, sizeof(text), _("%s is a directory"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } g_snprintf(text,sizeof(text), _("Do you want to overwrite file %s?"), filename); r = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_ERROR, text, 2, button_overwrite_text); if (r!=DIALOG_SAID_2) { return; } } out = fopen(filename, "w"); if (!out) { g_snprintf(text,sizeof(text), _("Error opening file: %s"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } /* Write a header for TEXT file */ if (type == EXPORT_TYPE_TEXT) { get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(date_string, sizeof(date_string), "%s %s", str1, str2); if (memo_version==0) { fprintf(out, _("Memo exported from %s %s on %s\n\n"), PN,VERSION,date_string); } else { fprintf(out, _("Memos exported from %s %s on %s\n\n"), PN,VERSION,date_string); } } /* Write a header to the CSV file */ if (type == EXPORT_TYPE_CSV) { if (memo_version==0) { fprintf(out, "CSV memo version "VERSION": Category, Private, Memo Text\n"); } else { fprintf(out, "CSV memos version "VERSION": Category, Private, Memo Text\n"); } } /* Write a header to the BFOLDERS CSV file */ if (type == EXPORT_TYPE_BFOLDERS) { fprintf(out, "Notes:\n"); fprintf(out, "Note,Folder\n"); } /* Write a header to the KeePassX XML file */ if (type == EXPORT_TYPE_KEEPASSX) { fprintf(out, "\n"); fprintf(out, "\n"); fprintf(out, " \n"); fprintf(out, " Memos\n"); fprintf(out, " 7\n"); } get_pref(PREF_CHAR_SET, &char_set, NULL); list=GTK_CLIST(clist)->selection; for (i=0, temp_list=list; temp_list; temp_list = temp_list->next, i++) { mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mmemo) { continue; jp_logf(JP_LOG_WARN, _("Can't export memo %d\n"), (long) temp_list->data + 1); } switch (type) { case EXPORT_TYPE_CSV: len=0; if (mmemo->memo.text) { len=strlen(mmemo->memo.text) * 2 + 4; } if (len<256) len=256; utf = charset_p2newj(memo_app_info.category.name[mmemo->attrib & 0x0F], 16, char_set); str_to_csv_str(csv_text, utf); fprintf(out, "\"%s\",", csv_text); g_free(utf); fprintf(out, "\"%s\",", (mmemo->attrib & dlpRecAttrSecret) ? "1":"0"); str_to_csv_str(csv_text, mmemo->memo.text); fprintf(out, "\"%s\"\n", csv_text); break; case EXPORT_TYPE_BFOLDERS: len=0; str_to_csv_str(csv_text, mmemo->memo.text); fprintf(out, "\"%s\",", csv_text); if (mmemo->memo.text) { len=strlen(mmemo->memo.text) * 2 + 4; } if (len<256) len=256; printf("\"RAW %d %s\"\n", mmemo->attrib & 0x0F, memo_app_info.category.name[mmemo->attrib & 0x0F]); utf = charset_p2newj(memo_app_info.category.name[mmemo->attrib & 0x0F], 16, char_set); str_to_csv_str(csv_text, utf); fprintf(out, "\"Memos > %s\"\n", csv_text); printf("\"Memos > %s\"\n", utf); g_free(utf); break; case EXPORT_TYPE_TEXT: get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(text, sizeof(text), "%s %s", str1, str2); fprintf(out, _("Memo: %ld\n"), (long) temp_list->data + 1); utf = charset_p2newj(memo_app_info.category.name[mmemo->attrib & 0x0F], 16, char_set); fprintf(out, _("Category: %s\n"), utf); g_free(utf); fprintf(out, _("Private: %s\n"), (mmemo->attrib & dlpRecAttrSecret) ? _("Yes"):_("No")); fprintf(out, _("----- Start of Memo -----\n")); fprintf(out, "%s", mmemo->memo.text); fprintf(out, _("\n----- End of Memo -----\n\n")); break; case EXPORT_TYPE_KEEPASSX: break; default: jp_logf(JP_LOG_WARN, _("Unknown export type\n")); } } /* I'm writing a second loop for the KeePassX XML file because I want to * put each category into a folder and we need to write the tag for a folder * and then find each record in that category/folder */ if (type==EXPORT_TYPE_KEEPASSX) { for (cat=0; cat < 16; cat++) { if (memo_app_info.category.name[cat][0]=='\0') { continue; } /* Write a folder XML tag */ utf = charset_p2newj(memo_app_info.category.name[cat], 16, char_set); fprintf(out, " \n"); fprintf(out, " %s\n", utf); fprintf(out, " 7\n"); g_free(utf); for (i=0, temp_list=list; temp_list; temp_list = temp_list->next, i++) { mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mmemo) { continue; jp_logf(JP_LOG_WARN, _("Can't export memo %d\n"), (long) temp_list->data + 1); } if ((mmemo->attrib & 0x0F) != cat) { continue; } fprintf(out, " \n"); /* Create a title (which is the first line of the memo) */ for (j=0; j<100; j++) { str1[j]=mmemo->memo.text[j]; if (str1[j] == '\0') { break; } if (str1[j] == '\n') { str1[j]='\0'; break; } } str1[100]='\0'; str_to_keepass_str(csv_text, str1); fprintf(out, " %s\n", csv_text); /* No keyring field for username */ /* No keyring field for password */ /* No keyring field for url */ str_to_keepass_str(csv_text, mmemo->memo.text); fprintf(out, " %s\n", csv_text); fprintf(out, " 7\n"); /* No keyring field for creation */ /* No keyring field for lastaccess */ /* No keyring field for lastmod */ /* No keyring field for expire */ fprintf(out, " Never\n"); fprintf(out, " \n"); } fprintf(out, " \n"); } /* Write a footer to the KeePassX XML file */ if (type == EXPORT_TYPE_KEEPASSX) { fprintf(out, " \n"); fprintf(out, "\n"); } } if (out) { fclose(out); } } static void cb_memo_update_clist(GtkWidget *clist, int category) { memo_update_clist(clist, NULL, &export_memo_list, category, FALSE); } static void cb_memo_export_done(GtkWidget *widget, const char *filename) { free_MemoList(&export_memo_list); set_pref(PREF_MEMO_EXPORT_FILENAME, 0, filename, TRUE); } int memo_export(GtkWidget *window) { int w, h, x, y; char *type_text[]={N_("Text"), N_("CSV"), N_("B-Folders CSV"), N_("KeePassX XML"), NULL}; int type_int[]={EXPORT_TYPE_TEXT, EXPORT_TYPE_CSV, EXPORT_TYPE_BFOLDERS, EXPORT_TYPE_KEEPASSX}; gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = gtk_paned_get_position(GTK_PANED(pane)); x+=40; export_gui(window, w, h, x, y, 1, sort_l, PREF_MEMO_EXPORT_FILENAME, type_text, type_int, cb_memo_update_clist, cb_memo_export_done, cb_memo_export_ok ); return EXIT_SUCCESS; } /* End Export Code */ /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; imemo.text) charset_j2p(mmemo->memo.text, strlen(mmemo->memo.text)+1, char_set); } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mmemo->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ jp_logf(JP_LOG_DEBUG, "mmemo->unique_id = %d\n",mmemo->unique_id); jp_logf(JP_LOG_DEBUG, "mmemo->rt = %d\n",mmemo->rt); flag = GPOINTER_TO_INT(data); if ((flag==MODIFY_FLAG) || (flag==DELETE_FLAG)) { delete_pc_record(MEMO, mmemo, flag); if (flag==DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected>0) { clist_row_selected--; } } } if (flag == DELETE_FLAG) { memo_clist_redraw(); } } static void cb_undelete_memo(GtkWidget *widget, gpointer data) { MyMemo *mmemo; int flag; int show_priv; mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mmemo < (MyMemo *)CLIST_MIN_DATA) { return; } /* Do masking like Palm OS 3.5 */ show_priv = show_privates(GET_PRIVATES); if ((show_priv != SHOW_PRIVATES) && (mmemo->attrib & dlpRecAttrSecret)) { return; } /* End Masking */ jp_logf(JP_LOG_DEBUG, "mmemo->unique_id = %d\n",mmemo->unique_id); jp_logf(JP_LOG_DEBUG, "mmemo->rt = %d\n",mmemo->rt); flag = GPOINTER_TO_INT(data); if (flag==UNDELETE_FLAG) { if (mmemo->rt == DELETED_PALM_REC || mmemo->rt == DELETED_PC_REC) { undelete_pc_record(MEMO, mmemo, flag); } /* Possible later addition of undelete for modified records else if (mmemo->rt == MODIFIED_PALM_REC) { cb_add_new_record(widget, GINT_TO_POINTER(COPY_FLAG)); } */ } memo_clist_redraw(); } static void cb_cancel(GtkWidget *widget, gpointer data) { set_new_button_to(CLEAR_FLAG); memo_refresh(); } static void cb_edit_cats(GtkWidget *widget, gpointer data) { struct MemoAppInfo ai; char db_name[FILENAME_MAX]; char pdb_name[FILENAME_MAX]; char full_name[FILENAME_MAX]; unsigned char buffer[65536]; int num; size_t size; void *buf; struct pi_file *pf; long memo_version; jp_logf(JP_LOG_DEBUG, "cb_edit_cats\n"); get_pref(PREF_MEMO_VERSION, &memo_version, NULL); switch (memo_version) { case 0: default: strcpy(pdb_name, "MemoDB.pdb"); strcpy(db_name, "MemoDB"); break; case 1: strcpy(pdb_name, "MemosDB-PMem.pdb"); strcpy(db_name, "MemosDB-PMem"); break; case 2: strcpy(pdb_name, "Memo32DB.pdb"); strcpy(db_name, "Memo32DB"); break; } get_home_file_name(pdb_name, full_name, sizeof(full_name)); buf=NULL; memset(&ai, 0, sizeof(ai)); pf = pi_file_open(full_name); pi_file_get_app_info(pf, &buf, &size); num = unpack_MemoAppInfo(&ai, buf, size); if (num <= 0) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), pdb_name); return; } pi_file_close(pf); edit_cats(widget, db_name, &(ai.category)); size = pack_MemoAppInfo(&ai, buffer, sizeof(buffer)); pdb_file_write_app_block(db_name, buffer, size); cb_app_button(NULL, GINT_TO_POINTER(REDRAW)); } static void cb_category(GtkWidget *item, int selection) { int b; if ((GTK_CHECK_MENU_ITEM(item))->active) { if (memo_category == selection) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (memo_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(memo_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(memo_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (selection==NUM_MEMO_CAT_ITEMS+1) { cb_edit_cats(item, NULL); } else { memo_category = selection; } clist_row_selected = 0; jp_logf(JP_LOG_DEBUG, "cb_category() cat=%d\n", memo_category); memo_update_clist(clist, category_menu1, &glob_memo_list, memo_category, TRUE); jp_logf(JP_LOG_DEBUG, "Leaving cb_category()\n"); } } static int memo_clear_details(void) { int new_cat; int sorted_position; jp_logf(JP_LOG_DEBUG, "memo_clear_details()\n"); /* Need to disconnect signals first */ connect_changed_signals(DISCONNECT_SIGNALS); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(memo_text_buffer), "", -1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), FALSE); if (memo_category==CATEGORY_ALL) { new_cat = 0; } else { new_cat = memo_category; } sorted_position = find_sort_cat_pos(new_cat); if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(memo_cat_menu_item2[sorted_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } set_new_button_to(CLEAR_FLAG); connect_changed_signals(CONNECT_SIGNALS); jp_logf(JP_LOG_DEBUG, "Leaving memo_clear_details()\n"); return EXIT_SUCCESS; } static int memo_get_details(struct Memo *new_memo, unsigned char *attrib) { int i; GtkTextIter start_iter; GtkTextIter end_iter; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(memo_text_buffer),&start_iter,&end_iter); new_memo->text = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(memo_text_buffer),&start_iter,&end_iter,TRUE); if (new_memo->text[0]=='\0') { free(new_memo->text); new_memo->text=NULL; } /* Get the category that is set from the menu */ for (i=0; iactive) { *attrib = sort_l[i].cat_num; break; } } } if (GTK_TOGGLE_BUTTON(private_checkbox)->active) { *attrib |= dlpRecAttrSecret; } return EXIT_SUCCESS; } static void cb_add_new_record(GtkWidget *widget, gpointer data) { MyMemo *mmemo; struct Memo new_memo; unsigned char attrib; int flag; unsigned int unique_id; int show_priv; flag=GPOINTER_TO_INT(data); mmemo=NULL; unique_id=0; /* Do masking like Palm OS 3.5 */ if ((flag==COPY_FLAG) || (flag==MODIFY_FLAG)) { show_priv = show_privates(GET_PRIVATES); mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mmemo < (MyMemo *)CLIST_MIN_DATA) { return; } if ((show_priv != SHOW_PRIVATES) && (mmemo->attrib & dlpRecAttrSecret)) { return; } } /* End Masking */ if (flag==CLEAR_FLAG) { /* Clear button was hit */ memo_clear_details(); connect_changed_signals(DISCONNECT_SIGNALS); set_new_button_to(NEW_FLAG); gtk_widget_grab_focus(GTK_WIDGET(memo_text)); return; } if ((flag!=NEW_FLAG) && (flag!=MODIFY_FLAG) && (flag!=COPY_FLAG)) { return; } if (flag==MODIFY_FLAG) { mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); unique_id = mmemo->unique_id; if (mmemo < (MyMemo *)CLIST_MIN_DATA) { return; } if ((mmemo->rt==DELETED_PALM_REC) || (mmemo->rt==DELETED_PC_REC) || (mmemo->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("You can't modify a record that is deleted\n")); return; } } memo_get_details(&new_memo, &attrib); set_new_button_to(CLEAR_FLAG); /* Keep unique ID intact */ if (flag==MODIFY_FLAG) { cb_delete_memo(NULL, data); if ((mmemo->rt==PALM_REC) || (mmemo->rt==REPLACEMENT_PALM_REC)) { pc_memo_write(&new_memo, REPLACEMENT_PALM_REC, attrib, &unique_id); } else { unique_id=0; pc_memo_write(&new_memo, NEW_PC_REC, attrib, &unique_id); } } else { unique_id=0; pc_memo_write(&new_memo, NEW_PC_REC, attrib, &unique_id); } free_Memo(&new_memo); /* Don't return to modified record if search gui active */ if (!glob_find_id) { glob_find_id = unique_id; } memo_clist_redraw(); return; } /* Do masking like Palm OS 3.5 */ static void clear_mymemo(MyMemo *mmemo) { mmemo->unique_id=0; mmemo->attrib=mmemo->attrib & 0xF8; if (mmemo->memo.text) { free(mmemo->memo.text); mmemo->memo.text=strdup(""); } return; } /* End Masking */ static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct Memo *memo; MyMemo *mmemo; int b; int index, sorted_position; unsigned int unique_id = 0; if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (clist_row_selected == row) { return; } mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mmemo!=NULL) { unique_id = mmemo->unique_id; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ if (clist_row_selected >=0) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); } else { clist_row_selected = 0; clist_select_row(GTK_CLIST(clist), 0, 0); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { glob_find_id = unique_id; memo_find(); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } clist_row_selected=row; mmemo = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mmemo==NULL) { return; } if (mmemo->rt == DELETED_PALM_REC || (mmemo->rt == DELETED_PC_REC)) /* Possible later addition of undelete code for modified deleted records || mmemo->rt == MODIFIED_PALM_REC */ { set_new_button_to(UNDELETE_FLAG); } else { set_new_button_to(CLEAR_FLAG); } connect_changed_signals(DISCONNECT_SIGNALS); memo=&(mmemo->memo); index = mmemo->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (memo_cat_menu_item2[sorted_position]==NULL) { /* Illegal category */ jp_logf(JP_LOG_DEBUG, "Category is not legal\n"); index = sorted_position = 0; } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(memo_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(memo_text_buffer), memo->text, -1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private_checkbox), mmemo->attrib & dlpRecAttrSecret); connect_changed_signals(CONNECT_SIGNALS); } static gboolean cb_key_pressed_left_side(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { GtkTextBuffer *text_buffer; GtkTextIter iter; if (event->keyval == GDK_Return) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); /* Position cursor at start of text */ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(next_widget)); gtk_text_buffer_get_start_iter(text_buffer, &iter); gtk_text_buffer_place_cursor(text_buffer, &iter); return TRUE; } return FALSE; } static gboolean cb_key_pressed_right_side(GtkWidget *widget, GdkEventKey *event, gpointer next_widget) { /* Switch to clist */ if ((event->keyval == GDK_Return) && (event->state & GDK_SHIFT_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Call clist_selection to handle any cleanup such as a modified record */ cb_clist_selection(clist, clist_row_selected, 0, GINT_TO_POINTER(1), NULL); gtk_widget_grab_focus(GTK_WIDGET(next_widget)); return TRUE; } /* Call external editor for memo_text */ if ((event->keyval == GDK_e) && (event->state & GDK_CONTROL_MASK)) { gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); /* Get current text and place in temporary file */ GtkTextIter start_iter; GtkTextIter end_iter; char *text_out; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(memo_text_buffer), &start_iter, &end_iter); text_out = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(memo_text_buffer), &start_iter, &end_iter, TRUE); char tmp_fname[] = "jpilot.XXXXXX"; int tmpfd = mkstemp(tmp_fname); if (tmpfd < 0) { jp_logf(JP_LOG_WARN, _("Could not get temporary file name\n")); if (text_out) free(text_out); return TRUE; } FILE *fptr = fdopen(tmpfd, "w"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file for external editor\n")); if (text_out) free(text_out); return TRUE; } fwrite(text_out, strlen(text_out), 1, fptr); fwrite("\n", 1, 1, fptr); fclose(fptr); /* Call external editor */ char command[1024]; const char *ext_editor; get_pref(PREF_EXTERNAL_EDITOR, NULL, &ext_editor); if (!ext_editor) { jp_logf(JP_LOG_INFO, "External Editor command empty\n"); if (text_out) free(text_out); return TRUE; } if ((strlen(ext_editor) + strlen(tmp_fname) + 1) > sizeof(command)) { jp_logf(JP_LOG_WARN, _("External editor command too long to execute\n")); if (text_out) free(text_out); return TRUE; } g_snprintf(command, sizeof(command), "%s %s", ext_editor, tmp_fname); /* jp_logf(JP_LOG_STDOUT|JP_LOG_FILE, _("executing command = [%s]\n"), command); */ if (system(command) == -1) { /* Read data back from temporary file into memo */ char text_in[0xFFFF]; size_t bytes_read; fptr = fopen(tmp_fname, "rb"); if (!fptr) { jp_logf(JP_LOG_WARN, _("Could not open temporary file from external editor\n")); return TRUE; } bytes_read = fread(text_in, 1, 0xFFFF, fptr); fclose(fptr); unlink(tmp_fname); text_in[--bytes_read] = '\0'; /* Strip final newline */ /* Only update text if it has changed */ if (strcmp(text_out, text_in)) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(memo_text_buffer), text_in, -1); } } if (text_out) free(text_out); return TRUE; } /* End of external editor if */ return FALSE; } static void memo_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, MemoList **memo_list, int category, int main) { int num_entries, entries_shown; size_t copy_max_length; char *last; gchar *empty_line[] = { "" }; char str2[MEMO_MAX_COLUMN_LEN]; MemoList *temp_memo; char str[MEMO_CLIST_CHAR_WIDTH+10]; int len, len1; int show_priv; long show_tooltips; jp_logf(JP_LOG_DEBUG, "memo_update_clist()\n"); free_MemoList(memo_list); /* Need to get all records including private ones for the tooltips calculation */ num_entries = get_memos2(memo_list, SORT_ASCENDING, 2, 2, 1, CATEGORY_ALL); /* Start by clearing existing entry if in main window */ if (main) { memo_clear_details(); } /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); if (main) { gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif show_priv = show_privates(GET_PRIVATES); entries_shown=0; for (temp_memo = *memo_list; temp_memo; temp_memo=temp_memo->next) { if ( ((temp_memo->mmemo.attrib & 0x0F) != category) && category != CATEGORY_ALL) { continue; } /* Do masking like Palm OS 3.5 */ if ((show_priv == MASK_PRIVATES) && (temp_memo->mmemo.attrib & dlpRecAttrSecret)) { gtk_clist_append(GTK_CLIST(clist), empty_line); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, 0, "----------------------------------------"); clear_mymemo(&temp_memo->mmemo); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_memo->mmemo)); gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); entries_shown++; continue; } /* End Masking */ /* Hide the private records if need be */ if ((show_priv != SHOW_PRIVATES) && (temp_memo->mmemo.attrib & dlpRecAttrSecret)) { continue; } /* Add entry to clist */ gtk_clist_append(GTK_CLIST(clist), empty_line); sprintf(str, "%d. ", entries_shown + 1); len1 = strlen(str); len = strlen(temp_memo->mmemo.memo.text)+1; /* ..memo clist does not display '/n' */ if ((copy_max_length = len) > MEMO_CLIST_CHAR_WIDTH) { copy_max_length = MEMO_CLIST_CHAR_WIDTH; } last = (char *)multibyte_safe_memccpy(str+len1, temp_memo->mmemo.memo.text,'\n', copy_max_length); if (last) { *(last-1)='\0'; } else { str[copy_max_length + len1]='\0'; } lstrncpy_remove_cr_lfs(str2, str, MEMO_MAX_COLUMN_LEN); gtk_clist_set_text(GTK_CLIST(clist), entries_shown, 0, str2); gtk_clist_set_row_data(GTK_CLIST(clist), entries_shown, &(temp_memo->mmemo)); /* Highlight row background depending on status */ switch (temp_memo->mmemo.rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_NEW_RED, CLIST_NEW_GREEN, CLIST_NEW_BLUE); break; case DELETED_PALM_REC: case DELETED_PC_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_DEL_RED, CLIST_DEL_GREEN, CLIST_DEL_BLUE); break; case MODIFIED_PALM_REC: set_bg_rgb_clist_row(clist, entries_shown, CLIST_MOD_RED, CLIST_MOD_GREEN, CLIST_MOD_BLUE); break; default: if (temp_memo->mmemo.attrib & dlpRecAttrSecret) { set_bg_rgb_clist_row(clist, entries_shown, CLIST_PRIVATE_RED, CLIST_PRIVATE_GREEN, CLIST_PRIVATE_BLUE); } else { gtk_clist_set_row_style(GTK_CLIST(clist), entries_shown, NULL); } } entries_shown++; } jp_logf(JP_LOG_DEBUG, "entries_shown=%d\n", entries_shown); if (main) { gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } /* If there are items in the list, highlight the selected row */ if ((main) && (entries_shown>0)) { /* First, select any record being searched for */ if (glob_find_id) { memo_find(); } /* Second, try the currently selected row */ else if (clist_row_selected < entries_shown) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } /* Third, select row 0 if nothing else is possible */ else { clist_select_row(GTK_CLIST(clist), 0, 0); } } /* Unfreeze clist after all changes */ gtk_clist_thaw(GTK_CLIST(clist)); if (tooltip_widget) { get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); if (memo_list==NULL) { set_tooltip(show_tooltips, glob_tooltips, tooltip_widget, _("0 records"), NULL); } else { sprintf(str, _("%d of %d records"), entries_shown, num_entries); set_tooltip(show_tooltips, glob_tooltips, tooltip_widget, str, NULL); } } if (main) { connect_changed_signals(CONNECT_SIGNALS); } /* return focus to clist after any big operation which requires a redraw */ gtk_widget_grab_focus(GTK_WIDGET(clist)); jp_logf(JP_LOG_DEBUG, "Leaving memo_update_clist()\n"); } static int memo_find(void) { int r, found_at; if (glob_find_id) { r = clist_find_id(clist, glob_find_id, &found_at); if (r) { clist_select_row(GTK_CLIST(clist), found_at, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), found_at)) { gtk_clist_moveto(GTK_CLIST(clist), found_at, 0, 0.5, 0.0); } } glob_find_id = 0; } return EXIT_SUCCESS; } static int memo_clist_redraw(void) { memo_update_clist(clist, category_menu1, &glob_memo_list, memo_category, TRUE); return EXIT_SUCCESS; } int memo_cycle_cat(void) { int b; int i, new_cat; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } if (memo_category == CATEGORY_ALL) { new_cat = -1; } else { new_cat = find_sort_cat_pos(memo_category); } for (i=0; i= NUM_MEMO_CAT_ITEMS) { memo_category = CATEGORY_ALL; break; } if ((sort_l[new_cat].Pcat) && (sort_l[new_cat].Pcat[0])) { memo_category = sort_l[new_cat].cat_num; break; } } clist_row_selected = 0; return EXIT_SUCCESS; } int memo_refresh(void) { int index, index2; if (glob_find_id) { memo_category = CATEGORY_ALL; } if (memo_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(memo_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } memo_update_clist(clist, category_menu1, &glob_memo_list, memo_category, TRUE); if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(memo_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return EXIT_SUCCESS; } int memo_gui_cleanup(void) { int b; b=dialog_save_changed_record(pane, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } free_MemoList(&glob_memo_list); connect_changed_signals(DISCONNECT_SIGNALS); set_pref(PREF_MEMO_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); set_pref(PREF_LAST_MEMO_CATEGORY, memo_category, NULL, TRUE); clist_clear(GTK_CLIST(clist)); return EXIT_SUCCESS; } /* Main function */ int memo_gui(GtkWidget *vbox, GtkWidget *hbox) { int i; GtkWidget *scrolled_window; GtkWidget *vbox1, *vbox2, *hbox_temp; GtkWidget *separator; long ivalue; GtkAccelGroup *accel_group; long char_set; long show_tooltips; char *cat_name; get_pref(PREF_MEMO_VERSION, &memo_version, NULL); /* Do some initialization */ clist_row_selected=0; record_changed=CLEAR_FLAG; get_memo_app_info(&memo_app_info); /* Initialize categories */ get_pref(PREF_CHAR_SET, &char_set, NULL); for (i=1; ichild)), "label_high"); #endif /* "Apply Changes" button */ CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); /* Private check box */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); private_checkbox = gtk_check_button_new_with_label(_("Private")); gtk_box_pack_end(GTK_BOX(hbox_temp), private_checkbox, FALSE, FALSE, 0); /* Right-side Category menu */ /* Clear GTK option menus before use */ for (i=0; i #include #include #include #include #include #include #include #include "config.h" #ifdef HAVE_LIBGCRYPT # include #else /* OpenSSL header files */ # include # include #endif /* Pilot-link header files */ #include #include #include /* Jpilot header files */ #include "libplugin.h" #include "utils.h" #include "i18n.h" #include "prefs.h" #include "stock_buttons.h" #include "export.h" /********************************* Constants **********************************/ #define KEYRING_CAT1 1 #define KEYRING_CAT2 2 #define NUM_KEYRING_CAT_ITEMS 16 #define PASSWD_ENTER 0 #define PASSWD_ENTER_RETRY 1 #define PASSWD_ENTER_NEW 2 #define PASSWD_LEN 100 #define CONNECT_SIGNALS 400 #define DISCONNECT_SIGNALS 401 #define PASSWD_FLAG 1 #define KEYR_CHGD_COLUMN 0 #define KEYR_NAME_COLUMN 1 #define KEYR_ACCT_COLUMN 2 /* re-ask password PLUGIN_MAX_INACTIVE_TIME seconds after * deselecting the plugin */ #define PLUGIN_MAX_INACTIVE_TIME 10 /* for password hashes */ #define SALT_SIZE 4 #define MESSAGE_BUF_SIZE 64 #define MD5_HASH_SIZE 16 #define MIN_KR_PASS (20) /* Minimum auto-generated passwd length */ #define MAX_KR_PASS (25) /* Maximum auto-generated passwd length */ struct KeyRing { char *name; /* Unencrypted */ char *account; /* Encrypted */ char *password; /* Encrypted */ char *note; /* Encrypted */ struct tm last_changed; /* Encrypted */ }; /* My wrapper to the KeyRing structure so that I can put a few more * fields in with it. */ struct MyKeyRing { PCRecType rt; unsigned int unique_id; unsigned char attrib; struct KeyRing kr; struct MyKeyRing *next; }; /******************************* Global vars **********************************/ /* This is the category that is currently being displayed */ static struct CategoryAppInfo keyr_app_info; static int keyr_category = CATEGORY_ALL; static GtkWidget *clist; static GtkWidget *entry_name; static GtkWidget *entry_account; static GtkWidget *entry_password; static GtkWidget *keyr_note; static GObject *keyr_note_buffer; /* Need 1 extra slot for All category */ static GtkWidget *keyr_cat_menu_item1[NUM_KEYRING_CAT_ITEMS+1]; static GtkWidget *keyr_cat_menu_item2[NUM_KEYRING_CAT_ITEMS]; static GtkWidget *category_menu1; static GtkWidget *category_menu2; static struct sorted_cats sort_l[NUM_KEYRING_CAT_ITEMS]; static GtkWidget *pane = NULL; static GtkWidget *scrolled_window; static GtkWidget *new_record_button; static GtkWidget *apply_record_button; static GtkWidget *add_record_button; static GtkWidget *delete_record_button; static GtkWidget *undelete_record_button; static GtkWidget *copy_record_button; static GtkWidget *cancel_record_button; static GtkWidget *date_button; static struct tm glob_date; #ifndef ENABLE_STOCK_BUTTONS static GtkAccelGroup *accel_group; #endif static int record_changed; static int clist_col_selected; static int clist_row_selected; #ifdef HAVE_LIBGCRYPT static unsigned char key[24]; #else #ifdef HEADER_NEW_DES_H static DES_cblock current_key1; static DES_cblock current_key2; static DES_key_schedule s1, s2; #else static des_cblock current_key1; static des_cblock current_key2; static des_key_schedule s1, s2; #endif #endif static time_t plugin_last_time = 0; static gboolean plugin_active = FALSE; static struct MyKeyRing *glob_keyring_list=NULL; static struct MyKeyRing *export_keyring_list=NULL; /****************************** Prototypes ************************************/ static void keyr_update_clist(GtkWidget *clist, struct MyKeyRing **keyring_list, int category, int main); static void connect_changed_signals(int con_or_dis); static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); static int keyring_find(int unique_id); static void update_date_button(GtkWidget *button, struct tm *t); /****************************** Main Code *************************************/ /* Routine to get category app info from raw buffer. * KeyRing is broken and uses a non-standard length CategoryAppInfo. * The KeyRing structure is 276 bytes whereas pilot-link uses 278. * Code below is taken from unpack_CategoryAppInfo in pilot-link but modified * for the shortened structure. */ static int keyr_plugin_unpack_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *record, int len) { int i, rec; jp_logf(JP_LOG_DEBUG, "unpack_keyring_cai_from_ai\n"); if (len < 2 + 16 * 16 + 16 + 2) return EXIT_FAILURE; rec = get_short(record); for (i = 0; i < 16; i++) { if (rec & (1 << i)) cai->renamed[i] = 1; else cai->renamed[i] = 0; } record += 2; for (i = 0; i < 16; i++) { memcpy(cai->name[i], record, 16); record += 16; } memcpy(cai->ID, record, 16); record += 16; cai->lastUniqueID = get_byte(record); return EXIT_SUCCESS; } int plugin_unpack_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *record, int len) { return keyr_plugin_unpack_cai_from_ai(cai, record, len); } /* Routine to pack CategoryAppInfo struct into non-standard size buffer */ int plugin_pack_cai_into_ai(struct CategoryAppInfo *cai, unsigned char *record, int len) { int i, rec; if (!record) { return EXIT_SUCCESS; } if (len < (2 + 16 * 16 + 16 + 2)) return EXIT_FAILURE; /* not enough room */ rec = 0; for (i = 0; i < 16; i++) { if (cai->renamed[i]) rec |= (1 << i); } set_short(record, rec); record += 2; for (i = 0; i < 16; i++) { memcpy(record, cai->name[i], 16); record += 16; } memcpy(record, cai->ID, 16); record += 16; set_byte(record, cai->lastUniqueID); record++; set_byte(record, 0); /* gapfill */ return EXIT_SUCCESS; } static int pack_KeyRing(struct KeyRing *kr, unsigned char *buf, int buf_size, int *wrote_size) { int n; int i; char empty[]=""; char last_changed[2]; unsigned short packed_date; #ifdef HAVE_LIBGCRYPT gcry_error_t err; gcry_cipher_hd_t hd; #endif jp_logf(JP_LOG_DEBUG, "KeyRing: pack_KeyRing()\n"); packed_date = (((kr->last_changed.tm_year - 4) << 9) & 0xFE00) | (((kr->last_changed.tm_mon+1) << 5) & 0x01E0) | (kr->last_changed.tm_mday & 0x001F); set_short(last_changed, packed_date); *wrote_size=0; if (!(kr->name)) kr->name=empty; if (!(kr->account)) kr->account=empty; if (!(kr->password)) kr->password=empty; if (!(kr->note)) kr->note=empty; /* 2 is for the lastChanged date */ /* 3 chars accounts for NULL string terminators */ n=strlen(kr->account) + strlen(kr->password) + strlen(kr->note) + 2 + 3; /* The encrypted portion must be a multiple of 8 */ if ((n%8)) { n=n+(8-(n%8)); } /* Now we can add in the unencrypted part */ n=n+strlen(kr->name)+1; jp_logf(JP_LOG_DEBUG, "pack n=%d\n", n); if (n+2>buf_size) { jp_logf(JP_LOG_WARN, _("KeyRing: pack_KeyRing(): buf_size too small\n")); return EXIT_FAILURE; } memset(buf, 0, n+1); *wrote_size = n; strcpy((char *)buf, kr->name); i = strlen(kr->name)+1; strcpy((char *)&buf[i], kr->account); i += strlen(kr->account)+1; strcpy((char *)&buf[i], kr->password); i += strlen(kr->password)+1; strcpy((char *)&buf[i], kr->note); i += strlen(kr->note)+1; strncpy((char *)&buf[i], last_changed, 2); #ifdef HAVE_LIBGCRYPT err = gcry_cipher_open(&hd, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_ECB, 0); if (err) jp_logf(JP_LOG_DEBUG, "gcry_cipher_open: %s\n", gpg_strerror(err)); err = gcry_cipher_setkey(hd, key, sizeof(key)); if (err) jp_logf(JP_LOG_DEBUG, "gcry_cipher_setkey: %s\n", gpg_strerror(err)); for (i = strlen(kr->name)+1; iname)+1; i0xFFFF) { /* This can be caused by a bug in libplugin.c from jpilot 0.99.1 * and before. It occurs on the last record */ jp_logf(JP_LOG_DEBUG, "KeyRing: unpack_KeyRing(): buffer too big n=%d, buf_size=%d\n", n, buf_size); jp_logf(JP_LOG_DEBUG, "KeyRing: unpack_KeyRing(): truncating\n"); rem=0xFFFF-n; rem=rem-(rem%8); } clear_text=malloc(rem+8); /* Allow for some safety NULLs */ memset(clear_text, 0, rem+8); jp_logf(JP_LOG_DEBUG, "KeyRing: unpack_KeyRing(): rem (should be multiple of 8)=%d\n", rem); jp_logf(JP_LOG_DEBUG, "KeyRing: unpack_KeyRing(): rem%%8=%d\n", rem%8); P=&buf[n]; #ifdef HAVE_LIBGCRYPT err = gcry_cipher_open(&hd, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_ECB, 0); if (err) jp_logf(JP_LOG_DEBUG, "gcry_cipher_open: %s\n", gpg_strerror(err)); err = gcry_cipher_setkey(hd, key, sizeof(key)); if (err) jp_logf(JP_LOG_DEBUG, "gcry_cipher_setkey: %s\n", gpg_strerror(err)); err = gcry_cipher_decrypt(hd, clear_text, rem, P, rem); if (err) jp_logf(JP_LOG_DEBUG, "gcry_cipher_decrypt: %s\n", gpg_strerror(err)); gcry_cipher_close(hd); #else for (i=0; iname=strdup((char *)buf); kr->account=strdup((char *)Pstr[0]); kr->password=strdup((char *)Pstr[1]); kr->note=strdup((char *)Pstr[2]); */ kr->name=jp_charset_p2newj((char *)buf,-1); kr->account=jp_charset_p2newj((char *)Pstr[0],-1); kr->password=jp_charset_p2newj((char *)Pstr[1],-1); kr->note=jp_charset_p2newj((char *)Pstr[2],-1); packed_date = get_short(Pstr[3]); kr->last_changed.tm_year = ((packed_date & 0xFE00) >> 9) + 4; kr->last_changed.tm_mon = ((packed_date & 0x01E0) >> 5) - 1; kr->last_changed.tm_mday = (packed_date & 0x001F); kr->last_changed.tm_hour = 0; kr->last_changed.tm_min = 0; kr->last_changed.tm_sec = 0; kr->last_changed.tm_isdst= -1; if (0 == packed_date) { kr->last_changed.tm_year = 0; kr->last_changed.tm_mon = 0; kr->last_changed.tm_mday = 0; } #ifdef DEBUG printf("name [%s]\n", buf); printf("Pstr0 [%s]\n", Pstr[0]); printf("Pstr1 [%s]\n", Pstr[1]); printf("Pstr2 [%s]\n", Pstr[2]); printf("last_changed %d-%d-%d\n", kr->last_changed.tm_year, kr->last_changed.tm_mon, kr->last_changed.tm_mday); #endif free(clear_text); return 1; } static int get_keyr_cat_info(struct CategoryAppInfo *cai) { unsigned char *buf; int buf_size; memset(cai, 0, sizeof(struct CategoryAppInfo)); jp_get_app_info("Keys-Gtkr", &buf, &buf_size); keyr_plugin_unpack_cai_from_ai(cai, buf, buf_size); free(buf); return EXIT_SUCCESS; } /* * Return EXIT_FAILURE if password isn't good. * Return EXIT_SUCCESS if good and global and also sets s1, and s2 set */ static int set_password_hash(unsigned char *buf, int buf_size, char *passwd) { unsigned char buffer[MESSAGE_BUF_SIZE]; unsigned char md[MD5_HASH_SIZE]; if (buf_size < MD5_HASH_SIZE) { return EXIT_FAILURE; } /* Must wipe passwd out of memory after using it */ memset(buffer, 0, MESSAGE_BUF_SIZE); memcpy(buffer, buf, SALT_SIZE); strncpy((char *)(buffer+SALT_SIZE), passwd, MESSAGE_BUF_SIZE - SALT_SIZE - 1); #ifdef HAVE_LIBGCRYPT gcry_md_hash_buffer(GCRY_MD_MD5, md, buffer, MESSAGE_BUF_SIZE); #else MD5(buffer, MESSAGE_BUF_SIZE, md); #endif /* wipe out password traces */ memset(buffer, 0, MESSAGE_BUF_SIZE); if (memcmp(md, buf+SALT_SIZE, MD5_HASH_SIZE)) { return EXIT_FAILURE; } #ifdef HAVE_LIBGCRYPT gcry_md_hash_buffer(GCRY_MD_MD5, md, passwd, strlen(passwd)); memcpy(key, md, 16); /* k1 and k2 */ memcpy(key+16, md, 8); /* k1 again */ #else MD5((unsigned char *)passwd, strlen(passwd), md); memcpy(current_key1, md, 8); memcpy(current_key2, md+8, 8); #ifdef HEADER_NEW_DES_H DES_set_key(¤t_key1, &s1); DES_set_key(¤t_key2, &s2); #else des_set_key(¤t_key1, s1); des_set_key(¤t_key2, s2); #endif #endif return EXIT_SUCCESS; } /* Start password change code */ /* * Code for this is written, just need to add another jpilot API for * cancelling a sync if the passwords don't match. */ /* End password change code */ /* Utility function to read keyring data file and filter out unwanted records * * Returns the number of records read */ static int get_keyring(struct MyKeyRing **mkr_list, int category) { GList *records=NULL; GList *temp_list; buf_rec *br; struct MyKeyRing *mkr; int rec_count; long keep_modified, keep_deleted; jp_logf(JP_LOG_DEBUG, "get_keyring()\n"); *mkr_list = NULL; rec_count = 0; /* Read raw database of records */ if (jp_read_DB_files("Keys-Gtkr", &records) == -1) return 0; /* Get preferences used for filtering */ get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); /* Sort through list of records masking out unwanted ones */ for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } /* record 0 is the hash-key record */ if (br->attrib & dlpRecAttrSecret) { continue; } /* Filter out deleted or deleted/modified records */ if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } /* Filter by category */ if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { continue; } mkr = malloc(sizeof(struct MyKeyRing)); mkr->next=NULL; mkr->attrib = br->attrib; mkr->unique_id = br->unique_id; mkr->rt = br->rt; if (unpack_KeyRing(&(mkr->kr), br->buf, br->size) <=0) { free(mkr); continue; } /* prepend to list */ mkr->next=*mkr_list; *mkr_list=mkr; rec_count++; } jp_free_DB_records(&records); jp_logf(JP_LOG_DEBUG, "Leaving get_keyring()\n"); return rec_count; } static void set_new_button_to(int new_state) { jp_logf(JP_LOG_DEBUG, "set_new_button_to new %d old %d\n", new_state, record_changed); if (record_changed==new_state) { return; } switch (new_state) { case MODIFY_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(apply_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case NEW_FLAG: gtk_widget_show(cancel_record_button); gtk_widget_show(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(copy_record_button); gtk_widget_hide(delete_record_button); gtk_widget_hide(new_record_button); gtk_widget_hide(undelete_record_button); break; case CLEAR_FLAG: gtk_widget_show(delete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(undelete_record_button); break; case UNDELETE_FLAG: gtk_widget_show(undelete_record_button); gtk_widget_show(copy_record_button); gtk_widget_show(new_record_button); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(cancel_record_button); gtk_widget_hide(delete_record_button); break; default: return; } record_changed=new_state; } /* Find position of category in sorted category array * via its assigned category number */ static int find_sort_cat_pos(int cat) { int i; for (i=0; idata; mkr2 = row2->data; keyr1 = &(mkr1->kr); keyr2 = &(mkr2->kr); time1 = mktime(&(keyr1->last_changed)); time2 = mktime(&(keyr2->last_changed)); return(time1 - time2); } /* Function is used to sort clist case insensitively */ static gint GtkClistKeyrCompareNocase (GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2) { GtkCListRow *row1, *row2; gchar *str1, *str2; row1 = (GtkCListRow *) ptr1; row2 = (GtkCListRow *) ptr2; str1 = GTK_CELL_TEXT(row1->cell[clist->sort_column])->text; str2 = GTK_CELL_TEXT(row2->cell[clist->sort_column])->text; return g_ascii_strcasecmp(str1, str2); } static void cb_clist_click_column(GtkWidget *clist, int column) { struct MyKeyRing *mkr; unsigned int unique_id; /* Return to the selected record after sorting. * This is critically important because sorting without updating the * global variable clist_row_selected can cause data loss */ mkr = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mkr < (struct MyKeyRing *)CLIST_MIN_DATA) { unique_id = 0; } else { unique_id = mkr->unique_id; } /* Clicking on same column toggles ascending/descending sort */ if (clist_col_selected == column) { if (GTK_CLIST(clist)->sort_type == GTK_SORT_ASCENDING) { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_DESCENDING); } else { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } } else /* Always sort in ascending order when changing sort column */ { gtk_clist_set_sort_type(GTK_CLIST (clist), GTK_SORT_ASCENDING); } clist_col_selected = column; gtk_clist_set_sort_column(GTK_CLIST(clist), column); switch (column) { case KEYR_CHGD_COLUMN: // Last Changed column gtk_clist_set_compare_func(GTK_CLIST(clist),GtkClistKeyrCompareDates); break; case KEYR_NAME_COLUMN: gtk_clist_set_compare_func(GTK_CLIST(clist),GtkClistKeyrCompareNocase); break; default: // All other columns can use GTK default sort function gtk_clist_set_compare_func(GTK_CLIST(clist),NULL); break; } gtk_clist_sort(GTK_CLIST(clist)); /* return to previously selected record */ keyring_find(unique_id); } static void cb_record_changed(GtkWidget *widget, gpointer data) { int flag; struct tm *now; time_t ltime; jp_logf(JP_LOG_DEBUG, "cb_record_changed\n"); flag = GPOINTER_TO_INT(data); if (record_changed==CLEAR_FLAG) { connect_changed_signals(DISCONNECT_SIGNALS); if ((GTK_CLIST(clist)->rows > 0)) { set_new_button_to(MODIFY_FLAG); /* Update the lastChanged field when password is modified */ if (flag == PASSWD_FLAG) { time(<ime); now = localtime(<ime); memcpy(&glob_date, now, sizeof(struct tm)); update_date_button(date_button, &glob_date); } } else { set_new_button_to(NEW_FLAG); } } else if (record_changed==UNDELETE_FLAG) { jp_logf(JP_LOG_INFO|JP_LOG_GUI, _("This record is deleted.\n" "Undelete it or copy it to make changes.\n")); } } static void connect_changed_signals(int con_or_dis) { int i; static int connected=0; /* CONNECT */ if ((con_or_dis==CONNECT_SIGNALS) && (!connected)) { jp_logf(JP_LOG_DEBUG, "KeyRing: connect_changed_signals\n"); connected=1; for (i=0; ikr.name) free(mkr->kr.name); if (mkr->kr.account) free(mkr->kr.account); if (mkr->kr.password) free(mkr->kr.password); if (mkr->kr.note) free(mkr->kr.note); next_mkr = mkr->next; free(mkr); } *PPmkr=NULL; } /* This function gets called when the "delete" button is pressed */ static void cb_delete_keyring(GtkWidget *widget, gpointer data) { struct MyKeyRing *mkr; struct KeyRing kr; int new_size; char buf[0xFFFF]; buf_rec br; int flag; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_delete_keyring\n"); mkr = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (!mkr) { return; } /* The record that we want to delete should be written to the pc file * so that it can be deleted at sync time. We need the original record * so that if it has changed on the pilot we can warn the user that * the record has changed on the pilot. */ kr = mkr->kr; kr.name = strdup(kr.name); jp_charset_j2p(kr.name, strlen(kr.name)+1); kr.account = strdup(kr.account); jp_charset_j2p(kr.account, strlen(kr.account)+1); kr.password = strdup(kr.password); jp_charset_j2p(kr.password, strlen(kr.password)+1); kr.note = strdup(kr.note); jp_charset_j2p(kr.note, strlen(kr.note)+1); pack_KeyRing(&kr, (unsigned char *)buf, 0xFFFF, &new_size); free(kr.name); free(kr.account); free(kr.password); free(kr.note); br.rt = mkr->rt; br.unique_id = mkr->unique_id; br.attrib = mkr->attrib; br.buf = buf; br.size = new_size; flag = GPOINTER_TO_INT(data); if ((flag==MODIFY_FLAG) || (flag==DELETE_FLAG)) { jp_delete_record("Keys-Gtkr", &br, flag); if (flag==DELETE_FLAG) { /* when we redraw we want to go to the line above the deleted one */ if (clist_row_selected>0) { clist_row_selected--; } } } if (flag == DELETE_FLAG) { keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); } } static void cb_undelete_keyring(GtkWidget *widget, gpointer data) { struct MyKeyRing *mkr; buf_rec br; char buf[0xFFFF]; int new_size; int flag; mkr = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (mkr==NULL) { return; } jp_logf(JP_LOG_DEBUG, "mkr->unique_id = %d\n",mkr->unique_id); jp_logf(JP_LOG_DEBUG, "mkr->rt = %d\n",mkr->rt); pack_KeyRing(&(mkr->kr), (unsigned char *)buf, 0xFFFF, &new_size); br.rt = mkr->rt; br.unique_id = mkr->unique_id; br.attrib = mkr->attrib; br.buf = buf; br.size = new_size; flag = GPOINTER_TO_INT(data); if (flag==UNDELETE_FLAG) { if (mkr->rt == DELETED_PALM_REC || mkr->rt == DELETED_PC_REC) { jp_undelete_record("Keys-Gtkr", &br, flag); } /* Possible later addition of undelete for modified records else if (mmemo->rt == MODIFIED_PALM_REC) { cb_add_new_record(widget, GINT_TO_POINTER(COPY_FLAG)); } */ } keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); } static void cb_cancel(GtkWidget *widget, gpointer data) { set_new_button_to(CLEAR_FLAG); keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); } static void update_date_button(GtkWidget *button, struct tm *t) { const char *short_date; char str[255]; get_pref(PREF_SHORTDATE, NULL, &short_date); strftime(str, sizeof(str), short_date, t); gtk_label_set_text(GTK_LABEL(GTK_BIN(button)->child), str); } /* * This is called when the "New" button is pressed. * It clears out all the detail fields on the right-hand side. */ static int keyr_clear_details(void) { struct tm *now; time_t ltime; int new_cat; int sorted_position; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_clear\n"); connect_changed_signals(DISCONNECT_SIGNALS); /* Put the current time in the lastChanged part of the record */ time(<ime); now = localtime(<ime); memcpy(&glob_date, now, sizeof(struct tm)); update_date_button(date_button, &glob_date); gtk_entry_set_text(GTK_ENTRY(entry_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_account), ""); gtk_entry_set_text(GTK_ENTRY(entry_password), ""); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(keyr_note_buffer), "", -1); if (keyr_category==CATEGORY_ALL) { new_cat = 0; } else { new_cat = keyr_category; } sorted_position = find_sort_cat_pos(new_cat); if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(keyr_cat_menu_item2[sorted_position]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); } set_new_button_to(CLEAR_FLAG); connect_changed_signals(CONNECT_SIGNALS); return EXIT_SUCCESS; } /* * This function is called when the user presses the "Add" button. * We collect all of the data from the GUI and pack it into a keyring * record and then write it out. kr->name=strdup((char *)buf); kr->account=strdup((char *)Pstr[0]); kr->password=strdup((char *)Pstr[1]); kr->note=strdup((char *)Pstr[2]); */ static void cb_add_new_record(GtkWidget *widget, gpointer data) { struct KeyRing kr; buf_rec br; unsigned char buf[0x10000]; int new_size; int flag; struct MyKeyRing *mkr; GtkTextIter start_iter; GtkTextIter end_iter; int i; unsigned int unique_id; mkr = NULL; unique_id=0; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_add_new_record\n"); flag=GPOINTER_TO_INT(data); if (flag==CLEAR_FLAG) { keyr_clear_details(); connect_changed_signals(DISCONNECT_SIGNALS); set_new_button_to(NEW_FLAG); gtk_widget_grab_focus(GTK_WIDGET(entry_name)); return; } if ((flag!=NEW_FLAG) && (flag!=MODIFY_FLAG) && (flag!=COPY_FLAG)) { return; } kr.name = (char *)gtk_entry_get_text(GTK_ENTRY(entry_name)); kr.account = (char *)gtk_entry_get_text(GTK_ENTRY(entry_account)); kr.password = (char *)gtk_entry_get_text(GTK_ENTRY(entry_password)); /* Put the glob_date in the lastChanged part of the record */ memcpy(&(kr.last_changed), &glob_date, sizeof(struct tm)); gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(keyr_note_buffer),&start_iter,&end_iter); kr.note = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(keyr_note_buffer),&start_iter,&end_iter,TRUE); kr.name = strdup(kr.name); jp_charset_j2p(kr.name, strlen(kr.name)+1); kr.account = strdup(kr.account); jp_charset_j2p(kr.account, strlen(kr.account)+1); kr.password = strdup(kr.password); jp_charset_j2p(kr.password, strlen(kr.password)+1); jp_charset_j2p(kr.note, strlen(kr.note)+1); pack_KeyRing(&kr, buf, 0xFFFF, &new_size); /* free allocated memory now that kr structure is packed into buf */ if (kr.name) free(kr.name); if (kr.account) free(kr.account); if (kr.password) free(kr.password); if (kr.note) free(kr.note); /* Any attributes go here. Usually just the category */ /* grab category from menu */ for (i=0; iactive) { br.attrib = sort_l[i].cat_num; break; } } } jp_logf(JP_LOG_DEBUG, "category is %d\n", br.attrib); br.buf = buf; br.size = new_size; set_new_button_to(CLEAR_FLAG); /* Keep unique ID intact */ if (flag==MODIFY_FLAG) { mkr = gtk_clist_get_row_data(GTK_CLIST(clist), clist_row_selected); if (!mkr) { return; } unique_id = mkr->unique_id; if ((mkr->rt==DELETED_PALM_REC) || (mkr->rt==DELETED_PC_REC) || (mkr->rt==MODIFIED_PALM_REC)) { jp_logf(JP_LOG_INFO, _("You can't modify a record that is deleted\n")); return; } } /* Keep unique ID intact */ if (flag==MODIFY_FLAG) { cb_delete_keyring(NULL, data); if ((mkr->rt==PALM_REC) || (mkr->rt==REPLACEMENT_PALM_REC)) { br.unique_id = unique_id; br.rt = REPLACEMENT_PALM_REC; } else { br.unique_id = 0; br.rt = NEW_PC_REC; } } else { br.unique_id = 0; br.rt = NEW_PC_REC; } /* Write out the record. It goes to the .pc3 file until it gets synced */ jp_pc_write("Keys-Gtkr", &br); keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); keyring_find(br.unique_id); return; } static void cb_date_button(GtkWidget *widget, gpointer data) { long fdow; int ret; struct tm temp_glob_date = glob_date; get_pref(PREF_FDOW, &fdow, NULL); /* date is not set */ if (glob_date.tm_mon < 0) { /* use today date */ time_t t = time(NULL); glob_date = *localtime(&t); } ret = jp_cal_dialog(GTK_WINDOW(gtk_widget_get_toplevel(widget)), "", fdow, &(glob_date.tm_mon), &(glob_date.tm_mday), &(glob_date.tm_year)); if (ret == CAL_DONE) update_date_button(date_button, &glob_date); else glob_date = temp_glob_date; } /* First pass at password generating code */ static void cb_gen_password(GtkWidget *widget, gpointer data) { GtkWidget *entry; int i, length, alpha_size, numer_size; char alpha[] = "abcdfghjklmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char numer[] = "1234567890"; char passwd[MAX_KR_PASS + 1]; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_gen_password\n"); entry=data; srand(time(NULL) * getpid()); alpha_size = strlen(alpha); numer_size = strlen(numer); length = rand() % (MAX_KR_PASS - MIN_KR_PASS) + MIN_KR_PASS; for (i = 0; i < length; i++) { if ((i % 2) == 0) { passwd[i] = alpha[rand() % alpha_size]; } else { passwd[i] = numer[rand() % numer_size]; } } passwd[length] = '\0'; gtk_entry_set_text(GTK_ENTRY(entry), passwd); return; } /* * This function just adds the record to the clist on the left side of * the screen. */ static int display_record(struct MyKeyRing *mkr, int row) { char temp[8]; const char *svalue; char str[50]; jp_logf(JP_LOG_DEBUG, "KeyRing: display_record\n"); /* Highlight row background depending on status */ switch (mkr->rt) { case NEW_PC_REC: case REPLACEMENT_PALM_REC: set_bg_rgb_clist_row(clist, row, CLIST_NEW_RED, CLIST_NEW_GREEN, CLIST_NEW_BLUE); break; case DELETED_PALM_REC: case DELETED_PC_REC: set_bg_rgb_clist_row(clist, row, CLIST_DEL_RED, CLIST_DEL_GREEN, CLIST_DEL_BLUE); break; case MODIFIED_PALM_REC: set_bg_rgb_clist_row(clist, row, CLIST_MOD_RED, CLIST_MOD_GREEN, CLIST_MOD_BLUE); break; default: gtk_clist_set_row_style(GTK_CLIST(clist), row, NULL); } gtk_clist_set_row_data(GTK_CLIST(clist), row, mkr); if (mkr->kr.last_changed.tm_year==0) { sprintf(str, _("No date")); gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_CHGD_COLUMN, str); } else { get_pref(PREF_SHORTDATE, NULL, &svalue); strftime(str, sizeof(str), svalue, &(mkr->kr.last_changed)); gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_CHGD_COLUMN, str); } if ( (!(mkr->kr.name)) || (mkr->kr.name[0]=='\0') ) { sprintf(temp, "#%03d", row); gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_NAME_COLUMN, temp); } else { gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_NAME_COLUMN, mkr->kr.name); } if ( (!(mkr->kr.account)) || (mkr->kr.account[0]=='\0') ) { gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_ACCT_COLUMN, ""); } else { gtk_clist_set_text(GTK_CLIST(clist), row, KEYR_ACCT_COLUMN, mkr->kr.account); } return EXIT_SUCCESS; } static int display_record_export(GtkWidget *clist, struct MyKeyRing *mkr, int row) { char temp[8]; jp_logf(JP_LOG_DEBUG, "KeyRing: display_record_export\n"); gtk_clist_set_row_data(GTK_CLIST(clist), row, mkr); if ( (!(mkr->kr.name)) || (mkr->kr.name[0]=='\0') ) { sprintf(temp, "#%03d", row); gtk_clist_set_text(GTK_CLIST(clist), row, 0, temp); } else { gtk_clist_set_text(GTK_CLIST(clist), row, 0, mkr->kr.name); } return EXIT_SUCCESS; } /* * This function lists the records in the clist on the left side of * the screen. */ static void keyr_update_clist(GtkWidget *clist, struct MyKeyRing **keyring_list, int category, int main) { int entries_shown; struct MyKeyRing *temp_list; gchar *empty_line[] = { "", "", "" }; jp_logf(JP_LOG_DEBUG, "KeyRing: keyr_update_clist\n"); free_mykeyring_list(keyring_list); /* This function takes care of reading the database for us */ get_keyring(keyring_list, category); if (main) { keyr_clear_details(); } /* Freeze clist to prevent flicker during updating */ gtk_clist_freeze(GTK_CLIST(clist)); if (main) { gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); } clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif entries_shown=0; for (temp_list = *keyring_list; temp_list; temp_list = temp_list->next) { gtk_clist_append(GTK_CLIST(clist), empty_line); if (main) display_record(temp_list, entries_shown); else display_record_export(clist, temp_list, entries_shown); entries_shown++; } /* Sort the clist */ gtk_clist_sort(GTK_CLIST(clist)); if (main) gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); /* If there are items in the list, highlight the selected row */ if ((main) && (entries_shown>0)) { /* Select the existing requested row, or row 0 if that is impossible */ if (clist_row_selected <= entries_shown) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), clist_row_selected)) { gtk_clist_moveto(GTK_CLIST(clist), clist_row_selected, 0, 0.5, 0.0); } } else { clist_select_row(GTK_CLIST(clist), 0, 0); } } /* Unfreeze clist after all changes */ gtk_clist_thaw(GTK_CLIST(clist)); /* return focus to clist after any big operation which requires a redraw */ gtk_widget_grab_focus(GTK_WIDGET(clist)); jp_logf(JP_LOG_DEBUG, "KeyRing: leave keyr_update_clist\n"); } /* * This function just displays a record on the right hand side of the screen * (the details) */ static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { struct MyKeyRing *mkr; int index, sorted_position; int b; unsigned int unique_id = 0; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_clist_selection\n"); if ((record_changed==MODIFY_FLAG) || (record_changed==NEW_FLAG)) { if (clist_row_selected == row) { return; } mkr = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mkr!=NULL) { unique_id = mkr->unique_id; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ if (clist_row_selected >=0) { clist_select_row(GTK_CLIST(clist), clist_row_selected, 0); } else { clist_row_selected = 0; clist_select_row(GTK_CLIST(clist), 0, 0); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } set_new_button_to(CLEAR_FLAG); if (unique_id) { keyring_find(unique_id); } else { clist_select_row(GTK_CLIST(clist), row, column); } return; } clist_row_selected = row; mkr = gtk_clist_get_row_data(GTK_CLIST(clist), row); if (mkr==NULL) { return; } if (mkr->rt == DELETED_PALM_REC || (mkr->rt == DELETED_PC_REC)) /* Possible later addition of undelete code for modified deleted records || mkr->rt == MODIFIED_PALM_REC */ { set_new_button_to(UNDELETE_FLAG); } else { set_new_button_to(CLEAR_FLAG); } connect_changed_signals(DISCONNECT_SIGNALS); index = mkr->attrib & 0x0F; sorted_position = find_sort_cat_pos(index); if (keyr_cat_menu_item2[sorted_position]==NULL) { /* Illegal category */ jp_logf(JP_LOG_DEBUG, "Category is not legal\n"); sorted_position = 0; } if (sorted_position<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(keyr_cat_menu_item2[sorted_position]), TRUE); } gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu2), find_menu_cat_pos(sorted_position)); if (mkr->kr.name) { gtk_entry_set_text(GTK_ENTRY(entry_name), mkr->kr.name); } else { gtk_entry_set_text(GTK_ENTRY(entry_name), ""); } if (mkr->kr.account) { gtk_entry_set_text(GTK_ENTRY(entry_account), mkr->kr.account); } else { gtk_entry_set_text(GTK_ENTRY(entry_account), ""); } if (mkr->kr.password) { gtk_entry_set_text(GTK_ENTRY(entry_password), mkr->kr.password); } else { gtk_entry_set_text(GTK_ENTRY(entry_password), ""); } memcpy(&glob_date, &(mkr->kr.last_changed), sizeof(struct tm)); update_date_button(date_button, &(mkr->kr.last_changed)); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(keyr_note_buffer), "", -1); if (mkr->kr.note) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(keyr_note_buffer), mkr->kr.note, -1); } connect_changed_signals(CONNECT_SIGNALS); jp_logf(JP_LOG_DEBUG, "KeyRing: leaving cb_clist_selection\n"); } static void cb_category(GtkWidget *item, int selection) { int b; jp_logf(JP_LOG_DEBUG, "KeyRing: cb_category\n"); if ((GTK_CHECK_MENU_ITEM(item))->active) { if (keyr_category == selection) { return; } b=dialog_save_changed_record_with_cancel(pane, record_changed); if (b==DIALOG_SAID_1) { /* Cancel */ int index, index2; if (keyr_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index=find_sort_cat_pos(keyr_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(keyr_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } return; } if (b==DIALOG_SAID_3) { /* Save */ cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } keyr_category = selection; clist_row_selected = 0; keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); } } /***** PASSWORD GUI *****/ /* * Start of Dialog window code */ struct dialog_data { GtkWidget *entry; int button_hit; char text[PASSWD_LEN+2]; }; static void cb_dialog_button(GtkWidget *widget, gpointer data) { struct dialog_data *Pdata; GtkWidget *w; /* Find the main window from some widget */ w = GTK_WIDGET(gtk_widget_get_toplevel(widget)); if (GTK_IS_WINDOW(w)) { Pdata = gtk_object_get_data(GTK_OBJECT(w), "dialog_data"); if (Pdata) { Pdata->button_hit = GPOINTER_TO_INT(data); } gtk_widget_destroy(GTK_WIDGET(w)); } } static gboolean cb_destroy_dialog(GtkWidget *widget) { struct dialog_data *Pdata; const char *entry; Pdata = gtk_object_get_data(GTK_OBJECT(widget), "dialog_data"); if (!Pdata) { return TRUE; } entry = gtk_entry_get_text(GTK_ENTRY(Pdata->entry)); if (entry) { strncpy(Pdata->text, entry, PASSWD_LEN); Pdata->text[PASSWD_LEN]='\0'; /* Clear entry field */ gtk_entry_set_text(GTK_ENTRY(Pdata->entry), ""); } gtk_main_quit(); return TRUE; } /* * returns 2 if OK was pressed, 1 if cancel was hit */ static int dialog_password(GtkWindow *main_window, char *ascii_password, int reason) { GtkWidget *button, *label; GtkWidget *hbox1, *vbox1; GtkWidget *dialog; GtkWidget *entry; struct dialog_data Pdata; int ret; if (!ascii_password) { return EXIT_FAILURE; } ascii_password[0]='\0'; ret = 2; dialog = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", "KeyRing", NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); gtk_signal_connect(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(cb_destroy_dialog), dialog); gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); if (main_window) { if (GTK_IS_WINDOW(main_window)) { gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(main_window)); } } hbox1 = gtk_hbox_new(FALSE, 2); gtk_container_add(GTK_CONTAINER(dialog), hbox1); gtk_box_pack_start(GTK_BOX(hbox1), gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG), FALSE, FALSE, 2); vbox1 = gtk_vbox_new(FALSE, 2); gtk_container_set_border_width(GTK_CONTAINER(vbox1), 5); gtk_container_add(GTK_CONTAINER(hbox1), vbox1); hbox1 = gtk_hbox_new(TRUE, 2); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); /* Label */ if (reason==PASSWD_ENTER_RETRY) { label = gtk_label_new(_("Incorrect, Reenter KeyRing Password")); } else if (reason==PASSWD_ENTER_NEW) { label = gtk_label_new(_("Enter a NEW KeyRing Password")); } else { label = gtk_label_new(_("Enter KeyRing Password")); } gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2); entry = gtk_entry_new_with_max_length(32); gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 1); /* Button Box */ hbox1 = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox1), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox1), 6); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 5); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 2); /* Buttons */ button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_1)); gtk_box_pack_start(GTK_BOX(hbox1), button, FALSE, FALSE, 1); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_dialog_button), GINT_TO_POINTER(DIALOG_SAID_2)); gtk_box_pack_start(GTK_BOX(hbox1), button, FALSE, FALSE, 1); /* Set the default button pressed to CANCEL */ Pdata.button_hit = DIALOG_SAID_1; Pdata.entry=entry; Pdata.text[0]='\0'; gtk_object_set_data(GTK_OBJECT(dialog), "dialog_data", &Pdata); gtk_widget_grab_focus(GTK_WIDGET(entry)); gtk_widget_show_all(dialog); gtk_main(); if (Pdata.button_hit==DIALOG_SAID_1) { ret = 1; } if (Pdata.button_hit==DIALOG_SAID_2) { ret = 2; } strncpy(ascii_password, Pdata.text, PASSWD_LEN); memset(Pdata.text, 0, PASSWD_LEN); return ret; } /***** End Password GUI *****/ static int check_for_db(void) { char file[]="Keys-Gtkr.pdb"; char full_name[1024]; struct stat buf; jp_get_home_file_name(file, full_name, sizeof(full_name)); if (stat(full_name, &buf)) { jp_logf(JP_LOG_FATAL, _("KeyRing: file %s not found.\n"), full_name); jp_logf(JP_LOG_FATAL, _("KeyRing: Try Syncing.\n"), full_name); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* * returns EXIT_SUCCESS on password correct, * EXIT_FAILURE on password incorrect, * <0 on error */ static int verify_pasword(char *ascii_password) { GList *records; GList *temp_list; buf_rec *br; int password_not_correct; jp_logf(JP_LOG_DEBUG, "KeyRing: verify_pasword\n"); if (check_for_db()) { return EXIT_FAILURE; } /* This function takes care of reading the Database for us */ records=NULL; if (jp_read_DB_files("Keys-Gtkr", &records) == -1) return EXIT_SUCCESS; password_not_correct = 1; /* Find special record marked as password */ for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ((br->rt == DELETED_PALM_REC) || (br->rt == MODIFIED_PALM_REC)) { continue; } /* This record should be record 0 and is the hash-key record */ if (br->attrib & dlpRecAttrSecret) { password_not_correct = set_password_hash(br->buf, br->size, ascii_password); break; } } jp_free_DB_records(&records); if (password_not_correct) return EXIT_FAILURE; else return EXIT_SUCCESS; } #define PLUGIN_MAJOR 1 #define PLUGIN_MINOR 1 /* This is a mandatory plugin function. */ void plugin_version(int *major_version, int *minor_version) { *major_version = PLUGIN_MAJOR; *minor_version = PLUGIN_MINOR; } static int static_plugin_get_name(char *name, int len) { jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_get_name\n"); snprintf(name, len, "KeyRing %d.%d", PLUGIN_MAJOR, PLUGIN_MINOR); return EXIT_SUCCESS; } /* This is a mandatory plugin function. */ int plugin_get_name(char *name, int len) { return static_plugin_get_name(name, len); } /* * This is an optional plugin function. * This is the name that will show up in the plugins menu in J-Pilot. */ int plugin_get_menu_name(char *name, int len) { strncpy(name, _("KeyRing"), len); return EXIT_SUCCESS; } /* * This is an optional plugin function. * This is the name that will show up in the plugins help menu in J-Pilot. * If this function is used then plugin_help must be also. */ int plugin_get_help_name(char *name, int len) { g_snprintf(name, len, _("About %s"), _("KeyRing")); return EXIT_SUCCESS; } /* * This is an optional plugin function. * This is the palm database that will automatically be synced. */ int plugin_get_db_name(char *name, int len) { strncpy(name, "Keys-Gtkr", len); return EXIT_SUCCESS; } /* * This is a plugin callback function which provides information * to the user about the plugin. */ int plugin_help(char **text, int *width, int *height) { /* We could also pass back *text=NULL * and implement whatever we wanted to here. */ char plugin_name[200]; static_plugin_get_name(plugin_name, sizeof(plugin_name)); *text = g_strdup_printf( /*-------------------------------------------*/ _("%s\n" "\n" "KeyRing plugin for J-Pilot was written by\n" "Judd Montgomery (c) 2001.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "KeyRing is a free PalmOS program for storing\n" "passwords and other information in encrypted form\n" "http://gnukeyring.sourceforge.net" ), plugin_name ); *height = 0; *width = 0; return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed when J-Pilot starts up. * base_dir is where J-Pilot is compiled to be installed at (e.g. /usr/local/) */ int plugin_startup(jp_startup_info *info) { jp_init(); jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_startup\n"); if (info) { if (info->base_dir) { jp_logf(JP_LOG_DEBUG, "KeyRing: base_dir = [%s]\n", info->base_dir); } } return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed before a sync occurs. * Any sync preperation can be done here. */ int plugin_pre_sync(void) { jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_pre_sync\n"); return EXIT_SUCCESS; } /* * This is a plugin callback function that is executed during a sync. * Notice that I don't need to sync the KeyRing application. Since I used * the plugin_get_db_name call to tell J-Pilot what to sync for me. It will * be done automatically. */ int plugin_sync(int sd) { jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_sync\n"); return EXIT_SUCCESS; } /* * This is a plugin callback function called after a sync. */ int plugin_post_sync(void) { jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_post_sync\n"); return EXIT_SUCCESS; } static int add_search_result(const char *line, int unique_id, struct search_result **sr) { struct search_result *new_sr; jp_logf(JP_LOG_DEBUG, "KeyRing: add_search_result for [%s]\n", line); new_sr=malloc(sizeof(struct search_result)); if (!new_sr) { return EXIT_FAILURE; } new_sr->unique_id=unique_id; new_sr->line=strdup(line); new_sr->next = *sr; *sr = new_sr; return EXIT_SUCCESS; } /* * This function is called when the user does a search. It should return * records which match the search string. */ int plugin_search(const char *search_string, int case_sense, struct search_result **sr) { struct MyKeyRing *mkr_list; struct MyKeyRing *temp_list; struct MyKeyRing mkr; int num, count; char *line; jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_search\n"); *sr=NULL; mkr_list=NULL; if (!plugin_active) { return 0; } /* This function takes care of reading the Database for us */ num = get_keyring(&mkr_list, CATEGORY_ALL); if (-1 == num) return 0; count = 0; /* Search through returned records */ for (temp_list = mkr_list; temp_list; temp_list = temp_list->next) { mkr = *temp_list; line = NULL; /* find in record name */ if (jp_strstr(mkr.kr.name, search_string, case_sense)) line = mkr.kr.name; /* find in record account */ if (jp_strstr(mkr.kr.account, search_string, case_sense)) line = mkr.kr.account; /* find in record password */ if (jp_strstr(mkr.kr.password, search_string, case_sense)) line = mkr.kr.password; /* find in record note */ if (jp_strstr(mkr.kr.note, search_string, case_sense)) line = mkr.kr.note; if (line) { /* Add it to our result list */ jp_logf(JP_LOG_DEBUG, "KeyRing: calling add_search_result\n"); add_search_result(line, mkr.unique_id, sr); jp_logf(JP_LOG_DEBUG, "KeyRing: back from add_search_result\n"); count++; } } free_mykeyring_list(&mkr_list); return count; } static int keyring_find(int unique_id) { int r, found_at; jp_logf(JP_LOG_DEBUG, "KeyRing: keyring_find\n"); r = clist_find_id(clist, unique_id, &found_at); if (r) { clist_select_row(GTK_CLIST(clist), found_at, 0); if (!gtk_clist_row_is_visible(GTK_CLIST(clist), found_at)) { gtk_clist_moveto(GTK_CLIST(clist), found_at, 0, 0.5, 0.0); } } return EXIT_SUCCESS; } static void cb_keyr_update_clist(GtkWidget *clist, int category) { keyr_update_clist(clist, &export_keyring_list, category, FALSE); } static void cb_keyr_export_done(GtkWidget *widget, const char *filename) { free_mykeyring_list(&export_keyring_list); set_pref(PREF_KEYR_EXPORT_FILENAME, 0, filename, TRUE); } static void cb_keyr_export_ok(GtkWidget *export_window, GtkWidget *clist, int type, const char *filename) { struct MyKeyRing *mkr; GList *list, *temp_list; FILE *out; struct stat statb; int i, r; const char *short_date; time_t ltime; struct tm *now; char *button_text[]={N_("OK")}; char *button_overwrite_text[]={N_("No"), N_("Yes")}; char *button_keepassx_text[]={N_("Cancel"), N_("Overwrite"), N_("Append")}; enum { NA=0, cancel=DIALOG_SAID_1, overwrite=DIALOG_SAID_2, append=DIALOG_SAID_3 } keepassx_answer = NA; char text[1024]; char str1[256], str2[256]; char date_string[1024]; char pref_time[40]; char csv_text[65550]; long char_set; char *utf; int cat; /* Open file for export, including corner cases where file exists or * can't be opened */ if (!stat(filename, &statb)) { if (S_ISDIR(statb.st_mode)) { g_snprintf(text, sizeof(text), _("%s is a directory"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } if (type == EXPORT_TYPE_KEEPASSX) { g_snprintf(text, sizeof(text), _("KeePassX XML File exists, Do you want to")); keepassx_answer = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_ERROR, text, 3, button_keepassx_text); if (keepassx_answer==cancel) { return; } } else { g_snprintf(text, sizeof(text), _("Do you want to overwrite file %s?"), filename); r = dialog_generic(GTK_WINDOW(export_window), _("Overwrite File?"), DIALOG_ERROR, text, 2, button_overwrite_text); if (r!=DIALOG_SAID_2) { return; } } } if ((keepassx_answer==append)) { out = fopen(filename, "r+"); } else { out = fopen(filename, "w"); } if (!out) { g_snprintf(text,sizeof(text), _("Error opening file: %s"), filename); dialog_generic(GTK_WINDOW(export_window), _("Error Opening File"), DIALOG_ERROR, text, 1, button_text); return; } /* Write a header for TEXT file */ if (type == EXPORT_TYPE_TEXT) { get_pref(PREF_SHORTDATE, NULL, &short_date); get_pref_time_no_secs(pref_time); time(<ime); now = localtime(<ime); strftime(str1, sizeof(str1), short_date, now); strftime(str2, sizeof(str2), pref_time, now); g_snprintf(date_string, sizeof(date_string), "%s %s", str1, str2); fprintf(out, _("Keys exported from %s %s on %s\n\n"), PN,VERSION,date_string); } /* Write a header to the CSV file */ if (type == EXPORT_TYPE_CSV) { fprintf(out, "\"Category\",\"Name\",\"Account\",\"Password\",\"Note\"\n"); } /* Write a header to the B-Folders CSV file */ if (type == EXPORT_TYPE_BFOLDERS) { fprintf(out, "Login passwords:\n"); fprintf(out, "Title,Location,Usename,Password, " "\"Custom Label 1\",\"Custom Value 1\",\"Custom Label 2\",\"Custom Value 2\"," "\"Custom Label 3\",\"Custom Value 3\",\"Custom Label 4\",\"Custom Value 4\"," "\"Custom Label 5\",\"Custom Value 5\", Note,Folder\n"); } if (type == EXPORT_TYPE_KEEPASSX) { if (keepassx_answer!=append) { /* Write a database header to the KeePassX XML file */ /* If we append to an XML file we don't need another header */ fprintf(out, "\n"); fprintf(out, "\n"); } else { /* We'll need to remove the last part of the XML file */ r = fseek(out, -12L, SEEK_END); r = fread(text, 11, 1, out); text[11]='\0'; if (strncmp(text, "", 11)) { jp_logf(JP_LOG_WARN, _("This doesn't look like a KeePassX XML file\n")); fseek(out, 0L, SEEK_END); } else { fseek(out, -12L, SEEK_END); } } /* Write a group header to the KeePassX XML file */ fprintf(out, " \n"); fprintf(out, " Keyring\n"); fprintf(out, " 0\n"); } get_pref(PREF_CHAR_SET, &char_set, NULL); list=GTK_CLIST(clist)->selection; for (i=0, temp_list=list; temp_list; temp_list = temp_list->next, i++) { mkr = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mkr) { continue; jp_logf(JP_LOG_WARN, _("Can't export key %d\n"), (long) temp_list->data + 1); } switch (type) { case EXPORT_TYPE_CSV: utf = charset_p2newj(keyr_app_info.name[mkr->attrib & 0x0F], 16, char_set); fprintf(out, "\"%s\",", utf); g_free(utf); str_to_csv_str(csv_text, mkr->kr.name); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mkr->kr.account); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mkr->kr.password); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mkr->kr.note); fprintf(out, "\"%s\"\n", csv_text); break; case EXPORT_TYPE_BFOLDERS: str_to_csv_str(csv_text, mkr->kr.name); fprintf(out, "\"%s\",", csv_text); fprintf(out, "\"\","); str_to_csv_str(csv_text, mkr->kr.account); fprintf(out, "\"%s\",", csv_text); str_to_csv_str(csv_text, mkr->kr.password); fprintf(out, "\"%s\",", csv_text); fprintf(out, "\"\",\"\",\"\",\"\"," "\"\",\"\",\"\",\"\"," "\"\",\"\","); str_to_csv_str(csv_text, mkr->kr.note); fprintf(out, "\"%s\",", csv_text); fprintf(out, "\"KeyRing > "); utf = charset_p2newj(keyr_app_info.name[mkr->attrib & 0x0F], 16, char_set); fprintf(out, "%s\"\n", utf); g_free(utf); break; case EXPORT_TYPE_TEXT: fprintf(out, "#%d\n", i+1); fprintf(out, "Name: %s\n", mkr->kr.name); fprintf(out, "Account: %s\n", mkr->kr.account); fprintf(out, "Password: %s\n", mkr->kr.password); fprintf(out, "Note: %s\n", mkr->kr.note ); break; case EXPORT_TYPE_KEEPASSX: break; default: jp_logf(JP_LOG_WARN, _("Unknown export type\n")); } } /* I'm writing a second loop for the KeePassX XML file because I want to * put each category into a folder and we need to write the tag for a folder * and then find each record in that category/folder */ if (type==EXPORT_TYPE_KEEPASSX) { for (cat=0; cat < 16; cat++) { if (keyr_app_info.name[cat][0]=='\0') { continue; } /* Write a folder XML tag */ utf = charset_p2newj(keyr_app_info.name[cat], 16, char_set); fprintf(out, " \n"); fprintf(out, " %s\n", utf); fprintf(out, " 13\n"); g_free(utf); for (i=0, temp_list=list; temp_list; temp_list = temp_list->next, i++) { mkr = gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_INT(temp_list->data)); if (!mkr) { continue; jp_logf(JP_LOG_WARN, _("Can't export key %d\n"), (long) temp_list->data + 1); } if ((mkr->attrib & 0x0F) != cat) { continue; } fprintf(out, " \n"); str_to_keepass_str(csv_text, mkr->kr.name); fprintf(out, " %s\n", csv_text); str_to_keepass_str(csv_text, mkr->kr.account); fprintf(out, " %s\n", csv_text); str_to_keepass_str(csv_text, mkr->kr.password); fprintf(out, " %s\n", csv_text); /* No keyring field for url */ str_to_keepass_str(csv_text, mkr->kr.note); fprintf(out, " %s\n", csv_text); fprintf(out, " 0\n"); /* No keyring field for creation */ /* No keyring field for lastaccess */ /* lastmod */ strftime(str1, sizeof(str1), "%Y-%m-%dT%H:%M:%S", &(mkr->kr.last_changed)); fprintf(out, " %s\n", str1); /* No keyring field for expire */ fprintf(out, " Never\n"); fprintf(out, " \n"); } fprintf(out, " \n"); } /* Write a footer to the KeePassX XML file */ if (type == EXPORT_TYPE_KEEPASSX) { fprintf(out, " \n"); fprintf(out, "\n"); } } if (out) { fclose(out); } } /* * This is a plugin callback function to export records. */ int plugin_export(GtkWidget *window) { int w, h, x, y; char *type_text[]={N_("Text"), N_("CSV"), N_("B-Folders CSV"), N_("KeePassX XML"), NULL}; int type_int[]={EXPORT_TYPE_TEXT, EXPORT_TYPE_CSV, EXPORT_TYPE_BFOLDERS, EXPORT_TYPE_KEEPASSX}; gdk_window_get_size(window->window, &w, &h); gdk_window_get_root_origin(window->window, &x, &y); w = gtk_paned_get_position(GTK_PANED(pane)); x+=40; export_gui(window, w, h, x, y, 1, sort_l, PREF_KEYR_EXPORT_FILENAME, type_text, type_int, cb_keyr_update_clist, cb_keyr_export_done, cb_keyr_export_ok ); return EXIT_SUCCESS; } /* * This is a plugin callback function called during Jpilot program exit. */ int plugin_exit_cleanup(void) { jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_exit_cleanup\n"); return EXIT_SUCCESS; } /* * This is a plugin callback function called when the plugin is terminated * such as by switching to another application(ToDo, Memo, etc.) */ int plugin_gui_cleanup(void) { int b; jp_logf(JP_LOG_DEBUG, "KeyRing: plugin_gui_cleanup\n"); b=dialog_save_changed_record(clist, record_changed); if (b==DIALOG_SAID_2) { cb_add_new_record(NULL, GINT_TO_POINTER(record_changed)); } connect_changed_signals(DISCONNECT_SIGNALS); free_mykeyring_list(&glob_keyring_list); /* if the password was correct */ if (plugin_last_time && (TRUE == plugin_active)) { plugin_last_time = time(NULL); } plugin_active = FALSE; /* the pane may not exist if the wrong password is entered and * the GUI was not built */ if (pane) { /* Remove the accelerators */ #ifndef ENABLE_STOCK_BUTTONS gtk_window_remove_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(pane)), accel_group); #endif /* Record the position of the window pane to restore later */ set_pref(PREF_KEYRING_PANE, gtk_paned_get_position(GTK_PANED(pane)), NULL, TRUE); pane = NULL; clist_clear(GTK_CLIST(clist)); } return EXIT_SUCCESS; } /* * This function is called by J-Pilot when the user selects this plugin * from the plugin menu, or from the search window when a search result * record is chosen. In the latter case, unique ID will be set. This * application should go directly to that record in the case. */ int plugin_gui(GtkWidget *vbox, GtkWidget *hbox, unsigned int unique_id) { GtkWidget *vbox1, *vbox2; GtkWidget *hbox_temp; GtkWidget *button; GtkWidget *label; GtkWidget *table; GtkWindow *w; GtkWidget *separator; long ivalue; char ascii_password[PASSWD_LEN]; int r; int password_not_correct; char *titles[3]; /* { "Changed", "Name", "Account" }; */ int retry; int cycle_category = FALSE; long char_set; long show_tooltips; char *cat_name; int new_cat; int index, index2; int i; #ifdef HAVE_LIBGCRYPT static int gcrypt_init = 0; #endif jp_logf(JP_LOG_DEBUG, "KeyRing: plugin gui started, unique_id=%d\n", unique_id); if (check_for_db()) { return EXIT_FAILURE; } #ifdef HAVE_LIBGCRYPT if (!gcrypt_init) { gcrypt_init = 1; /* Version check should be the very first call because it makes sure that important subsystems are intialized. */ if (!gcry_check_version (GCRYPT_VERSION)) { fputs ("libgcrypt version mismatch\n", stderr); return EXIT_FAILURE; } /* We don't want to see any warnings, e.g. because we have not yet parsed program options which might be used to suppress such warnings. */ gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN); /* ... If required, other initialization goes here. Note that the process might still be running with increased privileges and that the secure memory has not been intialized. */ /* Allocate a pool of 16k secure memory. This make the secure memory available and also drops privileges where needed. */ gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0); /* It is now okay to let Libgcrypt complain when there was/is a problem with the secure memory. */ gcry_control (GCRYCTL_RESUME_SECMEM_WARN); /* ... If required, other initialization goes here. */ /* Tell Libgcrypt that initialization has completed. */ gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); } #endif /* Find the main window from some widget */ w = GTK_WINDOW(gtk_widget_get_toplevel(hbox)); #if 0 /* Change Password button */ button = gtk_button_new_with_label(_("Change\nKeyRing\nPassword")); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_change_password), NULL); gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0); #endif if (difftime(time(NULL), plugin_last_time) > PLUGIN_MAX_INACTIVE_TIME) { /* reset last time we entered */ plugin_last_time = 0; password_not_correct = TRUE; retry = PASSWD_ENTER; while (password_not_correct) { r = dialog_password(w, ascii_password, retry); retry = PASSWD_ENTER_RETRY; if (r != 2) { memset(ascii_password, 0, PASSWD_LEN-1); return 0; } password_not_correct = (verify_pasword(ascii_password) > 0); } memset(ascii_password, 0, PASSWD_LEN-1); } else { cycle_category = TRUE; } /* called to display the result of a search */ if (unique_id) { cycle_category = FALSE; } /* plugin entered with correct password */ plugin_last_time = time(NULL); plugin_active = TRUE; /************************************************************/ /* Build GUI */ record_changed=CLEAR_FLAG; clist_row_selected = 0; /* Do some initialization */ for (i=0; i NUM_KEYRING_CAT_ITEMS) { keyr_category = CATEGORY_ALL; } /* Make accelerators for some buttons window */ #ifndef ENABLE_STOCK_BUTTONS accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(vbox)), accel_group); #endif get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); pane = gtk_hpaned_new(); get_pref(PREF_KEYRING_PANE, &ivalue, NULL); gtk_paned_set_position(GTK_PANED(pane), ivalue); gtk_box_pack_start(GTK_BOX(hbox), pane, TRUE, TRUE, 5); /* left and right main boxes */ vbox1 = gtk_vbox_new(FALSE, 0); vbox2 = gtk_vbox_new(FALSE, 0); gtk_paned_pack1(GTK_PANED(pane), vbox1, TRUE, FALSE); gtk_paned_pack2(GTK_PANED(pane), vbox2, TRUE, FALSE); gtk_widget_set_usize(GTK_WIDGET(vbox1), 0, 230); gtk_widget_set_usize(GTK_WIDGET(vbox2), 0, 230); /**********************************************************************/ /* Left half of screen */ /**********************************************************************/ /* Left-side Category menu */ hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox1), hbox_temp, FALSE, FALSE, 0); make_category_menu(&category_menu1, keyr_cat_menu_item1, sort_l, cb_category, TRUE, FALSE); gtk_box_pack_start(GTK_BOX(hbox_temp), category_menu1, TRUE, TRUE, 0); /* Scrolled window */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox1), scrolled_window, TRUE, TRUE, 0); /* Clist */ titles[0] = _("Changed"); titles[1] = _("Name"); titles[2] = _("Account"); clist = gtk_clist_new_with_titles(3, titles); gtk_clist_column_titles_active(GTK_CLIST(clist)); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), KEYR_CHGD_COLUMN, TRUE); gtk_clist_set_column_width(GTK_CLIST(clist), KEYR_NAME_COLUMN, 150); gtk_clist_set_sort_column(GTK_CLIST(clist), KEYR_NAME_COLUMN); gtk_clist_set_compare_func(GTK_CLIST(clist), GtkClistKeyrCompareNocase); gtk_clist_set_sort_type(GTK_CLIST(clist), GTK_SORT_ASCENDING); gtk_clist_set_shadow_type(GTK_CLIST(clist), SHADOW); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); gtk_signal_connect(GTK_OBJECT(clist), "click_column", GTK_SIGNAL_FUNC (cb_clist_click_column), NULL); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(clist)); /**********************************************************************/ /* Right half of screen */ /**********************************************************************/ hbox_temp = gtk_hbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, FALSE, FALSE, 0); /* Cancel button */ CREATE_BUTTON(cancel_record_button, _("Cancel"), CANCEL, _("Cancel the modifications"), GDK_Escape, 0, "ESC") gtk_signal_connect(GTK_OBJECT(cancel_record_button), "clicked", GTK_SIGNAL_FUNC(cb_cancel), NULL); /* Delete button */ CREATE_BUTTON(delete_record_button, _("Delete"), DELETE, _("Delete the selected record"), GDK_d, GDK_CONTROL_MASK, "Ctrl+D"); gtk_signal_connect(GTK_OBJECT(delete_record_button), "clicked", GTK_SIGNAL_FUNC(cb_delete_keyring), GINT_TO_POINTER(DELETE_FLAG)); /* Undelete button */ CREATE_BUTTON(undelete_record_button, _("Undelete"), UNDELETE, _("Undelete the selected record"), 0, 0, "") gtk_signal_connect(GTK_OBJECT(undelete_record_button), "clicked", GTK_SIGNAL_FUNC(cb_undelete_keyring), GINT_TO_POINTER(UNDELETE_FLAG)); /* Copy button */ CREATE_BUTTON(copy_record_button, _("Copy"), COPY, _("Copy the selected record"), GDK_c, GDK_CONTROL_MASK|GDK_SHIFT_MASK, "Ctrl+Shift+C") gtk_signal_connect(GTK_OBJECT(copy_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(COPY_FLAG)); /* New Record button */ CREATE_BUTTON(new_record_button, _("New Record"), NEW, _("Add a new record"), GDK_n, GDK_CONTROL_MASK, "Ctrl+N") gtk_signal_connect(GTK_OBJECT(new_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(CLEAR_FLAG)); /* Add Record button */ CREATE_BUTTON(add_record_button, _("Add Record"), ADD, _("Add the new record"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(add_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(NEW_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(add_record_button)->child)), "label_high"); #endif /* Apply Changes button */ CREATE_BUTTON(apply_record_button, _("Apply Changes"), APPLY, _("Commit the modifications"), GDK_Return, GDK_CONTROL_MASK, "Ctrl+Enter") gtk_signal_connect(GTK_OBJECT(apply_record_button), "clicked", GTK_SIGNAL_FUNC(cb_add_new_record), GINT_TO_POINTER(MODIFY_FLAG)); #ifndef ENABLE_STOCK_BUTTONS gtk_widget_set_name(GTK_WIDGET(GTK_LABEL(GTK_BIN(apply_record_button)->child)), "label_high"); #endif /* Separator */ separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox2), separator, FALSE, FALSE, 5); /* Table */ table = gtk_table_new(5, 10, FALSE); gtk_table_set_row_spacings(GTK_TABLE(table),0); gtk_table_set_col_spacings(GTK_TABLE(table),0); gtk_box_pack_start(GTK_BOX(vbox2), table, FALSE, FALSE, 0); /* Category menu */ label = gtk_label_new(_("Category: ")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 0, 1); make_category_menu(&category_menu2, keyr_cat_menu_item2, sort_l, NULL, FALSE, FALSE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(category_menu2), 1, 10, 0, 1); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); /* Name entry */ label = gtk_label_new(_("name: ")); entry_name = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(entry_name), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 1, 2); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_name), 1, 10, 1, 2); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); /* Account entry */ label = gtk_label_new(_("account: ")); entry_account = gtk_entry_new(); entry_set_multiline_truncate(GTK_ENTRY(entry_account), TRUE); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 2, 3); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_account), 1, 10, 2, 3); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); /* Password entry */ label = gtk_label_new(_("password: ")); entry_password = gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 3, 4); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(entry_password), 1, 9, 3, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); /* Last Changed entry */ label = gtk_label_new(_("last changed: ")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(label), 0, 1, 4, 5); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); date_button = gtk_button_new_with_label(""); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(date_button), 1, 10, 4, 5); gtk_signal_connect(GTK_OBJECT(date_button), "clicked", GTK_SIGNAL_FUNC(cb_date_button), date_button); /* Generate Password button (creates random password) */ button = gtk_button_new_with_label(_("Generate Password")); gtk_table_attach_defaults(GTK_TABLE(table), GTK_WIDGET(button), 9, 10, 3, 4); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_gen_password), entry_password); /* Note textbox */ label = gtk_label_new(_("Note")); gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0); hbox_temp = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox_temp, TRUE, TRUE, 0); keyr_note = gtk_text_view_new(); keyr_note_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(keyr_note))); gtk_text_view_set_editable(GTK_TEXT_VIEW(keyr_note), TRUE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(keyr_note), GTK_WRAP_WORD); scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 1); gtk_container_add(GTK_CONTAINER(scrolled_window), keyr_note); gtk_box_pack_start_defaults(GTK_BOX(hbox_temp), scrolled_window); /**********************************************************************/ gtk_widget_show_all(hbox); gtk_widget_show_all(vbox); gtk_widget_hide(add_record_button); gtk_widget_hide(apply_record_button); gtk_widget_hide(undelete_record_button); gtk_widget_hide(cancel_record_button); if (cycle_category) { /* First cycle keyr_category var */ if (keyr_category == CATEGORY_ALL) { new_cat = -1; } else { new_cat = find_sort_cat_pos(keyr_category); } for (i=0; i= NUM_KEYRING_CAT_ITEMS) { keyr_category = CATEGORY_ALL; break; } if ((sort_l[new_cat].Pcat) && (sort_l[new_cat].Pcat[0])) { keyr_category = sort_l[new_cat].cat_num; break; } } /* Then update menu with new keyr_category */ if (keyr_category==CATEGORY_ALL) { index = 0; index2 = 0; } else { index = find_sort_cat_pos(keyr_category); index2 = find_menu_cat_pos(index) + 1; index += 1; } if (index<0) { jp_logf(JP_LOG_WARN, _("Category is not legal\n")); } else { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(keyr_cat_menu_item1[index]), TRUE); gtk_option_menu_set_history(GTK_OPTION_MENU(category_menu1), index2); } } else { keyr_category = CATEGORY_ALL; } keyr_update_clist(clist, &glob_keyring_list, keyr_category, TRUE); if (unique_id) { keyring_find(unique_id); } return EXIT_SUCCESS; } jpilot-1.8.2/KeyRing/README0000664000175000017500000000210712320101153012162 00000000000000This is a J-Pilot plugin program which provides an interface to KeyRing for PalmOS. KeyRing is a Palm application that stores records with 3DES encryption. More information on KeyRing and downloads can be found at: http://gnukeyring.sourceforge.net REQUIREMENTS: GNU libgcrypt is the default library used for encryption as it has fewer usage restrictions than the alternative -- OpenSSL libraries. Use of OpenSSL can be forced by passing --with-openssl to the configure script. There is no autoconf (configure) detection of OpenSSL. If you have not installed the libraries in the standard location you may have to edit the Makefile appropriately. BUGS: There is one major bug that I know of. When you change the master password on the Palm KeyRing program it will re-encrypt all the stored password data. If you have unsynced records in J-Pilot, they will not get re-encrypted and will be garbage. I could fix this, but its just too much work. Just sync before changing your password. Sort order isn't the same that as on the Palm. Judd Montgomery jpilot-1.8.2/KeyRing/Makefile.in0000664000175000017500000005477512336026321013403 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = KeyRing DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libkeyring_la_DEPENDENCIES = am__libkeyring_la_SOURCES_DIST = keyring.c @MAKE_KEYRING_TRUE@am_libkeyring_la_OBJECTS = \ @MAKE_KEYRING_TRUE@ libkeyring_la-keyring.lo libkeyring_la_OBJECTS = $(am_libkeyring_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libkeyring_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libkeyring_la_CFLAGS) \ $(CFLAGS) $(libkeyring_la_LDFLAGS) $(LDFLAGS) -o $@ @MAKE_KEYRING_TRUE@am_libkeyring_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libkeyring_la_SOURCES) DIST_SOURCES = $(am__libkeyring_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@/@PACKAGE@/plugins libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = README @MAKE_KEYRING_TRUE@lib_LTLIBRARIES = libkeyring.la @MAKE_KEYRING_TRUE@libkeyring_la_SOURCES = keyring.c @MAKE_KEYRING_TRUE@libkeyring_la_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ @LIBGCRYPT_CFLAGS@ -I$(top_srcdir) @MAKE_KEYRING_TRUE@libkeyring_la_LDFLAGS = -module -avoid-version @MAKE_KEYRING_TRUE@libkeyring_la_LIBADD = @OPENSSL_LIBS@ @GTK_LIBS@ @LIBGCRYPT_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign KeyRing/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign KeyRing/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libkeyring.la: $(libkeyring_la_OBJECTS) $(libkeyring_la_DEPENDENCIES) $(EXTRA_libkeyring_la_DEPENDENCIES) $(AM_V_CCLD)$(libkeyring_la_LINK) $(am_libkeyring_la_rpath) $(libkeyring_la_OBJECTS) $(libkeyring_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkeyring_la-keyring.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libkeyring_la-keyring.lo: keyring.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkeyring_la_CFLAGS) $(CFLAGS) -MT libkeyring_la-keyring.lo -MD -MP -MF $(DEPDIR)/libkeyring_la-keyring.Tpo -c -o libkeyring_la-keyring.lo `test -f 'keyring.c' || echo '$(srcdir)/'`keyring.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeyring_la-keyring.Tpo $(DEPDIR)/libkeyring_la-keyring.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='keyring.c' object='libkeyring_la-keyring.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkeyring_la_CFLAGS) $(CFLAGS) -c -o libkeyring_la-keyring.lo `test -f 'keyring.c' || echo '$(srcdir)/'`keyring.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/print_gui.c0000664000175000017500000002700112340261240012104 00000000000000/******************************************************************************* * print_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2000-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include "i18n.h" #include "utils.h" #include "prefs.h" #include "prefs_gui.h" #include "log.h" #include "print.h" /******************************* Global vars **********************************/ static GtkWidget *lines_entry; static GtkWidget *print_command_entry; static GtkWidget *one_record_checkbutton; static GtkWidget *window; static GtkWidget *radio_button_one; static GtkWidget *radio_button_shown; static GtkWidget *radio_button_all; static GtkWidget *radio_button_daily; static GtkWidget *radio_button_weekly; static GtkWidget *radio_button_monthly; static int print_dialog; /* This is a temporary hack */ int print_day_week_month; /****************************** Main Code *************************************/ static gboolean cb_destroy(GtkWidget *widget) { const char *entry_text; const char *lines_text; int num_lines; jp_logf(JP_LOG_DEBUG, "Cleanup print_gui\n"); /* Get radio button prefs */ if (radio_button_one) { if (GTK_TOGGLE_BUTTON(radio_button_one)->active) { jp_logf(JP_LOG_DEBUG, "print one"); set_pref(PREF_PRINT_THIS_MANY, 1, NULL, FALSE); } if (GTK_TOGGLE_BUTTON(radio_button_shown)->active) { jp_logf(JP_LOG_DEBUG, "print shown"); set_pref(PREF_PRINT_THIS_MANY, 2, NULL, FALSE); } if (GTK_TOGGLE_BUTTON(radio_button_all)->active) { jp_logf(JP_LOG_DEBUG, "print all"); set_pref(PREF_PRINT_THIS_MANY, 3, NULL, FALSE); } } /* Get radio button prefs */ if (radio_button_daily) { if (GTK_TOGGLE_BUTTON(radio_button_daily)->active) { jp_logf(JP_LOG_DEBUG, "print daily"); print_day_week_month=1; } if (GTK_TOGGLE_BUTTON(radio_button_weekly)->active) { jp_logf(JP_LOG_DEBUG, "print weekly"); print_day_week_month=2; } if (GTK_TOGGLE_BUTTON(radio_button_monthly)->active) { jp_logf(JP_LOG_DEBUG, "print monthly"); print_day_week_month=3; } } /* Get one record per page pref */ if (one_record_checkbutton) { if (GTK_TOGGLE_BUTTON(one_record_checkbutton)->active) { jp_logf(JP_LOG_DEBUG, "one record per page"); set_pref(PREF_PRINT_ONE_PER_PAGE, 1, NULL, FALSE); } else { set_pref(PREF_PRINT_ONE_PER_PAGE, 0, NULL, FALSE); } } /* Get number of blank lines */ if (lines_entry) { lines_text = gtk_entry_get_text(GTK_ENTRY(lines_entry)); jp_logf(JP_LOG_DEBUG, "lines_entry = [%s]\n", lines_text); num_lines = atoi(lines_text); if (num_lines < 0) { num_lines = 0; } if (num_lines > 99) { num_lines = 99; } set_pref(PREF_NUM_BLANK_LINES, num_lines, NULL, FALSE); } /* Get print command */ entry_text = gtk_entry_get_text(GTK_ENTRY(print_command_entry)); jp_logf(JP_LOG_DEBUG, "print_command_entry = [%s]\n", entry_text); set_pref(PREF_PRINT_COMMAND, 0, entry_text, TRUE); window = NULL; gtk_main_quit(); return FALSE; } static void cb_print(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_print\n"); if (GTK_IS_WIDGET(data)) { gtk_widget_destroy(data); } print_dialog=DIALOG_SAID_PRINT; } static void cb_cancel(GtkWidget *widget, gpointer data) { jp_logf(JP_LOG_DEBUG, "cb_cancel\n"); if (GTK_IS_WIDGET(data)) { gtk_widget_destroy(data); } print_dialog=DIALOG_SAID_CANCEL; } /* mon_week_day is a binary flag to choose which radio buttons appear for * datebook printing. * 1 = daily * 2 = weekly * 4 = monthly */ int print_gui(GtkWidget *main_window, int app, int date_button, int mon_week_day) { GtkWidget *label; GtkWidget *button; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *pref_menu; long ivalue; char temp_str[10]; char temp[256]; const char *svalue; GSList *group; jp_logf(JP_LOG_DEBUG, "print_gui\n"); if (GTK_IS_WINDOW(window)) { jp_logf(JP_LOG_DEBUG, "print_gui window is already up\n"); gdk_window_raise(window->window); return EXIT_SUCCESS; } print_dialog=0; radio_button_one=NULL; radio_button_daily=NULL; one_record_checkbutton=NULL; lines_entry=NULL; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_MOUSE); gtk_window_set_modal(GTK_WINDOW(window), TRUE); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(main_window)); gtk_container_set_border_width(GTK_CONTAINER(window), 10); g_snprintf(temp, sizeof(temp), "%s %s", PN, _("Print Options")); gtk_window_set_title(GTK_WINDOW(window), temp); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(cb_destroy), window); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); /* Paper Size */ hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("Paper Size")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); make_pref_menu(&pref_menu, PREF_PAPER_SIZE); gtk_box_pack_start(GTK_BOX(hbox), pref_menu, FALSE, FALSE, 0); get_pref(PREF_PAPER_SIZE, &ivalue, NULL); gtk_option_menu_set_history(GTK_OPTION_MENU(pref_menu), ivalue); /* Radio buttons for Datebook */ radio_button_daily=radio_button_weekly=radio_button_monthly=NULL; if (app == DATEBOOK) { group = NULL; if (mon_week_day & 0x01) { radio_button_daily = gtk_radio_button_new_with_label (group, _("Daily Printout")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_daily)); } if (mon_week_day & 0x02) { radio_button_weekly = gtk_radio_button_new_with_label (group, _("Weekly Printout")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_weekly)); } if (mon_week_day & 0x04) { radio_button_monthly = gtk_radio_button_new_with_label (group, _("Monthly Printout")); } switch (date_button) { case 1: if (mon_week_day & 0x01) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_daily), TRUE); } break; case 2: if (mon_week_day & 0x02) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_weekly), TRUE); } break; case 3: if (mon_week_day & 0x04) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_monthly), TRUE); } break; default: if (mon_week_day & 0x01) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_daily), TRUE); } } if (mon_week_day & 0x01) { gtk_box_pack_start(GTK_BOX(vbox), radio_button_daily, FALSE, FALSE, 0); } if (mon_week_day & 0x02) { gtk_box_pack_start(GTK_BOX(vbox), radio_button_weekly, FALSE, FALSE, 0); } if (mon_week_day & 0x04) { gtk_box_pack_start(GTK_BOX(vbox), radio_button_monthly, FALSE, FALSE, 0); } } if (app != DATEBOOK) { /* Radio buttons for number of records to print */ group = NULL; radio_button_one = gtk_radio_button_new_with_label (group, _("Selected record")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_one)); radio_button_shown = gtk_radio_button_new_with_label (group, _("All records in this category")); group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_button_shown)); radio_button_all = gtk_radio_button_new_with_label (group, _("Print all records")); get_pref(PREF_PRINT_THIS_MANY, &ivalue, NULL); switch (ivalue) { case 1: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_one), TRUE); break; case 2: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_shown), TRUE); break; case 3: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button_all), TRUE); } gtk_box_pack_start(GTK_BOX(vbox), radio_button_one, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), radio_button_shown, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), radio_button_all, FALSE, FALSE, 0); } if (app != DATEBOOK) { /* One record per page check box */ one_record_checkbutton = gtk_check_button_new_with_label (_("One record per page")); gtk_box_pack_start(GTK_BOX(vbox), one_record_checkbutton, FALSE, FALSE, 0); get_pref(PREF_PRINT_ONE_PER_PAGE, &ivalue, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(one_record_checkbutton), ivalue); } if (app != DATEBOOK) { /* Number of blank lines */ hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); lines_entry = gtk_entry_new_with_max_length(2); entry_set_multiline_truncate(GTK_ENTRY(lines_entry), TRUE); gtk_widget_set_usize(lines_entry, 30, 0); gtk_box_pack_start(GTK_BOX(hbox), lines_entry, FALSE, FALSE, 0); label = gtk_label_new(_("Blank lines between each record")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); get_pref(PREF_NUM_BLANK_LINES, &ivalue, NULL); sprintf(temp_str, "%ld", ivalue); gtk_entry_set_text(GTK_ENTRY(lines_entry), temp_str); } /* Print Command */ label = gtk_label_new(_("Print Command (e.g. lpr, or cat > file.ps)")); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); print_command_entry = gtk_entry_new_with_max_length(250); gtk_box_pack_start(GTK_BOX(vbox), print_command_entry, FALSE, FALSE, 0); get_pref(PREF_PRINT_COMMAND, NULL, &svalue); gtk_entry_set_text(GTK_ENTRY(print_command_entry), svalue); /* Dialog button box */ hbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); gtk_button_box_set_layout(GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); /* Cancel button */ button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_cancel), window); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); /* Print button */ button = gtk_button_new_from_stock(GTK_STOCK_PRINT); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_print), window); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); gtk_widget_show_all(window); gtk_main(); return print_dialog; } jpilot-1.8.2/TODO0000664000175000017500000000062412320101153010424 00000000000000These are some of the things on my list todo, mostly, but not neccesarily in this order: hide completed floating events in datebook cryptopad splicer http://www.kybs.de/boris/software.shtml * Import/export files in XML, ldif, and maybe other formats * Better daily schedule * Archiving archived records from the palm Done from last time: See CHANGELOG Big projects: * Web Interface Small things: jpilot-1.8.2/monthview_gui.c0000664000175000017500000004270112340261240012774 00000000000000/******************************************************************************* * monthview_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include "utils.h" #include "i18n.h" #include "prefs.h" #include "log.h" #include "datebook.h" #include "calendar.h" #include "print.h" #include "jpilot.h" /******************************* Global vars **********************************/ extern int datebk_category; extern int glob_app; extern GtkTooltips *glob_tooltips; GtkWidget *monthview_window=NULL; static GtkWidget *month_day_label[37]; static GtkWidget *month_day[37]; static GObject *month_day_buffer[37]; static GObject *all_appts_buffer; static GtkWidget *month_month_label; static GtkWidget *glob_last_hbox_row; static int glob_offset; static struct tm glob_month_date; /****************************** Prototypes ************************************/ static int display_months_appts(struct tm *glob_month_date, GtkWidget **glob_month_texts); static void hide_show_month_boxes(void); /****************************** Main Code *************************************/ static gboolean cb_destroy(GtkWidget *widget) { int n; GString *gstr; GtkWidget *text; monthview_window = NULL; for (n=0; n<37; n++) { text = month_day[n]; gstr = gtk_object_get_data(GTK_OBJECT(text), "gstr"); if (gstr) { g_string_free(gstr, TRUE); gtk_object_remove_data(GTK_OBJECT(text), "gstr"); } } return FALSE; } void cb_monthview_quit(GtkWidget *widget, gpointer data) { int w, h; gdk_window_get_size(monthview_window->window, &w, &h); set_pref(PREF_MONTHVIEW_WIDTH, w, NULL, FALSE); set_pref(PREF_MONTHVIEW_HEIGHT, h, NULL, FALSE); gtk_widget_destroy(monthview_window); } static void cb_month_move(GtkWidget *widget, gpointer data) { if (GPOINTER_TO_INT(data)==-1) { glob_month_date.tm_mday=15; sub_days_from_date(&glob_month_date, 30); } if (GPOINTER_TO_INT(data)==1) { glob_month_date.tm_mday=15; add_days_to_date(&glob_month_date, 30); } hide_show_month_boxes(); display_months_appts(&glob_month_date, month_day); } static void cb_month_print(GtkWidget *widget, gpointer data) { long paper_size; jp_logf(JP_LOG_DEBUG, "cb_month_print called\n"); if (print_gui(monthview_window, DATEBOOK, 3, 0x04) == DIALOG_SAID_PRINT) { get_pref(PREF_PAPER_SIZE, &paper_size, NULL); if (paper_size==1) { print_months_appts(&glob_month_date, PAPER_A4); } else { print_months_appts(&glob_month_date, PAPER_Letter); } } } static void cb_enter_notify(GtkWidget *widget, GdkEvent *event, gpointer data) { static int prev_day=-1; GtkWidget *textview; GString *gstr; if (prev_day==GPOINTER_TO_INT(data)+1-glob_offset) { return; } prev_day = GPOINTER_TO_INT(data)+1-glob_offset; textview = gtk_bin_get_child(GTK_BIN(widget)); gstr = gtk_object_get_data(GTK_OBJECT(textview), "gstr"); if (gstr) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(all_appts_buffer), gstr->str, -1); } else { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(all_appts_buffer), "", -1); } } /* Called when a day is clicked on in the month view */ static void cb_enter_selected_day(GtkWidget *widget, GdkEvent *event, gpointer data) { int day = GPOINTER_TO_INT(data) + 1 - glob_offset; if (glob_app != DATEBOOK) return; /* Redisplay the day view based on the date the user clicked on */ datebook_gui_setdate(glob_month_date.tm_year, glob_month_date.tm_mon, day); } /* * Hide, or show month boxes (days) according to the month. * Also, set a global offset for indexing day 1. * Also relabel day labels. */ static void hide_show_month_boxes(void) { int n; int dow, ndim; int now_today; long fdow; char str[40]; int d; GtkWidget *text; char *markup_str; /* Determine today for highlighting */ now_today = get_highlighted_today(&glob_month_date); get_month_info(glob_month_date.tm_mon, 1, glob_month_date.tm_year, &dow, &ndim); get_pref(PREF_FDOW, &fdow, NULL); glob_offset = (7+dow-fdow)%7; d = 1 - glob_offset; if (glob_offset + ndim > 35) { gtk_widget_show(GTK_WIDGET(glob_last_hbox_row)); } else { gtk_widget_hide(GTK_WIDGET(glob_last_hbox_row)); } for (n=0; n<37; n++, d++) { text = month_day[n]; g_snprintf(str, sizeof(str), "%d", d); if (d == now_today) { markup_str = g_markup_printf_escaped("%s", str); gtk_widget_set_name(text, "today"); } else { markup_str = g_markup_printf_escaped("%s", str); gtk_widget_set_name(text, ""); } gtk_label_set_markup(GTK_LABEL(month_day_label[n]), markup_str); g_free(markup_str); if (n<7) { if (d>0) { gtk_widget_show(GTK_WIDGET(text)); gtk_widget_show(GTK_WIDGET(month_day_label[n])); } else { gtk_widget_hide(GTK_WIDGET(text)); gtk_widget_hide(GTK_WIDGET(month_day_label[n])); } } if (n>27) { if (d<=ndim) { gtk_widget_show(GTK_WIDGET(text)); gtk_widget_show(GTK_WIDGET(month_day_label[n])); } else { gtk_widget_hide(GTK_WIDGET(text)); gtk_widget_hide(GTK_WIDGET(month_day_label[n])); } } } } static void create_month_boxes_texts(GtkWidget *month_vbox) { int i, j, n; GtkWidget *hbox_row; GtkWidget *vbox; GtkWidget *text; GtkWidget *event_box; char str[80]; n=0; for (i=0; i<6; i++) { hbox_row = gtk_hbox_new(TRUE, 0); gtk_box_pack_start(GTK_BOX(month_vbox), hbox_row, TRUE, TRUE, 0); for (j=0; j<7; j++) { vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_row), vbox, TRUE, TRUE, 2); n=i*7+j; if (n<37) { sprintf(str, "%d", n + 1); /* Day of month labels */ month_day_label[n] = gtk_label_new(str); gtk_misc_set_alignment(GTK_MISC(month_day_label[n]), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), month_day_label[n], FALSE, FALSE, 0); /* text variable only used to save some typing */ text = month_day[n] = gtk_text_view_new(); month_day_buffer[n] = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text))); gtk_widget_set_usize(GTK_WIDGET(text), 10, 10); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD); /* textview widget does not support window events such as * enter_notify. The widget must be wrapped in an event box * in order to work correctly. */ event_box = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER(event_box), text); gtk_signal_connect(GTK_OBJECT(event_box), "enter_notify_event", GTK_SIGNAL_FUNC(cb_enter_notify), GINT_TO_POINTER(n)); gtk_signal_connect(GTK_OBJECT(text), "button_release_event", GTK_SIGNAL_FUNC(cb_enter_selected_day), GINT_TO_POINTER(n)); gtk_box_pack_start(GTK_BOX(vbox), event_box, TRUE, TRUE, 0); } } } glob_last_hbox_row = hbox_row; text = gtk_text_view_new(); all_appts_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text))); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD); gtk_widget_set_usize(GTK_WIDGET(text), 10, 10); gtk_box_pack_start(GTK_BOX(month_vbox), text, TRUE, TRUE, 4); } static int display_months_appts(struct tm *date_in, GtkWidget **day_texts) { CalendarEventList *ce_list; CalendarEventList *temp_cel; struct tm date; GtkWidget **texts; GObject **text_buffers; char desc[100]; char datef[20]; char str[80]; int dow; int ndim; int n; int mask; int num_shown; #ifdef ENABLE_DATEBK int ret; int cat_bit; int db3_type; long use_db3_tags; struct db4_struct db4; #endif GString *gstr; GtkWidget *temp_text; long datebook_version; texts = &day_texts[glob_offset]; text_buffers = &month_day_buffer[glob_offset]; ce_list = NULL; mask=0; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); for (n=0; n<37; n++) { temp_text = month_day[n]; gstr = gtk_object_get_data(GTK_OBJECT(temp_text), "gstr"); if (gstr) { g_string_free(gstr, TRUE); gtk_object_remove_data(GTK_OBJECT(temp_text), "gstr"); } } /* Set Month name label */ jp_strftime(str, sizeof(str), "%B %Y", date_in); gtk_label_set_text(GTK_LABEL(month_month_label), str); memcpy(&date, date_in, sizeof(struct tm)); /* Get all of the appointments */ get_days_calendar_events2(&ce_list, NULL, 2, 2, 2, CATEGORY_ALL, NULL); get_month_info(date.tm_mon, 1, date.tm_year, &dow, &ndim); weed_calendar_event_list(&ce_list, date.tm_mon, date.tm_year, 0, &mask); for (n=0, date.tm_mday=1; date.tm_mday<=ndim; date.tm_mday++, n++) { gstr=NULL; date.tm_sec=0; date.tm_min=0; date.tm_hour=11; date.tm_isdst=-1; date.tm_wday=0; date.tm_yday=1; mktime(&date); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(text_buffers[n]), "", -1); num_shown = 0; for (temp_cel = ce_list; temp_cel; temp_cel=temp_cel->next) { #ifdef ENABLE_DATEBK get_pref(PREF_USE_DB3, &use_db3_tags, NULL); if (use_db3_tags) { ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); jp_logf(JP_LOG_DEBUG, "category = 0x%x\n", db4.category); cat_bit=1<mcale.cale), &date)) { if (num_shown) { gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(text_buffers[n]), "\n", -1); g_string_append(gstr, "\n"); } else { gstr=g_string_new(""); } num_shown++; if (temp_cel->mcale.cale.event) { strcpy(desc, "*"); } else { get_pref_time_no_secs(datef); jp_strftime(desc, sizeof(desc), datef, &(temp_cel->mcale.cale.begin)); strcat(desc, " "); } g_string_append(gstr, desc); g_string_append(gstr, temp_cel->mcale.cale.description); if (temp_cel->mcale.cale.description) { strncat(desc, temp_cel->mcale.cale.description, 36); /* FIXME: This kind of truncation is bad for UTF-8 */ desc[35]='\0'; } /* FIXME: Add location in parentheses (loc) as the Palm does. * We would need to check strlen, etc., before adding */ remove_cr_lfs(desc); /* Append number of anniversary years if enabled & appropriate */ append_anni_years(desc, 35, &date, NULL, &temp_cel->mcale.cale); gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(text_buffers[n]), desc, -1); } } gtk_object_set_data(GTK_OBJECT(texts[n]), "gstr", gstr); } free_CalendarEventList(&ce_list); return EXIT_SUCCESS; } void monthview_gui(struct tm *date_in) { struct tm date; GtkWidget *label; GtkWidget *button; GtkWidget *align; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *hbox_temp; GtkAccelGroup *accel_group; int i; char str[256]; char str_dow[256]; long fdow; char title[200]; long w, h, show_tooltips; if (monthview_window) { /* Delete any existing window to ensure that new window is biased * around currently selected date and so that the new window * contents are updated with any changes on the day view. */ gtk_widget_destroy(monthview_window); } memcpy(&glob_month_date, date_in, sizeof(struct tm)); get_pref(PREF_FDOW, &fdow, NULL); get_pref(PREF_MONTHVIEW_WIDTH, &w, NULL); get_pref(PREF_MONTHVIEW_HEIGHT, &h, NULL); get_pref(PREF_SHOW_TOOLTIPS, &show_tooltips, NULL); g_snprintf(title, sizeof(title), "%s %s", PN, _("Monthly View")); monthview_window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", title, NULL); gtk_window_set_default_size(GTK_WINDOW(monthview_window), w, h); gtk_container_set_border_width(GTK_CONTAINER(monthview_window), 10); gtk_signal_connect(GTK_OBJECT(monthview_window), "destroy", GTK_SIGNAL_FUNC(cb_destroy), monthview_window); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(monthview_window), vbox); /* Make accelerators for some buttons window */ accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(gtk_widget_get_toplevel(vbox)), accel_group); /* This box has the close button and arrows in it */ align = gtk_alignment_new(0.5, 0.5, 0, 0); gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, FALSE, 0); hbox_temp = gtk_hbutton_box_new(); gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox_temp), 6); gtk_container_set_border_width(GTK_CONTAINER(hbox_temp), 6); gtk_container_add(GTK_CONTAINER(align), hbox_temp); /* Make a left arrow for going back a week */ button = gtk_button_new_from_stock(GTK_STOCK_GO_BACK); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_month_move), GINT_TO_POINTER(-1)); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 3); /* Accelerator key for left arrow */ gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel_group, GDK_Left, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button, _("Last month Alt+LeftArrow"), NULL); /* Close button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_monthview_quit), monthview_window); /* Closing the window via a delete event uses the same cleanup routine */ gtk_signal_connect(GTK_OBJECT(monthview_window), "delete_event", GTK_SIGNAL_FUNC(cb_monthview_quit), NULL); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Print button */ button = gtk_button_new_from_stock(GTK_STOCK_PRINT); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_month_print), monthview_window); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 0); /* Make a right arrow for going forward a week */ button = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_month_move), GINT_TO_POINTER(1)); gtk_box_pack_start(GTK_BOX(hbox_temp), button, FALSE, FALSE, 3); /* Accelerator key for right arrow */ gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel_group, GDK_Right, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); set_tooltip(show_tooltips, glob_tooltips, button, _("Next month Alt+RightArrow"), NULL); /* Month name label */ jp_strftime(str, sizeof(str), "%B %Y", &glob_month_date); month_month_label = gtk_label_new(str); gtk_box_pack_start(GTK_BOX(vbox), month_month_label, FALSE, FALSE, 0); /* We know this is on a Sunday */ memset(&date, 0, sizeof(date)); date.tm_hour=12; date.tm_mday=3; date.tm_mon=1; date.tm_year=80; mktime(&date); /* Get to the first day of week */ if (fdow) add_days_to_date(&date, fdow); /* Days of the week */ hbox = gtk_hbox_new(TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); for (i=0; i<7; i++) { jp_strftime(str_dow, sizeof(str_dow), "%A", &date); label = gtk_label_new(str_dow); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); add_days_to_date(&date, 1); } create_month_boxes_texts(vbox); gtk_widget_show_all(monthview_window); hide_show_month_boxes(); display_months_appts(&glob_month_date, month_day); } jpilot-1.8.2/japanese.h0000664000175000017500000000226212320101153011673 00000000000000/******************************************************************************* * japanese.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999 by Hiroshi Kawashima * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* Header for Japanization library Convert Palm <-> Unix Japanese Code, ie: Palm : SJIS Unix : EUC */ void Sjis2Euc(char *buf, int max_len); void Euc2Sjis(char *buf, int max_len); void jp_Sjis2Euc(char *buf, int max_len); jpilot-1.8.2/intltool-extract.in0000664000175000017500000000000012336026316013602 00000000000000jpilot-1.8.2/SyncTime/0000775000175000017500000000000012340262141011554 500000000000000jpilot-1.8.2/SyncTime/synctime.c0000664000175000017500000000673112340261240013501 00000000000000/******************************************************************************* * synctime.c * * This is a plugin for J-Pilot which sets the time on the handheld * to the current time of the desktop. * * Copyright (C) 1999-2014 by Judd Montgomery * * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include #include #include #include #include #include "libplugin.h" #include "i18n.h" /********************************* Constants **********************************/ #define PLUGIN_MAJOR 1 #define PLUGIN_MINOR 0 /****************************** Main Code *************************************/ void plugin_version(int *major_version, int *minor_version) { *major_version = PLUGIN_MAJOR; *minor_version = PLUGIN_MINOR; } static int static_plugin_get_name(char *name, int len) { snprintf(name, len, "SyncTime %d.%d", PLUGIN_MAJOR, PLUGIN_MINOR); return EXIT_SUCCESS; } int plugin_get_name(char *name, int len) { return static_plugin_get_name(name, len); } int plugin_get_help_name(char *name, int len) { g_snprintf(name, len, _("About %s"), _("SyncTime")); return EXIT_SUCCESS; } int plugin_help(char **text, int *width, int *height) { char plugin_name[200]; static_plugin_get_name(plugin_name, sizeof(plugin_name)); *text = g_strdup_printf( /*-------------------------------------------*/ _("%s\n" "\n" "SyncTime plugin for J-Pilot was written by\n" "Judd Montgomery (c) 1999.\n" "judd@jpilot.org, http://jpilot.org\n" "\n" "SyncTime WILL NOT work with PalmOS 3.3!" ), plugin_name ); *height = 0; *width = 0; return EXIT_SUCCESS; } int plugin_sync(int sd) { time_t ltime; unsigned long ROMversion, majorVersion, minorVersion; jp_init(); jp_logf(JP_LOG_DEBUG, "SyncTime: plugin_sync\n"); dlp_ReadFeature(sd, makelong("psys"), 1, &ROMversion); majorVersion = (((ROMversion >> 28) & 0xf) * 10)+ ((ROMversion >> 24) & 0xf); minorVersion = (((ROMversion >> 20) & 0xf) * 10)+ ((ROMversion >> 16) & 0xf); jp_logf(JP_LOG_GUI, "synctime: Palm OS version %d.%d\n", majorVersion, minorVersion); if (majorVersion==3) { if ((minorVersion==30) || (minorVersion==25)) { jp_logf(JP_LOG_GUI, _("synctime: Palm OS Version 3.25 and 3.30 do not support SyncTime\n")); jp_logf(JP_LOG_GUI, _("synctime: NOT setting the time on the pilot\n")); return EXIT_FAILURE; } } jp_logf(JP_LOG_GUI, _("synctime: Setting the time on the pilot... ")); time(<ime); dlp_SetSysDateTime(sd, ltime); jp_logf(JP_LOG_GUI, _("Done\n")); return EXIT_SUCCESS; } jpilot-1.8.2/SyncTime/Makefile.am0000664000175000017500000000043112320101153013517 00000000000000libdir = @libdir@/@PACKAGE@/plugins if MAKE_SYNCTIME lib_LTLIBRARIES = libsynctime.la libsynctime_la_SOURCES = synctime.c libsynctime_la_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ -I$(top_srcdir) libsynctime_la_LDFLAGS = -module -avoid-version libsynctime_la_LIBADD = @GTK_LIBS@ endif jpilot-1.8.2/SyncTime/Makefile.in0000664000175000017500000005476312336026321013563 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = SyncTime DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libsynctime_la_DEPENDENCIES = am__libsynctime_la_SOURCES_DIST = synctime.c @MAKE_SYNCTIME_TRUE@am_libsynctime_la_OBJECTS = \ @MAKE_SYNCTIME_TRUE@ libsynctime_la-synctime.lo libsynctime_la_OBJECTS = $(am_libsynctime_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libsynctime_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libsynctime_la_CFLAGS) $(CFLAGS) $(libsynctime_la_LDFLAGS) \ $(LDFLAGS) -o $@ @MAKE_SYNCTIME_TRUE@am_libsynctime_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libsynctime_la_SOURCES) DIST_SOURCES = $(am__libsynctime_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@/@PACKAGE@/plugins libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @MAKE_SYNCTIME_TRUE@lib_LTLIBRARIES = libsynctime.la @MAKE_SYNCTIME_TRUE@libsynctime_la_SOURCES = synctime.c @MAKE_SYNCTIME_TRUE@libsynctime_la_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ -I$(top_srcdir) @MAKE_SYNCTIME_TRUE@libsynctime_la_LDFLAGS = -module -avoid-version @MAKE_SYNCTIME_TRUE@libsynctime_la_LIBADD = @GTK_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign SyncTime/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign SyncTime/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libsynctime.la: $(libsynctime_la_OBJECTS) $(libsynctime_la_DEPENDENCIES) $(EXTRA_libsynctime_la_DEPENDENCIES) $(AM_V_CCLD)$(libsynctime_la_LINK) $(am_libsynctime_la_rpath) $(libsynctime_la_OBJECTS) $(libsynctime_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsynctime_la-synctime.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libsynctime_la-synctime.lo: synctime.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsynctime_la_CFLAGS) $(CFLAGS) -MT libsynctime_la-synctime.lo -MD -MP -MF $(DEPDIR)/libsynctime_la-synctime.Tpo -c -o libsynctime_la-synctime.lo `test -f 'synctime.c' || echo '$(srcdir)/'`synctime.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsynctime_la-synctime.Tpo $(DEPDIR)/libsynctime_la-synctime.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='synctime.c' object='libsynctime_la-synctime.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsynctime_la_CFLAGS) $(CFLAGS) -c -o libsynctime_la-synctime.lo `test -f 'synctime.c' || echo '$(srcdir)/'`synctime.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/import_gui.c0000664000175000017500000004075212340261240012272 00000000000000/******************************************************************************* * import_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "prefs.h" #include "log.h" #include "export.h" /******************************* Global vars **********************************/ static GtkWidget *radio_types[MAX_IMPORT_TYPES+1]; static int radio_file_types[MAX_IMPORT_TYPES+1]; static int line_selected; static GtkWidget *filew=NULL; static GtkWidget *import_record_ask_window=NULL; static int glob_import_record_ask_button_pressed; static int glob_type_selected; /****************************** Prototypes ************************************/ static int (*glob_import_callback)(GtkWidget *parent_window, const char *file_path, int type); /****************************** Main Code *************************************/ /* * This function reads a CSV entry until it finds the next seperator(','). * Spaces, commas, newlines, etc. are allowed inside quotes. * Escaped quotes (double quotes) are converted to single occurrences. * Return value is size of text including null terminator. */ int read_csv_field(FILE *in, char *text, int size) { int n, c; char sep[]=",\t \r\n"; char whitespace[]="\t \r\n"; int quoted; n=0; quoted=FALSE; text[0]='\0'; /* Read the field */ while (1) { c=fgetc(in); /* Look for EOF */ if (feof(in)) break; /* Look for quote */ if (c=='"') { if (quoted) { c=fgetc(in); if (c=='"') { /* Found double quotes, convert to single */ } else { quoted=(quoted&1)^1; ungetc(c, in); continue; } } else { quoted=TRUE; continue; } } /* Look for separators */ if (strchr(sep, c)) { if (!quoted) { if (c != ',') { /* skip whitespace */ while (1) { c=getc(in); if (feof(in)) { text[n++]='\0'; return n; } if (strchr(whitespace, c)) { continue; } else { ungetc(c, in); break; } } } /* after sep processing, break out of reading field */ break; } /* end if !quoted */ } /* end if separator */ /* Ordinary character, add to field */ text[n++]=c; if (n+1>=size) { text[n++]='\0'; return n; } } /* end while(1) reading field */ /* Terminate string and return */ text[n++]='\0'; return n; } static int guess_file_type(const char *path) { FILE *in; char text[256]; if (!path) return IMPORT_TYPE_UNKNOWN; in=fopen(path, "r"); if (!in) return IMPORT_TYPE_UNKNOWN; if (dat_check_if_dat_file(in)) { fclose(in); return IMPORT_TYPE_DAT; } fseek(in, 0, SEEK_SET); if (fread(text, 1, 15, in) < 1) { jp_logf(JP_LOG_WARN, "fread failed %s %d\n", __FILE__, __LINE__); } if (!strncmp(text, "CSV ", 4)) { fclose(in); return IMPORT_TYPE_CSV; } fclose(in); return IMPORT_TYPE_TEXT; } /* Main import file selection window */ static gboolean cb_destroy(GtkWidget *widget) { filew = NULL; return FALSE; } static void cb_quit(GtkWidget *widget, gpointer data) { const char *sel; char dir[MAX_PREF_LEN+2]; int i; jp_logf(JP_LOG_DEBUG, "Quit\n"); sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filew)); strncpy(dir, sel, MAX_PREF_LEN); dir[MAX_PREF_LEN]='\0'; i=strlen(dir)-1; if (i<0) i=0; if (dir[i]!='/') { for (i=strlen(dir); i>=0; i--) { if (dir[i]=='/') { dir[i+1]='\0'; break; } } } set_pref(PREF_MEMO_IMPORT_PATH, 0, dir, TRUE); filew = NULL; gtk_widget_destroy(data); } static void cb_type(GtkWidget *widget, gpointer data) { glob_type_selected=GPOINTER_TO_INT(data); } static void cb_import(GtkWidget *widget, gpointer filesel) { const char *sel; struct stat statb; jp_logf(JP_LOG_DEBUG, "cb_import\n"); sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)); jp_logf(JP_LOG_DEBUG, "file selected [%s]\n", sel); /* Check to see if its a regular file */ if (stat(sel, &statb)) { jp_logf(JP_LOG_DEBUG, "File selected was not stat-able\n"); return; } if (!S_ISREG(statb.st_mode)) { jp_logf(JP_LOG_DEBUG, "File selected was not a regular file\n"); return; } glob_import_callback(filesel, sel, glob_type_selected); cb_quit(widget, filew); } static void cb_import_select_row(GtkWidget *file_clist, gint row, gint column, GdkEventButton *bevent, gpointer data) { const char *sel; struct stat statb; int guessed_type; int i; jp_logf(JP_LOG_DEBUG, "cb_import_select_row\n"); sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filew)); /* Check to see if its a regular file */ if (stat(sel, &statb)) { jp_logf(JP_LOG_DEBUG, "File selected was not stat-able\n"); return; } if (!S_ISREG(statb.st_mode)) { jp_logf(JP_LOG_DEBUG, "File selected was not a regular file\n"); return; } guessed_type=guess_file_type(sel); for (i=0; iwindow, &pw, &ph); gdk_window_get_root_origin(main_window->window, &px, &py); pw = gtk_paned_get_position(GTK_PANED(pane)); px+=40; import_record_ask_window = gtk_widget_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "title", _("Import"), NULL); gtk_window_set_default_size(GTK_WINDOW(import_record_ask_window), pw, ph); gtk_widget_set_uposition(GTK_WIDGET(import_record_ask_window), px, py); gtk_container_set_border_width(GTK_CONTAINER(import_record_ask_window), 5); gtk_window_set_modal(GTK_WINDOW(import_record_ask_window), TRUE); gtk_window_set_transient_for(GTK_WINDOW(import_record_ask_window), GTK_WINDOW(main_window)); gtk_signal_connect(GTK_OBJECT(import_record_ask_window), "destroy", GTK_SIGNAL_FUNC(cb_import_record_ask_destroy), import_record_ask_window); vbox=gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(import_record_ask_window), vbox); /* Private */ if (priv) { g_snprintf(str, sizeof(str), _("Record was marked as private")); } else { g_snprintf(str, sizeof(str), _("Record was not marked as private")); } label = gtk_label_new(str); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); /* Category */ get_pref(PREF_CHAR_SET, &char_set, NULL); l = charset_p2newj(old_cat_name, 16, char_set); g_snprintf(str, sizeof(str), _("Category before import was: [%s]"), l); g_free(l); label = gtk_label_new(str); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); l = charset_p2newj(cai->name[suggested_cat_num], 16, char_set); g_snprintf(str, sizeof(str), _("Record will be put in category [%s]"), l); g_free(l); label = gtk_label_new(str); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); /* Text window with scrollbar to display record */ temp_hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), temp_hbox, TRUE, TRUE, 0); textw = gtk_text_view_new(); textw_buffer = G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(textw))); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textw), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(textw), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textw), GTK_WRAP_WORD); scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 1); gtk_container_add(GTK_CONTAINER(scrolled_window), textw); gtk_box_pack_start_defaults(GTK_BOX(temp_hbox), scrolled_window); if (text) { gtk_text_buffer_set_text(GTK_TEXT_BUFFER(textw_buffer), text, -1); } temp_hbox = gtk_hbutton_box_new(); gtk_button_box_set_spacing(GTK_BUTTON_BOX(temp_hbox), 6); gtk_container_set_border_width(GTK_CONTAINER(temp_hbox), 6); gtk_box_pack_start(GTK_BOX(vbox), temp_hbox, FALSE, FALSE, 0); /* Import button */ button = gtk_button_new_with_label(_("Import")); gtk_box_pack_start(GTK_BOX(temp_hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_import_record_ask_quit), GINT_TO_POINTER(DIALOG_SAID_IMPORT_YES)); /* Import All button */ button = gtk_button_new_with_label(_("Import All")); gtk_box_pack_start(GTK_BOX(temp_hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_import_record_ask_quit), GINT_TO_POINTER(DIALOG_SAID_IMPORT_ALL)); /* Skip button */ button = gtk_button_new_with_label(_("Skip")); gtk_box_pack_start(GTK_BOX(temp_hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_import_record_ask_quit), GINT_TO_POINTER(DIALOG_SAID_IMPORT_SKIP)); /* Quit button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_box_pack_start(GTK_BOX(temp_hbox), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_import_record_ask_quit), GINT_TO_POINTER(DIALOG_SAID_IMPORT_QUIT)); gtk_widget_show_all(import_record_ask_window); gtk_main(); return glob_import_record_ask_button_pressed; } void import_gui(GtkWidget *main_window, GtkWidget *main_pane, char *type_desc[], int type_int[], int (*import_callback)(GtkWidget *parent_window, const char *file_path, int type)) { GtkWidget *button; GtkWidget *vbox, *hbox; GtkWidget *label; char title[256]; const char *svalue; GSList *group; int i; int pw, ph, px, py; if (filew) return; line_selected = -1; gdk_window_get_size(main_window->window, &pw, &ph); gdk_window_get_root_origin(main_window->window, &px, &py); pw = gtk_paned_get_position(GTK_PANED(main_pane)); px+=40; g_snprintf(title, sizeof(title), "%s %s", PN, _("Import")); filew = gtk_widget_new(GTK_TYPE_FILE_SELECTION, "type", GTK_WINDOW_TOPLEVEL, "title", title, NULL); gtk_window_set_default_size(GTK_WINDOW(filew), pw, ph); gtk_widget_set_uposition(filew, px, py); gtk_window_set_modal(GTK_WINDOW(filew), TRUE); gtk_window_set_transient_for(GTK_WINDOW(filew), GTK_WINDOW(main_window)); get_pref(PREF_MEMO_IMPORT_PATH, NULL, &svalue); if (svalue && svalue[0]) { gtk_file_selection_set_filename(GTK_FILE_SELECTION(filew), svalue); } glob_import_callback=import_callback; /* Set the type to match the first button, which will be set */ glob_type_selected=type_int[0]; gtk_widget_hide((GTK_FILE_SELECTION(filew)->cancel_button)); gtk_signal_connect(GTK_OBJECT(filew), "destroy", GTK_SIGNAL_FUNC(cb_destroy), filew); /* Even though I hide the ok button I still want to connect its signal */ /* because a double click on the file name also calls this callback */ gtk_widget_hide(GTK_WIDGET(GTK_FILE_SELECTION(filew)->ok_button)); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filew)->ok_button), "clicked", GTK_SIGNAL_FUNC(cb_import), filew); label = gtk_label_new(_("To change to a hidden directory type it below and hit TAB")); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->main_vbox), label, FALSE, FALSE, 0); gtk_widget_show(label); /* Quit/Import buttons */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->ok_button->parent), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_quit), filew); gtk_widget_show(button); button = gtk_button_new_with_label(_("Import")); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->ok_button->parent), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_import), filew); gtk_widget_show(button); /* File Type radio buttons */ vbox=gtk_vbox_new(FALSE, 0); hbox=gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->action_area), vbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new(_("Import File Type")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); group = NULL; for (i=0; ifile_list), "cursor_changed", GTK_SIGNAL_FUNC(cb_import_select_row), NULL); gtk_widget_show_all(vbox); gtk_widget_show(filew); } jpilot-1.8.2/i18n.h0000664000175000017500000000240312340261240010667 00000000000000/******************************************************************************* * i18n.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __I18N_H__ # define __I18N_H__ # include "config.h" # if defined(ENABLE_NLS) # include # include "gettext.h" # define _(str) gettext(str) # define N_(str) str # define C_(context, str) pgettext(context, str) # else # define _(str) str # define N_(str) str # define C_(context, str) str # endif #endif jpilot-1.8.2/install_user.h0000664000175000017500000000204712340261240012620 00000000000000/******************************************************************************* * jpilot.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __INSTALL_USER_H__ #define __INSTALL_USER_H__ #include int install_user_gui(GtkWidget *main_window); #endif jpilot-1.8.2/ChangeLog.git0000664000175000017500000145750412340262141012315 00000000000000commit 7f9b41d9ef4c040817d5c16e4bf8e602ef4955d5 Author: Judd Montgomery Date: Sat May 24 23:31:53 2014 -0400 Version 1.8.2 commit b97a68af22aeec3b8a3916fb78564108888be167 Merge: 0307636 e2f68cd Author: juddmon Date: Sat May 24 23:24:48 2014 -0400 Merge pull request #9 from juddmon/append_keyring_export added a file append option for the keepassx export commit 0307636cd6b79a8bbb4bb78148cf06da06247ad1 Merge: 721a8c9 907645e Author: juddmon Date: Sat May 24 23:23:59 2014 -0400 Merge pull request #8 from juddmon/update_copyright Changed copyright commit 907645e56fce26f7c39096e587e3ee8a8235a558 Author: Judd Montgomery Date: Sat May 24 23:03:30 2014 -0400 Changed copyright commit e2f68cdbd22b628b62a9eecea123c80af211c02c Author: Judd Montgomery Date: Sat May 24 22:41:02 2014 -0400 added a file append option for the keepassx export commit 721a8c9ea94a860d72822ed380c8d133418360ba Author: Judd Montgomery Date: Sun May 18 16:47:22 2014 -0400 Updated README.md commit b19d16fccccd8d96f4aed0449938ee4e8ce2d602 Merge: 8293a9c 067741a Author: juddmon Date: Sun May 18 16:27:46 2014 -0400 Merge pull request #7 from juddmon/add_keepassx_export fixed keepassx export commit 067741ab3f5ea5175f1244a9417db9d8bc104122 Author: Judd Montgomery Date: Sun May 18 16:26:57 2014 -0400 fixed keepassx export commit 8293a9ca7663d32d2b66f4d76f22c929d222cac7 Author: Judd Montgomery Date: Sun May 18 16:23:12 2014 -0400 Changed ChangeLog.cvs to ChangeLog.git commit b43acb7cddab801a381d558f550ccb52d4e6a851 Merge: 5bd601f 4ee568a Author: Judd Montgomery Date: Sat May 17 23:40:30 2014 -0400 Merge branch 'master' of https://github.com/juddmon/jpilot commit 5bd601f417b72e8dcd7a48f2b4cf0b97bd7db0bc Author: Judd Montgomery Date: Sat May 17 23:39:26 2014 -0400 Updated ChangeLog commit 4ee568aa35e76ad61fdbfa58f16f858a333181c8 Author: juddmon Date: Sat May 17 23:19:07 2014 -0400 Update README.md commit 5f0e53a76b548bbf655047cb54f5150ff51b1c41 Merge: b5b6655 168803c Author: Judd Montgomery Date: Sat May 17 23:16:56 2014 -0400 Merge branch 'master' of https://github.com/juddmon/jpilot commit b5b66554a58b936185d15d8aa3250ec2beca402a Author: Judd Montgomery Date: Sat May 17 23:16:45 2014 -0400 Updated commit 168803c473a74b4a1828a0999e9f907c08d98966 Author: juddmon Date: Sat May 17 23:13:45 2014 -0400 Update README.md commit dad0a8d87fec18180f35b4fe4f3656590e985770 Author: Judd Montgomery Date: Sat May 17 22:21:32 2014 -0400 Changed version for a release commit 282ab3f6978c5fafe102019eb5d98e3eb024298f Author: Judd Montgomery Date: Sat May 17 21:59:14 2014 -0400 Keep compiler from complaining commit 3e33cd8e4086d5334e88e45520afccac8f0ac0db Merge: 6dbaa42 67868b7 Author: juddmon Date: Sat May 17 21:50:29 2014 -0400 Merge pull request #6 from juddmon/fix_another_manana Fix another manana commit 6dbaa4257de75c0f9cc819a7e26a9ed525e1f96d Merge: 90deb1d 688fe0f Author: juddmon Date: Sat May 17 21:46:43 2014 -0400 Merge pull request #5 from juddmon/avoid_infinite_loop Avoid a loop when logging commit 688fe0f1351296073a8482f140250bca95d5e69c Author: Judd Montgomery Date: Sat May 17 21:44:36 2014 -0400 Avoid a loop when logging commit 67868b767329edb186998fc81fd555877e68551b Author: Judd Montgomery Date: Sat May 17 21:32:26 2014 -0400 removed more mananas commit d7ab4724e2a6fdb9067d4b039891dbb751e6f330 Author: Judd Montgomery Date: Tue Apr 8 00:48:08 2014 -0400 Added more debug because some of these are normal commit 3002fd64daa16649ccf793785442fe2650ccd94a Author: Judd Montgomery Date: Tue Apr 8 00:38:31 2014 -0400 Added more debug because some of these are normal commit 8a7065a6349dee6d385b66adc848633786eebfe5 Author: Judd Montgomery Date: Mon Apr 7 23:44:04 2014 -0400 Fixed Compiler warnings on xubuntu 14.04 commit 90deb1d5474bb0633c71549a24669672a218f10d Author: Judd Montgomery Date: Sat Apr 5 18:31:56 2014 -0400 Added README.md commit bc1701e5eb5177e6acd7e01eed348b0ad8ca4f8e Merge: 9a23af6 83d6aa7 Author: juddmon Date: Sat Apr 5 18:16:16 2014 -0400 Merge pull request #3 from juddmon/add_keepassx_export READY: Added keepassx export support commit 9a23af68b42aae4f4e42adebc0dc1b84665e90fa Merge: d696be9 a3b89e9 Author: juddmon Date: Sat Apr 5 18:15:05 2014 -0400 Merge pull request #2 from juddmon/change_mananaDB READY:Change manana db commit a3b89e96c0056b8a6859166c98b1d411c5785a95 Author: Judd Montgomery Date: Sat Apr 5 18:14:11 2014 -0400 sorted .gitignore commit d867fa9a2b3a6b8c120d929abab2d33d6520ba46 Author: Judd Montgomery Date: Sat Apr 5 18:12:34 2014 -0400 READY: Changed the name of Ma\303\261ana to Manana commit e4c372ff8f1051b0ee353b40b47b094e0586e59d Author: Judd Montgomery Date: Sat Apr 5 18:00:42 2014 -0400 READY: Changed the name of Ma\303\261ana to Manana commit 83d6aa7c89d91981ff5ee4efe299930088f9dfb0 Author: Judd Montgomery Date: Sat Apr 5 17:52:16 2014 -0400 READY:Added keepassx export support commit d696be9f68270eac093dd9d00bdb1b9e8155690d Merge: 834cd72 26eabb5 Author: juddmon Date: Sat Apr 5 17:16:50 2014 -0400 Merge pull request #1 from juddmon/remove_cvs_headers READY: Remove cvs headers commit 26eabb5b2e36fec34ce60ac548973ca6325604a3 Author: Judd Montgomery Date: Sat Apr 5 17:15:04 2014 -0400 undo commit commit 379f17ef76c0ad87972e3865ac7c592316380b7d Author: Judd Montgomery Date: Sat Apr 5 17:02:03 2014 -0400 Remove CVS Id headers commit 834cd72123a06384b12fed36b93541699c9c4ce7 Author: Judd Montgomery Date: Tue Oct 23 01:59:55 2012 +0000 Fixed calendar being centered commit 4dd48529a2cee0237d63ebdceb7d1d8d408793fa Author: Judd Montgomery Date: Tue Oct 23 01:57:58 2012 +0000 Added/improved B-Folders export commit e1573ed92c8be99332f29631968f440594a45447 Author: Ludovic Rousseau Date: Sun Jan 8 12:41:29 2012 +0000 Fix some fuzzy strings commit 1fe4c2ba5df86b3d5ff952e58764a1b0195caef9 Author: Ludovic Rousseau Date: Sun Jan 8 12:39:08 2012 +0000 Fix typo commit 23dfb2e8b164f1276f30ab1cd33386611d6504a3 Author: Judd Montgomery Date: Thu Dec 22 03:43:07 2011 +0000 Added export for B-Folders CSV commit 2369b2f6fe65493b159829fe40e7d31245d1c129 Author: Judd Montgomery Date: Thu Dec 22 00:46:49 2011 +0000 Added export option for b-folders commit 944cece5cc3cb522e956a29c44fe97d71d4ff7ce Author: Judd Montgomery Date: Fri Nov 11 17:37:23 2011 +0000 fixed typo for man page Makefile commit 0da564f4bc60967cfab99381bb0841bf42f65357 Author: Judd Montgomery Date: Fri Nov 11 02:38:37 2011 +0000 I guess it is Gmail, not GMail commit c7b03a6f5c7957fb1f6ea76edcb40c33c4d8b908 Author: Judd Montgomery Date: Fri Nov 11 02:25:02 2011 +0000 Fixed garbage characters in UID of VCARD output optimized for Gmail/Android import. commit 1fe3388831205da4b3a705f35389d5a280f389e0 Author: Rik Wehbring Date: Mon Jun 6 17:14:45 2011 +0000 Fix vCard export address field name to ADR per RFC2426 commit 728148a76af2b0bf20f46a2b198ae8bb0e335143 Author: Rik Wehbring Date: Tue Apr 12 17:16:09 2011 +0000 Derive jpilot-merge.1 man page from jpilot-merge.man precursor as other man pages do. commit 23af39bc193c3358e18c16d8a0f255cfa92ec5bb Author: Rik Wehbring Date: Tue Apr 12 05:47:49 2011 +0000 Bump version number to a development branch (1.9.2) commit 6571ae85f0d03b4bbb9b800a07131806ff8bb82d Author: Rik Wehbring Date: Tue Apr 12 05:44:19 2011 +0000 Add jpilot-merge to RedHat package .spec file commit b677706c87f59c1e39cbd67a266715185be32af6 Author: Rik Wehbring Date: Tue Apr 12 05:36:38 2011 +0000 Rename merge.c to jpilot-merge.c commit 6f5f1397e44b104698f8fe0d8f211a89e3b49c95 Author: Rik Wehbring Date: Tue Apr 12 04:27:51 2011 +0000 Enable internationalization (i18n) for strings in jpilot-merge application. commit 2d34bac6085aad6cabab81de8538214992428469 Author: Rik Wehbring Date: Tue Apr 12 04:08:07 2011 +0000 Rewrite jpilot-merge man page to reflect changes to help text. commit ff75cd0f3daf6a409006462ce2d7df9906036a9a Author: Rik Wehbring Date: Tue Apr 12 04:07:32 2011 +0000 Untabify code, Add separators between code blocks, Rewrite help text. commit 9483a7d542b710e900797097c96c583495408db2 Author: Judd Montgomery Date: Wed Apr 6 15:04:39 2011 +0000 Added a header commit c891ef58934eaa9769ce3e3fcec1805e99ec5bcd Author: Ludovic Rousseau Date: Wed Apr 6 14:28:59 2011 +0000 Also distribute jpilot-merge.1 commit f88e2bd9a54e1a105b3e38207cc3c953c550a333 Author: Ludovic Rousseau Date: Wed Apr 6 13:17:50 2011 +0000 Add jpilot-merge.1 commit aa7fe1a9a05b35faa957d602bc2ee29725efebca Author: Ludovic Rousseau Date: Wed Apr 6 13:11:55 2011 +0000 Add missing manpage commit cfd90fbddd585ae6727e955e6587b6415aaf44e0 Author: Ludovic Rousseau Date: Wed Apr 6 13:03:56 2011 +0000 In file included from jpilot.c:69: icons/appl_menu_icons.h:23: warning: ���static��� is not at beginning of declaration icons/appl_menu_icons.h:78: warning: ���static��� is not at beginning of declaration icons/appl_menu_icons.h:140: warning: ���static��� is not at beginning of declaration icons/appl_menu_icons.h:227: warning: ���static��� is not at beginning of declaration commit b90e5760416bff867b8ef98be2963bffa386b25e Author: Ludovic Rousseau Date: Wed Apr 6 12:58:50 2011 +0000 jpilot.c:655: warning: no previous prototype for ���cb_cancel_sync��� commit 16c06dfe49300d85aa5b9c0afdfef6372e8161b4 Author: Ludovic Rousseau Date: Wed Apr 6 12:51:39 2011 +0000 memo_gui.c:61: warning: redundant redeclaration of ���glob_tooltips��� stock_buttons.h:25: warning: previous declaration of ���glob_tooltips��� was here commit d0c92fe18c4e20d5ce155412e0e3460315be3445 Author: Ludovic Rousseau Date: Wed Apr 6 12:47:09 2011 +0000 todo_gui.c:64: warning: redundant redeclaration of ���glob_tooltips��� stock_buttons.h:25: warning: previous declaration of ���glob_tooltips��� was here todo_gui.c:105: warning: redundant redeclaration of ���todo_update_clist��� todo.h:52: warning: previous declaration of ���todo_update_clist��� was here commit 4e89f2e40e2145f0f7c578886332455395d0c05d Author: Ludovic Rousseau Date: Wed Apr 6 12:43:45 2011 +0000 Add "const" to avoid compiler warnings commit aca4aeb61c01ee2cc62001e9e6f5b36a9ab9cc39 Author: Ludovic Rousseau Date: Wed Apr 6 12:02:28 2011 +0000 Fix compiler warnings: prefs_gui.c:56: warning: initialization discards qualifiers from pointer target type commit 3cdf887b30eeca2a44f10e383e6ce1d72a6e654a Author: Ludovic Rousseau Date: Wed Apr 6 12:01:03 2011 +0000 Fix compiler warning prefs_gui.c: In function ���cb_prefs_gui���: prefs_gui.c:439: warning: nested extern declaration of ���skip_plugins��� prefs_gui.c:439: warning: redundant redeclaration of ���skip_plugins��� prefs_gui.c:49: warning: previous declaration of ���skip_plugins��� was here commit 8ef011d90c38d9e034e5bbb003c0be365af8f09c Author: Ludovic Rousseau Date: Wed Apr 6 11:58:47 2011 +0000 Fix compiler warning print.c: In function 'print_dayview': print.c:200: warning: passing argument 3 of 'puttext' discards qualifiers from pointer target type commit d0f8fd40e665411e8e9e47941dc7864b2bb8081a Author: Ludovic Rousseau Date: Wed Apr 6 11:56:52 2011 +0000 Use const to fix a lot of compiler warnings: print.c:61: warning: initialization discards qualifiers from pointer target type commit 019488b0fb9c7e4b6c2eae205a99ba8cb23c1df8 Author: Ludovic Rousseau Date: Wed Apr 6 11:54:57 2011 +0000 Do not use inline and let the compiler optimise the code itself Fix a lot of compiler warnings like: utils.h:356: warning: inlining failed in call to 'set_tooltip': the function body must appear before caller datebook_gui.c:4944: warning: called from here commit 1a6ae40993d37f02c1da509c33851ab73ea90d44 Author: Ludovic Rousseau Date: Wed Apr 6 11:47:38 2011 +0000 Fix compiler warning: merge.c: In function 'merge_pdb_file': merge.c:206: warning: comparison between signed and unsigned commit 681f38f45d2722c2df5e44d99ae1d39fea4fe726 Author: Ludovic Rousseau Date: Wed Apr 6 11:43:18 2011 +0000 Add $Id:$ commit 46a89b71143e867b86ad316ed2155a0bb2f5dca5 Author: Ludovic Rousseau Date: Wed Apr 6 11:42:27 2011 +0000 Declare pc_read_next_rec() in the header file now that it is used by merge.c commit acd64f76ba831af9714f6b332c73859daa415284 Author: Ludovic Rousseau Date: Wed Apr 6 11:39:41 2011 +0000 Fix 2 compiler warnings: merge.c: At top level: merge.c:48: warning: no previous prototype for 'read_pc_recs' merge.c:85: warning: no previous prototype for 'merge_pdb_file' commit 024cdea4c018cb8934bdab25b517afa8482b466e Author: Ludovic Rousseau Date: Wed Apr 6 11:38:07 2011 +0000 Fix 2 compiler warnings: merge.c: In function 'jp_pack_Contact': merge.c:36: warning: control reaches end of non-void function merge.c: In function 'edit_cats': merge.c:35: warning: control reaches end of non-void function commit 12d969fa00d63e4e393cd13e78c07176657f90cb Author: Judd Montgomery Date: Tue Apr 5 20:25:19 2011 +0000 Typo in version number, should be 1.8.1 commit caf597612cf37eae2104dcfc0536e92c28d7eca8 Author: Judd Montgomery Date: Tue Apr 5 20:06:18 2011 +0000 updated ChangeLog commit 47790a5761442401aa65918d33bdafa1e0cb778f Author: Judd Montgomery Date: Tue Apr 5 20:00:37 2011 +0000 Need pc_read_next_rec for merge.c commit 57657da0b1d37f7e96a595d345e4bf54dfb21870 Author: Judd Montgomery Date: Tue Apr 5 19:49:34 2011 +0000 Added merge.c commit 5a03108c031bf0f200761a406b5f48cf6fea6de6 Author: Judd Montgomery Date: Tue Apr 5 19:49:10 2011 +0000 Initial write commit ebfee566757823aa2b92725230514eb7a35713aa Author: Judd Montgomery Date: Tue Apr 5 19:14:20 2011 +0000 updated version commit 8da62b729033911575768f4972df02cd2a4ece64 Author: Rik Wehbring Date: Tue Apr 5 16:45:25 2011 +0000 Restrict Ctrl+E shortcut to only note field in datebook and todo apps. commit fcfc81e9044332eef4c3198dcbab35a765a8e781 Author: Rik Wehbring Date: Tue Apr 5 16:33:16 2011 +0000 Prevent flicker when adding new record. commit 9dac5cbd8dda6ca4996b6baecbd33dff23bbcb15 Author: Rik Wehbring Date: Tue Mar 15 18:59:36 2011 +0000 Add external editor capability to datebook, addressbook, and todo GUIs. commit 79b7e03fb1a5dd6f816d50ea1077930219730448 Author: Rik Wehbring Date: Mon Mar 14 23:51:37 2011 +0000 Use more secure mkstemp, rather than tmpnam, for temporary external editor file. commit c3e5225e36c8c0264010826b37661a5d046df86f Author: Rik Wehbring Date: Mon Mar 14 23:50:59 2011 +0000 Silence compiler warning abount 'const' attribute commit 6ee827ce5bddec3a9286c8d4556041dda284637a Author: Rik Wehbring Date: Thu Feb 10 23:28:07 2011 +0000 Add external editor capability for editing memo text. commit 3fabc851b4c07bcb0c5474d970066f2163654651 Author: Ludovic Rousseau Date: Wed Feb 9 22:09:29 2011 +0000 get_home_file_name(): use _const_ char * for filename commit 45be25876990b0a2c757083b02be03a8ee734824 Author: Ludovic Rousseau Date: Wed Feb 9 21:56:20 2011 +0000 Fix fuzzy strings commit 5154694b57a351901b9f717f4b7ead91b5e8442d Author: Ludovic Rousseau Date: Wed Feb 9 21:38:55 2011 +0000 Remove dead code jpilot-sync.c:126:4: warning: Value stored to 'done' is never read done=cons_errors=0; ^ ~~~~~~~~~~~~~ jpilot-sync.c:126:9: warning: Although the value stored to 'cons_errors' is used in the enclosing expression, the value is never actually read from 'cons_errors' done=cons_errors=0; ^ ~ commit 000b711febb1d9d0123046434a65d4eb06483f8c Author: Ludovic Rousseau Date: Wed Feb 9 21:37:28 2011 +0000 Avoid complex pointer manipulations jpilot-dump.c:768:4: warning: Address of stack memory associated with local variable 'ai' is still referred to by the global variable 'glob_PAddress_app_info' upon returning to the caller. This will be a dangling reference return EXIT_SUCCESS; ^ jpilot-dump.c:1032:4: warning: Address of stack memory associated with local variable 'ai' is still referred to by the global variable 'glob_Ptodo_app_info' upon returning to the caller. This will be a dangling reference return EXIT_SUCCESS; ^ jpilot-dump.c:1106:4: warning: Address of stack memory associated with local variable 'ai' is still referred to by the global variable 'glob_PMemo_app_info' upon returning to the caller. This will be a dangling reference return EXIT_SUCCESS; ^ commit 16f6e99fae8d2eb3653c4075783ff2297ec0af56 Author: Ludovic Rousseau Date: Wed Feb 9 21:31:39 2011 +0000 Fix a potential crash utils.c:408:8: warning: Dereference of null pointer (loaded from variable 'Preturn_code') if (*Preturn_code==CAL_DONE) { ^~~~~~~~~~~~~ commit 7a7b08ff6375507294cd80215f843ad0ffe75802 Author: Ludovic Rousseau Date: Wed Feb 9 21:29:55 2011 +0000 Fix a possible crash password.c:360:15: warning: Field access results in a dereference of a null pointer (loaded from variable 'Pdata') if (Pdata->button_hit==DIALOG_SAID_1) { ~~~~~ ^ commit 9e40b0f6a06a1564d147d523b24336e2e876c6e1 Author: Ludovic Rousseau Date: Wed Feb 9 21:26:43 2011 +0000 Remove dead code dialer.c:59:4: warning: Value stored to 'Pdata' is never read Pdata = gtk_object_get_data(GTK_OBJECT(w), "dialog_data"); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit 17d43a1066a3236f6b353aadcf2970bace412938 Author: Ludovic Rousseau Date: Wed Feb 9 21:23:53 2011 +0000 Remove dead code datebook_gui.c:651:13: warning: Value stored to 'index' is never read index=0; ^ ~ datebook_gui.c:580:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:576:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:570:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:565:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:561:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:552:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:547:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:542:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:538:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:534:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:530:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:519:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:507:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:502:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:493:13: warning: Value stored to 'ret' is never read ret = read_csv_field(in, location, sizeof(location)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:484:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, note, sizeof(note)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:476:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, description, sizeof(description)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:469:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:452:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:429:4: warning: Value stored to 'attrib' is never read attrib=0; ^ ~ datebook_gui.c:2059:4: warning: Value stored to 'now' is never read now = localtime(<ime); ^ ~~~~~~~~~~~~~~~~~ datebook_gui.c:2488:10: warning: Value stored to 'ret' is never read ret = db3_parse_tag(temp_cel->mcale.cale.note, &db3_type, &db4); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook_gui.c:2486:7: warning: Value stored to 'ret' is never read ret=0; ^ ~ datebook_gui.c:3342:18: warning: Although the value stored to 'sorted_position' is used in the enclosing expression, the value is never actually read from 'sorted_position' index = sorted_position = 0; ^ ~ datebook_gui.c:3792:4: warning: Value stored to 'day_changed' is never read day_changed = mon_changed = year_changed = 0; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit f1f71c527d98cb2cbc6d2c564137d24b7c8a3955 Author: Ludovic Rousseau Date: Wed Feb 9 21:18:38 2011 +0000 Remove dead code datebook.c:72:7: warning: Value stored to 'num' is never read num = get_days_calendar_events2(&cel, NULL, 2, 2, 1, CATEGORY_ALL, NULL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ datebook.c:70:7: warning: Value stored to 'num' is never read num = get_days_calendar_events2(&cel, NULL, 2, 2, 1, category, NULL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit b6662d844240830a7a3569139cfa07a2113de2f5 Author: Ludovic Rousseau Date: Wed Feb 9 21:16:56 2011 +0000 Check for a NULL pointer only once and return in error dat.c:293:13: warning: Field access results in a dereference of a null pointer (loaded from variable 'appt') appt->repeatForever=FALSE; ~~~~ ^ commit b89acd47adb33aeca026c0a6cfc01881697a29d3 Author: Ludovic Rousseau Date: Wed Feb 9 21:11:04 2011 +0000 Correctly initialize a variable dat.c:291:9: warning: The left operand of '==' is a garbage value if (t==0x749e77bf) { ~^ commit 97df10ae0e2eecd02b2897beeb7af5e526d8adc3 Author: Ludovic Rousseau Date: Wed Feb 9 21:09:02 2011 +0000 Remove dead code dat.c:194:4: warning: Value stored to 'l' is never read l=0; ^ ~ commit 1dbb183e86bba17c2f07c58a07dd6fe17f899222 Author: Ludovic Rousseau Date: Wed Feb 9 21:07:42 2011 +0000 Partly reverse previous patch The value is used if EDIT_CATS_DEBUG is defined commit 5538ced1a23b8020dec043048954dbf01de7df48 Author: Ludovic Rousseau Date: Wed Feb 9 21:04:44 2011 +0000 Remove dead code category.c:524:16: warning: Value stored to 'r' is never read r = edit_cats_delete_cats_pdb(Pdata->db_name, catnum); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ category.c:520:16: warning: Value stored to 'r' is never read r = edit_cats_delete_cats_pc3(Pdata->db_name, catnum); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ category.c:511:16: warning: Value stored to 'r' is never read r = edit_cats_change_cats_pdb(Pdata->db_name, catnum, 0); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ category.c:507:16: warning: Value stored to 'r' is never read r = edit_cats_change_cats_pc3(Pdata->db_name, catnum, 0); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ category.c:462:10: warning: Value stored to 'r' is never read ...r = gtk_clist_get_text(GTK_CLIST(Pdata->clist), Pdata->selected, 0, &text)... ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit 814e9ea40cf5aa18216089964b7ef3084c132810 Author: Ludovic Rousseau Date: Wed Feb 9 21:03:13 2011 +0000 Avoid a potential crash alarms.c:668:49: warning: Dereference of null pointer alarms_remove_from_to_list(temp_al->mcale.unique_id); ^ commit 0624316baa44e6efd5502925e40992967f553764 Author: Ludovic Rousseau Date: Wed Feb 9 20:59:21 2011 +0000 Remove dead code alarms.c:235:4: warning: Value stored to 'group' is never read group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio2)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alarms.c:862:7: warning: Value stored to 't_prev' is never read t_prev=t_future=0; ^ ~~~~~~~~~~ alarms.c:862:14: warning: Although the value stored to 't_future' is used in the enclosing expression, the value is never actually read from 't_future' t_prev=t_future=0; ^ ~ alarms.c:823:10: warning: Value stored to 't_begin' is never read t_begin = mktime_dst_adj(&(temp_al->mcale.cale.begin)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit ca37f258439575a23b5013645f7afbaec0400995 Author: Ludovic Rousseau Date: Wed Feb 9 20:56:00 2011 +0000 Remove dead code address_gui.c:729:10: warning: Value stored to 'attrib' is never read attrib=0; ^ ~ address_gui.c:725:13: warning: Value stored to 'index' is never read index=0; ^ ~ address_gui.c:599:13: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:656:16: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:637:16: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:626:16: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:608:16: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:589:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:572:10: warning: Value stored to 'ret' is never read ret = read_csv_field(in, text, sizeof(text)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ address_gui.c:1013:10: warning: Value stored to 'address_i' is never read address_i=phone_i=IM_i=0; ^ ~~~~~~~~~~~~~~ address_gui.c:1013:20: warning: Although the value stored to 'phone_i' is used in the enclosing expression, the value is never actually read from 'phone_i' address_i=phone_i=IM_i=0; ^ ~~~~~~ address_gui.c:1013:28: warning: Although the value stored to 'IM_i' is used in the enclosing expression, the value is never actually read from 'IM_i' address_i=phone_i=IM_i=0; ^ ~ address_gui.c:2511:17: warning: Although the value stored to 'count' is used in the enclosing expression, the value is never actually read from 'count' total_read = count = 0; ^ ~ address_gui.c:2802:15: warning: Although the value stored to 'sorted_position' is used in the enclosing expression, the value is never actually read from 'sorted_position' index = sorted_position = 0; ^ ~ address_gui.c:3112:31: warning: Although the value stored to 'i' is used in the enclosing expression, the value is never actually read from 'i' for (temp_cl = *cont_list, i=0; temp_cl; temp_cl=temp_cl->next) { ^ ~ commit 490eb6d5f88161a846644a17b5603affc61aceba Author: Ludovic Rousseau Date: Wed Feb 9 20:48:34 2011 +0000 Avoids a potential crash keyring.c:1751:15: warning: Field access results in a dereference of a null pointer (loaded from variable 'Pdata') if (Pdata->button_hit==DIALOG_SAID_1) { ~~~~~ ^ commit e9492dd1045522ecec9f6b1f6c9453b3abfdab9d Author: Ludovic Rousseau Date: Wed Feb 9 20:43:23 2011 +0000 Remove dead code keyring.c:207:4: warning: Value stored to 'record' is never read record += 2; ^ ~ keyring.c:247:4: warning: Value stored to 'record' is never read record++; ^~~~~~~~ keyring.c:1371:4: warning: Value stored to 'num' is never read num = get_keyring(keyring_list, category); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyring.c:1511:7: warning: Value stored to 'index' is never read index = sorted_position = 0; ^ ~~~~~~~~~~~~~~~~~~~ commit 046c5856763b7b6c44efbcefee02442769d783ea Author: Ludovic Rousseau Date: Wed Feb 9 20:41:46 2011 +0000 Remove dead code synctime.c:116:4: warning: Value stored to 'r' is never read r = dlp_SetSysDateTime(sd, ltime); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commit 334c3e9ad8c9a614672efcdd220120261cc06cc2 Author: Ludovic Rousseau Date: Wed Feb 9 20:40:43 2011 +0000 Remove dead code expense.c:1224:7: warning: Value stored to 'index' is never read index = sorted_position = 0; ^ ~~~~~~~~~~~~~~~~~~~ commit 53232e4c2312d79acd7acaf0f132976dcd7c1327 Author: Ludovic Rousseau Date: Wed Feb 9 20:36:45 2011 +0000 Use _const_ char * for database names to avoid compiler warnings commit 102ae285753c3d72a0fbcef9c5b0c9d7ea1698a6 Author: Rik Wehbring Date: Wed Nov 10 03:57:48 2010 +0000 Restore option to disable tooltips lost with GTK 2.12 commit 2ea5cff4366341fd1053ea2d100d2c88fdc3163f Author: Rik Wehbring Date: Mon Nov 8 22:35:53 2010 +0000 Sync "Today:" label with wall time on GUI startup to prevent label from being off by up to 59 seconds. commit 3c098d6ee905d27a53b8b6384472e28802728805 Author: Rik Wehbring Date: Mon Nov 8 22:31:39 2010 +0000 Use macro CLOCK_TICK in place of hardcoded constant 1000 commit 316ab36cf85ae6b883d19a2de29a3608b1cc0d33 Author: Rik Wehbring Date: Sat Nov 6 23:25:06 2010 +0000 Add ability to install files directly to SDcard. Directory is currently hardcoded to the Launcher directory Treo uses for .prc/.pdb files. However, any file, such as a .jpg *can* be transferred and then moved on the Palm with a utility such as FileZ. commit 2146ed0b7837034909a32d5a64bc031d139f7c52 Author: Rik Wehbring Date: Sat Nov 6 21:33:25 2010 +0000 Disable Serial Rate menu if port is USB. commit a0680afd920a6ea9f7aaedb66712e49ce65e3b62 Author: Rik Wehbring Date: Sat Nov 6 06:59:58 2010 +0000 Add Alt+# keyboard shortcut to set priority for ToDo items. commit c5ff492618a512e8655430e5d73f302cc1f9cb6a Author: Rik Wehbring Date: Sat Nov 6 06:18:55 2010 +0000 Change preference GUI label to "Sync Rate" to match "Sync Port" commit aad05c02cbc8de5829fe26f4d695c06250860018 Author: Rik Wehbring Date: Sat Nov 6 06:17:27 2010 +0000 Adjust spacing of items in popup alarm window for better looks. commit cd7f63d836cf380bb5f56c68b61bf4e0ffdc3c19 Author: Rik Wehbring Date: Fri Nov 5 16:57:19 2010 +0000 Add some m4 files installed by automake to the .cvsignore list. commit 0fffa561467842cffe4da6d9869519e9c6555b60 Author: Rik Wehbring Date: Fri Oct 29 04:22:22 2010 +0000 Fix newly introduced bug where phone type menus were always set to default. commit 5ceaa01f10ef11c740692ef378400c571e5aa940 Author: Rik Wehbring Date: Sat Oct 23 04:57:46 2010 +0000 Code cleanup: Use NULL for the unused parameter in get_pref rather than dummy variable. commit 8bc23b46869d9b4fb85acd35598df0bbb8aa6903 Author: Rik Wehbring Date: Sat Oct 23 04:25:47 2010 +0000 Avoid warning by not trying to log non-utf8 text to GUI. commit 89f999628ac8f95479dd12fe5c66e45e92bdb602 Author: Rik Wehbring Date: Fri Oct 22 22:21:02 2010 +0000 Add "Future" button to repeating event modification dialog. commit cba460cfc4c0381fea4d54feee061e8ec43741d8 Author: Rik Wehbring Date: Tue Oct 19 00:34:19 2010 +0000 Avoid valgrind memory error on unitialized value in signal handler. commit 38560d29597738786dc790b3807c105c1067ca2c Author: Rik Wehbring Date: Tue Oct 19 00:33:39 2010 +0000 Properly call time() before using localtime() call in print.c commit c5c3f97ace910312ce15f03afa3548cb2c56f69a Author: Rik Wehbring Date: Tue Oct 19 00:11:09 2010 +0000 Prevent leaking of appt. time in masked calendar events. commit 084c67e1adbd9409d624c232f6e7f465df67420b Author: Rik Wehbring Date: Tue Oct 19 00:00:09 2010 +0000 Update plugin help screens to look like J-Pilot main help screen. Same string is easier for i18n. commit 049367e64cec957f957e398311dcbbd4a81b6327 Author: Rik Wehbring Date: Mon Oct 18 05:01:06 2010 +0000 Correct iCal export for repeating events with an end date in jpilot-dump. New RFC5445, which supercedes RFC2445, specifies that end dates are inclusive of the final occurrence of the event. This resolves Bugzilla 2008 and 2021. commit eeb5160bc8a0c86266270d2d9e1b10f0905d85d6 Author: Rik Wehbring Date: Mon Oct 18 04:55:45 2010 +0000 Ensure User Name is correctly converted from Palm character set to host set for display. commit b3be22cf749ab7aff60b13273f7966b68e85dc2c Author: Rik Wehbring Date: Sat Oct 16 22:49:25 2010 +0000 Update calendar sort to use alphabetical sort after trying timed/untimed or start of event. Update todo_sort to use different code to produce same result. commit bb7693df7be89beaaa77d5d6b2c61328252f8c47 Author: Rik Wehbring Date: Sat Oct 16 04:03:47 2010 +0000 Prevent data leaking through for masked records. commit 53f4d6be0b602ad657d368f173a954ae31dad4a3 Author: Rik Wehbring Date: Fri Oct 15 23:50:07 2010 +0000 Use static keyword to remove file global variables from application global namespace. commit 0a63f9dd238c5fe259fdb53410eb230194c2344f Author: Rik Wehbring Date: Fri Oct 15 23:03:40 2010 +0000 Make non-global functions static in alarms.c commit d225ed51774cf919531e23df1fe98406bc19cbd8 Author: Rik Wehbring Date: Fri Oct 15 16:42:14 2010 +0000 Change functions to static prototypes to avoid polluting global namespace. commit aa00a38e6f6ad779f957913a30e528cf2924fd98 Author: Rik Wehbring Date: Fri Oct 15 14:26:03 2010 +0000 Reduce flicker when adding new Calendar record caused by forcing clist_row_selected to 0 commit 0b71824cec360c7fdaae62d626f76b83fd192c8a Author: Rik Wehbring Date: Fri Oct 15 04:36:12 2010 +0000 Add cancel sync button capability for Restore Handheld commit 2c1ade9abb0c669179abbfab819c20a760086a0b Author: Rik Wehbring Date: Fri Oct 15 04:34:39 2010 +0000 Ignore suspend/resume events which also cause SIGCHLD signals, but should not trigger cb_cancel_sync code. commit 32abe3d91baf1857c89c26b031cc95f4edf752a7 Author: Rik Wehbring Date: Fri Oct 15 03:28:59 2010 +0000 Add "cancel sync" button feature to install user function commit 88ba675cbf699c60ae95e467c0b00c09c2ce32a4 Author: Rik Wehbring Date: Fri Oct 15 03:23:53 2010 +0000 Move fix for lack of fork() on Mac OS to sync.c where it can catch all paths to the fork command. commit 64ee51d8515070f89308acd496e1a74b26d07e16 Author: Rik Wehbring Date: Fri Oct 15 01:25:23 2010 +0000 Plug memory leak with masked records for Contacts. commit 1a6cd29a500d11b821c37abc8db8482dc5819d5d Author: Rik Wehbring Date: Thu Oct 14 22:51:10 2010 +0000 Add newline to warning message about UTF8 conversion for readability commit 5d4198104cc673a787b0119cbf3b8c4786cf5380 Author: Rik Wehbring Date: Thu Oct 14 22:47:32 2010 +0000 Rename obsolete "Serial Port" in menus to "Sync Port" commit f46ae5fd5d89cf3b6907ee4c5c2f4fe56e9d80f0 Author: Rik Wehbring Date: Thu Oct 14 05:16:42 2010 +0000 Fix memory leak across forked process in sync. commit b02057c060e0da18b4bbe7a99bb50629e365b2e6 Author: Rik Wehbring Date: Thu Oct 14 04:47:04 2010 +0000 Add location and category fields to Calendar iCal export. commit 64d1582640a9af045773563adb8a096144b43307 Author: Rik Wehbring Date: Thu Oct 14 04:43:52 2010 +0000 Use RFC-mandated end-of-line sequence CRLF for iCal export. commit 9ccd8b2d61340d176c1566411318dee97705d945 Author: Rik Wehbring Date: Wed Oct 13 03:19:00 2010 +0000 Change indenting to conform to code default. Only non-functional changes made code base. commit 04f87ccabac990417db01ca0b71070c0575a0a8e Author: Rik Wehbring Date: Tue Oct 12 20:36:54 2010 +0000 Use static keyword to minimize application-wide globals and create just file-wide globals commit 02c75813c029d47562903ba82c6f553b79cf1458 Author: Rik Wehbring Date: Tue Oct 12 18:04:36 2010 +0000 Avoid invalid memory lookup on unitialized array. commit 25945539b0dfdcb5e16cd0eae05a63b4eac5a8f3 Author: Rik Wehbring Date: Tue Oct 12 05:22:46 2010 +0000 Use existing plugin function to simplify keyring.c commit 63af1d2d645383d7af294012a17ea1eb2a216b1d Author: Rik Wehbring Date: Tue Oct 12 03:25:38 2010 +0000 Restore regular sync icon after successful sync. Fixes bug introduced with "cancel sync" button. commit 2d340bb625d12fdd005ab81b36d0a0af7c3735cb Author: Rik Wehbring Date: Tue Oct 12 00:39:12 2010 +0000 Rephrase help string for jpilot-dump to active voice commit 49ee43838c18d5a3e6bcc3830d0cfd4cc4c0a02a Author: Rik Wehbring Date: Tue Oct 12 00:27:43 2010 +0000 Fix memory leak with embedded ToDo clist in Datebook GUI commit ce6a7706a807e5a40b99b0c571482e3693feb41d Author: Rik Wehbring Date: Tue Oct 12 00:07:15 2010 +0000 Add i18n translation capability to jpilot-sync code. commit 76a85b1e35b52cd5e0ef58e08f10dc012e1d3911 Author: Rik Wehbring Date: Sun Oct 10 15:10:07 2010 +0000 Add '-s' option to first line of jpilot help string. commit 2de12dd41c447d4f196f95c88e5064863bb3ba75 Author: Rik Wehbring Date: Sun Oct 10 15:05:03 2010 +0000 Add documentation for -s command line option to help text output. commit 1d65028ac173906fe32532a88c6f8574b655afc0 Author: Ludovic Rousseau Date: Sun Oct 10 10:18:40 2010 +0000 Fix fuzzy strings commit 5b8c28c5d3daedf684894be9dcdefa93a04f96b2 Author: Ludovic Rousseau Date: Sun Oct 10 10:11:07 2010 +0000 Regenerate commit ae15af5e5d0e0892080c21e0edd1f5b34e4fee30 Author: Rik Wehbring Date: Sat Oct 9 23:14:20 2010 +0000 Add support for "cancel sync" button. Bugzilla request 2022. commit c1238aefaa1f0435c2319bfa1528941098d890f4 Author: Rik Wehbring Date: Fri Oct 8 22:22:45 2010 +0000 Fix another memory leak in photo code, this one due to GTK reference counts commit 765516b08e5e072c7bcbad39e8f81557523a20b2 Author: Rik Wehbring Date: Thu Oct 7 21:34:00 2010 +0000 Initialize Palm privacy password to zero before use. commit 5b60162dd5a6aad75a94b1c4ee3d5e7865dfd929 Author: Rik Wehbring Date: Thu Oct 7 21:04:31 2010 +0000 Add support for categories to left-hand side of Calendar GUI commit 7979dde4bf555ce02801da52d24b162116d26682 Author: Rik Wehbring Date: Wed Oct 6 17:35:16 2010 +0000 Fix a few compiler warnings calendar.c, datebook.c: Use ENABLE_DATEBK around routines that are only used with DATEBK todo_gui.c: Remove unused variable, initialize variable. commit be8d31aa0bbe1132e07b57b83272d72a730c354d Author: Ludovic Rousseau Date: Wed Oct 6 07:08:11 2010 +0000 Increase the time before the password is asked again from 1s to 10s. This allows to fetch a keyring entry in the search window without getting asked for the password for 10 seconds. commit c976d4dde40458a0c8da45a1a8ee52c37546e27a Author: Rik Wehbring Date: Tue Oct 5 21:48:05 2010 +0000 Cleanup code for GUIs Untabify code. Add comments about what is being created by GUI code. Move some GUI init code to be closer to the elements it affects. commit 4ad179ec96b9ce21c0ecfc5b835cb2555f6749f1 Author: Rik Wehbring Date: Tue Oct 5 21:43:28 2010 +0000 Indent code for icon commit 9e5a884f458b40e0cce4f349c9ca352dd13a16e5 Author: Rik Wehbring Date: Fri Oct 1 04:08:47 2010 +0000 Update end time entry when start time changed to keep overall appt. length the same. This mimics Palm Desktop and makes it easier to enter appointments. commit 099f269275dd7338397d5d5484440c87441ca43a Author: Rik Wehbring Date: Thu Sep 30 01:16:12 2010 +0000 Allow appts which span midnight for Calendar events (Bug #1531) commit e31324895ae01412e28f78333627002dd8b0561b Author: Rik Wehbring Date: Mon Aug 23 05:11:17 2010 +0000 Use correct application string (memo/memos) in search gui commit a1c6c962585ebfc3577663b25b1fed61b6cdef46 Author: Rik Wehbring Date: Sun Aug 1 18:36:32 2010 +0000 Correct iCal export for repeating events with an end date. New RFC5445, which supercedes RFC2445, specifies that end dates are inclusive of the final occurrence of the event. This resolves Bugzilla 2008 and 2021. commit b9e345029a4ba4b7187e90d92c984164791b1067 Author: Rik Wehbring Date: Sun Aug 1 18:00:23 2010 +0000 Add space between address text labels and text boxes for readability commit 6d6e1eda0198035f850275838c138340448750b7 Author: Rik Wehbring Date: Wed Jul 28 20:07:29 2010 +0000 Change message from debug to warning category commit 882d47d5e7e415cf2ed568aa176a37a1e5fa103f Author: Ludovic Rousseau Date: Wed Jul 28 14:17:48 2010 +0000 Add some padding space commit 2852e22b9c5db2a23d32a0aac51e99c8e353693c Author: Ludovic Rousseau Date: Wed Jul 28 13:36:42 2010 +0000 i18n a log message commit 61b0eed3a09d30711cf2f479db87e635310ad2a2 Author: Rik Wehbring Date: Sat Jul 24 05:17:37 2010 +0000 Move to correct search record when switching applications causes a new record to be added. commit 8773da890b114de1b092f05be8ace2af3005dcbd Author: Rik Wehbring Date: Fri Jul 23 01:37:44 2010 +0000 Correct off-by-1 pixel alignment with new vertically-aligned address labels commit ab250c50fde0a687bcdaa9c148ea189ac1bbb407 Author: Judd Montgomery Date: Tue Jul 20 14:30:00 2010 +0000 Align address labels to the top and right commit 960f10570c6a9ebdb9ef2988d42c10e4638509f2 Author: Judd Montgomery Date: Thu Jul 8 16:04:37 2010 +0000 Changed strcmp of E-mail to case insensitive because German translation on Palm is E-Mail. This help export of VCard to work properly for importing into gmail commit cc109c0c6bb0315ed4a6a3f2bbb68a011ff37af8 Author: Judd Montgomery Date: Thu Jul 8 16:02:52 2010 +0000 Translated E-mail to help user export VCard to iPhone commit 5ccb97ac0e301a3b63856a0cbcafcb844668f4b1 Author: Judd Montgomery Date: Sun Jul 4 16:58:41 2010 +0000 Added a VCard export format optimized for GMail/Android import commit 56bd080cfa5fa8a3f9e70289f53992233e9fb7f1 Author: Rik Wehbring Date: Sun May 2 16:44:02 2010 +0000 Add russian translation update patch from reporter ncdarvin (bugzilla 0002017) commit 751e3b9a7d2c0f0e50e5046594addf19bbaf1a6f Author: Ludovic Rousseau Date: Wed Apr 21 11:44:54 2010 +0000 Remove redundant declaration calendar.c:319: warning: redundant redeclaration of ���get_days_calendar_events2��� calendar.h:60: warning: previous declaration of ���get_days_calendar_events2��� was here commit bf50bca519d722b06f3305ee55fc7e9a1fb05b56 Author: Ludovic Rousseau Date: Wed Apr 21 11:31:06 2010 +0000 include log.h instead of redefining jp_logf() Avoids lots of warning: redundant redeclaration of ���jp_logf��� commit 4c56130fa71fea5f97fb01bbe70e5d7ead954e28 Author: Ludovic Rousseau Date: Wed Apr 21 11:18:17 2010 +0000 Remove duplicate definition of glob_child_pid jpilot-sync.c:47: warning: redundant redeclaration of ���glob_child_pid��� jpilot-sync.c:45: warning: previous declaration of ���glob_child_pid��� was here commit 5621c66483fd8ebd58ddcd70845726e89a0c08c5 Author: Ludovic Rousseau Date: Wed Apr 21 11:15:02 2010 +0000 Do not redeclare in libplugin.h functions already declared in utils.h Avoids lots of warning: redundant redeclaration of ... commit 864bcfa10794ce0918834b21407786ecbe166e67 Author: Ludovic Rousseau Date: Wed Apr 21 09:40:05 2010 +0000 avoid multiple inclusion of itself to avoid redundant redeclarations commit 16e459842ba652ba2a29beefb32c35bb20dc7d10 Author: Ludovic Rousseau Date: Wed Apr 21 07:28:35 2010 +0000 Remove redundant declaration utils.h:298: warning: redundant redeclaration of ���pilot_time_to_unix_time��� /usr/include/pi-file.h:429: warning: previous declaration of ���pilot_time_to_unix_time��� was here commit 7434b332149bf599fb7fdbd3756f5a82f603037f Author: Ludovic Rousseau Date: Wed Apr 21 05:57:53 2010 +0000 Remove redundant declaration datebook.h:147: warning: redundant redeclaration of ���datebook_import��� datebook.h:76: warning: previous declaration of ���datebook_import��� was here commit 56d8b3f4bc36b8ac628bcf5f1fec3e28408890b1 Author: Ludovic Rousseau Date: Wed Apr 21 05:56:40 2010 +0000 Remove redundant declaration calendar.h:64: warning: redundant redeclaration of ���get_days_calendar_events2��� calendar.h:54: warning: previous declaration of ���get_days_calendar_events2��� was here commit f48c6b84aa727f7ef53e052ea54327ed3f99745c Author: Rik Wehbring Date: Tue Apr 20 18:13:26 2010 +0000 Add accelerator keys for left/right arrows in week and month views commit e7e2a6af93c5e30c2723f8b813a6f69b9d1b3216 Author: Rik Wehbring Date: Wed Apr 14 05:04:37 2010 +0000 Change accelerator documentation strings to 'Ctrl+KEY' rather than 'Ctrl-KEY' This matches GTK conventions commit df553e5c00afbd01464490ea4bca0f5baefa05d4 Author: Rik Wehbring Date: Tue Apr 13 15:54:02 2010 +0000 Use Ctrl+Shift+C as shortcut to copy records commit ac87bf3965040c2681bf2e195ae7ea5f0c59700a Author: Rik Wehbring Date: Mon Apr 5 04:34:31 2010 +0000 Rename a code TODO to FIXME to make it more prominent commit 2467efd6fdb18673319ecf9deff725f702a86211 Author: Rik Wehbring Date: Sat Apr 3 02:34:03 2010 +0000 Use Ctrl+W and Ctrl+M as shorcut sequences for weekly and monthly datebook views commit 3905878646c7302c9b3b9db71771a6bd5ddb2a23 Author: Rik Wehbring Date: Sat Apr 3 02:08:09 2010 +0000 Update copyright notice for About->Jpilot to 2010 commit 178eb5b68a1af426466f693673b68610ae0d4b1d Author: Ludovic Rousseau Date: Fri Apr 2 08:33:19 2010 +0000 update from Joe Dalton commit 4273770fdd5c8908ff2716df9f904e778bbe9030 Author: Rik Wehbring Date: Fri Apr 2 04:55:17 2010 +0000 Remove unused datebook_compare function commit ea4cd0edf2ea787afdd31eed38970a52526c7d31 Author: Rik Wehbring Date: Fri Apr 2 04:53:49 2010 +0000 Quiet compiler warning about todo_clist_clear in last patch commit f421740278123bfc2c21dab5da6cd65d9f43e2c7 Author: Rik Wehbring Date: Fri Apr 2 04:49:57 2010 +0000 Fix memory leak with embedded todo clist in datebook/calendar commit a7cc083b4f47cbe9304b1b3494cc8c40c081849c Author: Rik Wehbring Date: Fri Apr 2 04:26:27 2010 +0000 Use CalendarEvents to hold data for both Datebook and Calendar apps Code now follows the same strategy as the Contacts/Addressbook which is to keep data in the newer format and transform it to the old format only when reading/writing pdb files. commit 59e94fa501670801f89d817082f9ea25c6de2517 Author: Rik Wehbring Date: Fri Apr 2 00:44:57 2010 +0000 Rename pc_calendar_or_datebook_write which removes TODO item from code commit 8cf10ff9063b25a67b0cf5218e21f3a6cdc387c1 Author: Rik Wehbring Date: Thu Apr 1 23:09:59 2010 +0000 Eliminate TODO in code to check the return value of jp_get_app_info commit 3ad404be8477b7d2f7b7768f99b7d4447e2810b6 Author: Rik Wehbring Date: Thu Apr 1 22:49:01 2010 +0000 Close TODO to make unpack_CalendarEvent use a pi_buffer as this is already completed in pilot-link commit 902bb20a8a82acdf9b8490b1c1555a93feb0049e Author: Rik Wehbring Date: Thu Apr 1 22:16:19 2010 +0000 Restore export functionality for KeyRing commit ede7078e72664df365d68bd71dd63b1b0c722c99 Author: Rik Wehbring Date: Thu Apr 1 21:40:47 2010 +0000 Fix memory leak when exporting from a specific category commit 6d48e0d341e08384c302e47d2322e48b13f07174 Author: Rik Wehbring Date: Thu Apr 1 21:21:22 2010 +0000 Fix memory leak when using styles in clist commit 135a5ac79e9347dbdc819012c068bed98b75ab55 Author: Rik Wehbring Date: Thu Apr 1 21:14:35 2010 +0000 Fix memory leak when returning to calendar with app button commit f12f4ca56cf8a1ada84a392883b522b9ec1c1bc5 Author: Rik Wehbring Date: Thu Apr 1 20:08:44 2010 +0000 Fix memory leak in search function for Expense plugin commit 1678d7e75e7fb0e6bffb0327725d1239010e8192 Author: Rik Wehbring Date: Thu Apr 1 19:54:48 2010 +0000 Fix memory leak when using only the records from a requested category in the pdb file commit 014784984865631b8cd9881a4af4782af09eab8d Author: Rik Wehbring Date: Thu Apr 1 19:54:03 2010 +0000 Fix memory leak when printing weekly appointments commit 791f2e0745eef4e103214cf9ed03c55cea1b08b3 Author: Rik Wehbring Date: Thu Apr 1 18:30:42 2010 +0000 Remove unused variable to quiet compiler warning commit 620d9c3b1dc3cbff3e90bf4efbe86bf22c491724 Author: Rik Wehbring Date: Thu Apr 1 18:28:22 2010 +0000 Plug memory leak when using clists commit d86e1d7493df1bf0dd0913de7528f6115201fa1d Author: Rik Wehbring Date: Thu Apr 1 05:32:44 2010 +0000 Comment out unused code to quiet compiler warning about unused functions commit f042ee5ee2acfcf327ccfaf97aa9eb2f62c66ad5 Author: Rik Wehbring Date: Thu Apr 1 05:26:38 2010 +0000 Use EXIT_SUCCESS as return value commit 154a8d4e51ad6dc79ef5988a74b08c9a8e3a5ab6 Author: Rik Wehbring Date: Thu Apr 1 05:11:01 2010 +0000 Fix 3 memory leaks in calendar code commit 4fd020ceeabf49d8ad8b0aa22ba53bf0c60210bf Author: Rik Wehbring Date: Wed Mar 31 20:26:06 2010 +0000 Use consistent naming for appointments (appt) and calendar events (cale) commit 1af3ae9d9bba686c6ee4ace0447a55afe4ff2d62 Author: Rik Wehbring Date: Wed Mar 31 20:13:43 2010 +0000 Restore datebook/calendar exceptions in repeating events commit 2386d83a2429c0e3f22961dff33ce7506f155f23 Author: Rik Wehbring Date: Mon Mar 29 21:08:34 2010 +0000 Resolve bug 2012 where small months in Postcript printout overlapped a calendar event. commit fee2f6b40e67701fa4070d262ff34162bbffd5c7 Author: Rik Wehbring Date: Mon Mar 29 15:22:34 2010 +0000 Eliminate wasteful copying of data structures before an undelete operation commit b08d802492beae41f602d1e63eb4f1ea892fd980 Author: Rik Wehbring Date: Mon Mar 29 05:44:32 2010 +0000 Code formatting for easier readability No changes to function of code were made. Only visual changes. Untabify code Shorten most function call lines to <80 characters long Use cale abbreviation for CalendarEvent in analogy with appt, addr, todo, memo Add GPL copyright to icons/*.h files commit 2e2261c091a29ec1132f68a6bc9c48e76c069a2b Author: Rik Wehbring Date: Sun Mar 28 23:45:57 2010 +0000 Use common abbreviation of mappt for MyAppointment struct commit e5548bac7d475ee998ff600baac251b3920fa4f3 Author: Ludovic Rousseau Date: Sat Mar 27 15:24:02 2010 +0000 cb_delete_appt(): check the datebook version to call the correct deletion code Fixes Debian bug #574030: jpilot: can't delete appointments commit c46f2bb728d0568d464f82e97d6a7b3a4f16dcef Author: Rik Wehbring Date: Mon Mar 15 22:41:55 2010 +0000 Bump version number to odd number for development commit a36dd77fb6cc48d984e138a8dab3c3475f89d116 Author: Rik Wehbring Date: Mon Mar 15 22:40:12 2010 +0000 Prevent flicker on Calendar widget when using PgUp/PgDn keys commit 4106771378eff36a673e9fcab304e8d329e94512 Author: Rik Wehbring Date: Mon Mar 8 18:25:47 2010 +0000 Use autoconf to replace version values which doesn't depend on RedHat specific macros commit d9724f69e7e47aa9511276532f443ebfa1a6280d Author: Rik Wehbring Date: Mon Mar 8 00:16:27 2010 +0000 Overhaul jpilot.spec to correspond to actual 1.8.0 release files commit 1049f38aca3be226962f91c5a00bf122437eee0c Author: Rik Wehbring Date: Sun Mar 7 22:13:40 2010 +0000 Remove obsolete Redhat 7 spec file commit ffc5fcd29f5071adf29c11774109861b51fc46c0 Author: Rik Wehbring Date: Sun Mar 7 21:54:53 2010 +0000 Add i18n support for otherconv.c messages commit 473f914a67bec42b5fac31cc17d1df8d33ba89c1 Author: Rik Wehbring Date: Sun Mar 7 21:27:58 2010 +0000 Fix Makefile.am so that distribution passes make distcheck commit 2ac02d6ffb5469f14a050de4cb4eff41fcf7ea4d Author: Rik Wehbring Date: Sun Mar 7 21:26:51 2010 +0000 Eliminate two compiler warnings about using bitwise or rather than logic or commit 984133751ae1b6771af06866f060a922c5c83b94 Author: Ludovic Rousseau Date: Sun Mar 7 17:12:42 2010 +0000 cb_delete_keyring(): convert the record from Jpilot to Palm encoding before writing the record for deletion commit 3860aabf22cc36d85d0d71a47f9c901a15447533 Author: Ludovic Rousseau Date: Thu Mar 4 17:48:25 2010 +0000 fix weekview_gui.c:61: warning: no previous prototype for ���cb_weekview_quit��� commit 7d8ae16d2618ebbf923c85a5ac094b11228291e7 Author: Ludovic Rousseau Date: Thu Mar 4 17:39:32 2010 +0000 Fix install_user.c:234: warning: no previous prototype for ���install_user_gui��� commit e0ca9e3aeb35c0e6d0ef0881c36484b887fbe588 Author: Judd Montgomery Date: Thu Mar 4 03:27:40 2010 +0000 Do not need to prototype, may need to be in a header file commit 93ce1ba51502623adf84e060b0c436ea4da1f8c6 Author: Judd Montgomery Date: Thu Mar 4 03:18:07 2010 +0000 No need to prototype commit 076a5ce11d90e32713023ff4037d171d5d07f2b7 Author: Judd Montgomery Date: Thu Mar 4 03:17:20 2010 +0000 install_user_gui is defined in install_user.h commit 4a5c3ffa11ea00ce2490dfaa38823bfdf24174a2 Author: Ludovic Rousseau Date: Wed Mar 3 14:42:03 2010 +0000 Fix "no previous prototype for" warnings commit 88182e387030cc778caf36662cf229c64dae3280 Author: Ludovic Rousseau Date: Wed Mar 3 14:38:15 2010 +0000 new file commit d5a2e6ab9e5fcf3dde85a78751c8a159ff952003 Author: Ludovic Rousseau Date: Wed Mar 3 12:50:00 2010 +0000 Fix "no previous prototype for" warnings commit cda09f1f54cc61f2bb92ba53f6bcbd8ca6e83756 Author: Ludovic Rousseau Date: Wed Mar 3 12:16:27 2010 +0000 Fix "no previous prototype for" warnings commit 6679b05e056d4deb1b60aa1f35417bfac239d907 Author: Ludovic Rousseau Date: Wed Mar 3 12:09:43 2010 +0000 Fix "no previous prototype for" wanings commit 406f751af4c371dfdc8a49bf63496ab94247bf09 Author: Ludovic Rousseau Date: Wed Mar 3 12:05:05 2010 +0000 fix "no previous prototype for" warnings commit 7fb1586b1b4825b4530086852732e8be151083be Author: Ludovic Rousseau Date: Wed Mar 3 12:02:40 2010 +0000 define plugin_version() and plugin_get_help_name() to avoid "no previous prototype for" warnings commit 61db186271fa857d6ec5463a20b2d5ed112109bc Author: Ludovic Rousseau Date: Wed Mar 3 11:59:39 2010 +0000 fix "no previous prototype for" warnings commit 9e0c831c59a427b90afaa2880243a095c2ffe07f Author: Ludovic Rousseau Date: Wed Mar 3 10:32:46 2010 +0000 Fix compiler warning: datebook_gui.c: In function ���appt_export_ok���: datebook_gui.c:1061: warning: format not a string literal and no format arguments commit fd10b5714f4670ebded17e0159d0d18e8a3bd684 Author: Ludovic Rousseau Date: Wed Mar 3 10:24:29 2010 +0000 Fix a compiler warning: jpilot-dump.c: In function ���dumpical���: jpilot-dump.c:300: warning: format not a string literal and no format arguments commit db8db3800e9b77fda96b70c63f850305b61b4923 Author: Rik Wehbring Date: Tue Mar 2 22:28:11 2010 +0000 Force Changelog.cvs to be updated before distribution commit 5f69222d43b7a1d25016c9093d5a353bbdfc1065 Author: Ludovic Rousseau Date: Tue Mar 2 20:36:02 2010 +0000 update from automake-1.11 commit a236dbede4a6c1f237f75801aa773b829ee8d7ed Author: Ludovic Rousseau Date: Tue Mar 2 20:34:46 2010 +0000 new file commit f3ab2c75bf85c640ac0613100611c9d05b0e70d9 Author: Ludovic Rousseau Date: Tue Mar 2 20:33:38 2010 +0000 remove useless jpilot-dump.o and jpilot-sync.o rules commit 2aee79a9cd5dbd2bd598b66ff901e1fddc7153c8 Author: Ludovic Rousseau Date: Tue Mar 2 20:31:28 2010 +0000 add calendar.c commit 05d6a22f1fb5cae59c91fe511af70fb65f92d890 Author: David A. Desrosiers Date: Tue Mar 2 20:03:17 2010 +0000 One final test to be sure it's all working... commit f9b43982603a2c14fcdf9927e301b39372c515e0 Author: David A. Desrosiers Date: Tue Mar 2 20:02:54 2010 +0000 One final test to be sure it's all working... commit af26ca91117315768fa8f79822ca2175bf6682e5 Author: David A. Desrosiers Date: Tue Mar 2 19:01:49 2010 +0000 Testing a commit to the -commits list (test 4) commit 022da59fd9fb8521120447af4e96bed2ee5bcd12 Author: Judd Montgomery Date: Tue Mar 2 18:59:24 2010 +0000 Added calendar.h commit 61e478dfe9071ab8e8a279c858f599cb27a8691a Author: Judd Montgomery Date: Tue Mar 2 18:59:00 2010 +0000 Inital write commit 8fa52a69a82a5edbbe9084511327a24cf448b0fc Author: David A. Desrosiers Date: Tue Mar 2 18:58:49 2010 +0000 Testing a commit to the -commits list, to debug some problems found there commit 5b04073a88de8c2ffa182ece20931a8b5e7bed4c Author: David A. Desrosiers Date: Tue Mar 2 18:52:07 2010 +0000 Testing a commit to the -commits list, to debug some problems found there commit e43f585e53a6694bb7aeb93bf42487cdbbd9603e Author: David A. Desrosiers Date: Tue Mar 2 18:50:02 2010 +0000 Testing a commit to the -commits list, to debug some problems found there commit c4edfd3735669460524227673dc5410743ba2d60 Author: Judd Montgomery Date: Sun Feb 28 20:56:10 2010 +0000 Updated for pilot-link 0.12.5 commit 4e03a8f66b1ae6069502c2e5b742bcd902861ec5 Author: Judd Montgomery Date: Sun Feb 28 20:37:10 2010 +0000 testing cvs commit email list commit 4f368f2b7693d0e88df981b88db9e0616842080c Author: Judd Montgomery Date: Sun Feb 28 20:34:47 2010 +0000 testing cvs commit email list commit 405ab9127bffe1c120e8bb9691813e74dadfe54f Author: Judd Montgomery Date: Sun Feb 28 20:30:03 2010 +0000 Changed undelete to properly use a contacts structure commit ab3c1907ba336f04ed6f177d1d7f5557a31ebf03 Author: Judd Montgomery Date: Sun Feb 28 19:56:58 2010 +0000 shut compiler up about uninitialized use of variable commit 6ef957263084f0ef0a0d065b25f4e3030ceb470e Author: Judd Montgomery Date: Sun Feb 28 19:53:18 2010 +0000 Updated for pilot-link 0.12.5 (Removed) commit 8ac2004ee6b8b5983bf6169003e56dfa8ce766cc Author: Judd Montgomery Date: Sun Feb 28 19:33:59 2010 +0000 Updated for pilot-link 0.12.5 (Removed) commit 7d6af99236f41158188a67f83c94624cd87cc7a0 Author: Judd Montgomery Date: Sun Feb 28 19:24:22 2010 +0000 Updated for pilot-link 0.12.5 commit bfbb646365c1942399126b50e57a081945505947 Author: Judd Montgomery Date: Sun Feb 28 19:03:20 2010 +0000 Updated for pilot-link 0.12.5 commit 099de5eaeb2db9f11b19a90b12a71ffe3f66813c Author: Rik Wehbring Date: Sun Feb 28 16:02:57 2010 +0000 Update configure to require pilot-link 0.12.5 commit a74d1e3df0e5611bda2822cc11cc375a9c2588cf Author: Rik Wehbring Date: Sun Feb 28 06:05:29 2010 +0000 Update ChangeLog before 1.8 release commit 41f5ad4a4e40c061e9860d69f01d69fff7e5aae3 Author: Ludovic Rousseau Date: Wed Jan 20 14:48:29 2010 +0000 use return instead of exit() since we are in a library commit 8b3c26c5aa4191c819e119abd9388da3551ec825 Author: Ludovic Rousseau Date: Wed Jan 20 13:40:10 2010 +0000 The Encoding key is now deprecated by the FreeDesktop standard and all strings are required to be encoded in UTF-8. http://lintian.debian.org/tags/desktop-entry-contains-encoding-key.html commit 62bd096ae3b5493b4ddd8aca1e3fbad2d93baf44 Author: Ludovic Rousseau Date: Wed Jan 20 13:17:53 2010 +0000 correctly initialize the libgcrypt lib Closes Debian bug #565817 commit 9d19b8b6f91c3c8ea8469900be3aca7bec3d67a2 Author: David A. Desrosiers Date: Sun Jan 3 19:46:45 2010 +0000 Ta-da! commit 8fd40d4717a9ff086e8a6477b1ec1af92401376f Author: David A. Desrosiers Date: Sun Jan 3 19:42:35 2010 +0000 Still playing, bear with me while I debug this commit bd0643c9129445900688540092c84d3242beb658 Author: David A. Desrosiers Date: Sun Jan 3 19:39:19 2010 +0000 Commit forward to revert back (testing commits to the repo) commit f2644b88f19fb34dbb47f70138035884b11eb8ac Author: David A. Desrosiers Date: Sun Jan 3 19:35:18 2010 +0000 Testing a commit, will revert in a moment if successful commit 7bee9b66fb1956a95c5195e652e922e67c8725ba Author: Ludovic Rousseau Date: Sat Dec 12 15:22:06 2009 +0000 cb_add_new_record(): convert from Jpilot to Palm encoding before deleting the original of a modified event. Events containing non-ASCII characters where duplicated (Sync Conflict: a record must be manually merged) commit c01eba45976d3a087b49f02a9cd18ed615537e39 Author: Rik Wehbring Date: Tue Nov 17 04:24:00 2009 +0000 Fix switching between fields using Shift+Tab for address_gui commit 75f6365c074a6b27a45ee490a40831ed16690302 Author: Ludovic Rousseau Date: Sun Nov 8 17:12:10 2009 +0000 fix: warning: function declaration isn���t a prototype commit 9339aa20c48deae4f716cb321c157117da90d6af Author: Rik Wehbring Date: Mon Nov 2 04:29:31 2009 +0000 Fix Bugzilla 2002 : Incorrect CSV export when double quotes are in field commit c09fd6765bafc278d654c35ee28d0bfb93363816 Author: Rik Wehbring Date: Thu Sep 24 03:58:19 2009 +0000 Correct comments to accurately document sort_order commit b0b33ee8a817167702d1ed52bcacb45d8c178cb0 Author: Rik Wehbring Date: Sat Sep 19 20:59:48 2009 +0000 Add check on datebook version before invoking code with location support. commit 0bfaed99aea760d9f62683e2e130b065e5512d19 Author: Rik Wehbring Date: Sat Sep 19 20:57:27 2009 +0000 Add FIXME notes to code about possible additions of calendar location support commit 99ce909b0c14a9f7c461c7bdb1bbb8a774cd7da6 Author: Ludovic Rousseau Date: Sat Sep 19 12:30:51 2009 +0000 pc_datebook_write(): convert the location field from jpilot to Palm encoding commit f8e3b226f30e2a6ba776b2f82680420a12f6e4be Author: Ludovic Rousseau Date: Sat Sep 19 11:55:36 2009 +0000 use sizeof() instead of a constant read_csv_field() already provides a NUL terminated string commit e1e930a9e7f632ca526449b5de55fc63ad6bc0ee Author: Ludovic Rousseau Date: Wed Sep 16 08:40:03 2009 +0000 update commit 18062ea7be89b91735fea4ba1fc555edd80c2005 Author: Ludovic Rousseau Date: Wed Sep 16 08:24:19 2009 +0000 call a debug printf() only if JPILOT_DEBUG is defined commit 5f1a987fdce58101c00d1fab3d2d74574ddf0325 Author: Rik Wehbring Date: Thu Sep 10 06:01:55 2009 +0000 Add support for Location field in Calendar application Implementation relies on pack/unpack routines that were borrowed from pilot-link and amended to support the Calendar app. These routines in jp-calendar.c should eventually be migrated to pilot-link. Currently categories are only supported on the right-hand side of the GUI. The code could be changed to resemble the other apps and have a category menu on the left as well. The GUI might become a little too busy at that point but I am open to a request from users for such a feature. commit 1c8911733fa285087b790823f21bec2ef87bb302 Author: Rik Wehbring Date: Fri Sep 4 22:24:33 2009 +0000 Update right-hand side GUI for ToDo application. Category selector now at very top which matches other applications. Labels moved slightly off left-hand edge for better readability. commit 0274b78621b1de59953927cee4a615e24bef1226 Author: Rik Wehbring Date: Thu Sep 3 18:45:18 2009 +0000 Fix compilation under -DJPILOT_DEBUG commit 8ba3aba4314d4fb8eb7f5c6f6299c1560fc03c58 Author: Rik Wehbring Date: Wed Sep 2 22:55:18 2009 +0000 Remove unnecessary GTK_IS_WIDGET check commit f1db5a17055bb4ae533f7aeefd87344cba9b1ecf Author: Rik Wehbring Date: Wed Sep 2 22:54:11 2009 +0000 Fix subtle bug where alarm box contents were displayed even though alarm checkbox was not checked commit 64a962181e61028ebc1b18b4e4452baa2be31130 Author: Rik Wehbring Date: Wed Sep 2 22:26:35 2009 +0000 Update right-hand side GUI for datebook Use radio buttons to select between timed and untimed events rather than a single checkbox. commit a6acf9b1932c2765774fdee9791a4bae92ec306e Author: Rik Wehbring Date: Wed Sep 2 04:47:44 2009 +0000 Change spinner highlight color to more subdued yellow to match color scheme commit 8e45f29ddd0b83465b5735d33ef11c58e2ed831c Author: Rik Wehbring Date: Tue Sep 1 01:54:28 2009 +0000 Fix bugs in TEXT export of contacts 1) Birthday field printing without a newline 2) Exported labels of phones, addresses, and IM did not match actual record commit bfc15831d195e6874f5552b2601aee14f391856a Author: Rik Wehbring Date: Mon Aug 31 23:31:50 2009 +0000 Update a few more pieces of code left in during the addition of Calendar support commit 5339fb8eecfaf4971b8bb14bf80ccfba2f430216 Author: Rik Wehbring Date: Mon Aug 31 23:13:55 2009 +0000 Remove a few unused lines left in during addition of Calendar code commit 42b24bff19bd4d74a99f12a4b0f9fd1dad0bbe3b Author: Rik Wehbring Date: Mon Aug 31 22:24:56 2009 +0000 Compact double nested if statments for code clarity commit c083eb30e3c46f4e7939c2550ff7fafb06184461 Author: Rik Wehbring Date: Mon Aug 31 22:15:37 2009 +0000 Rename subroutine for more code clarity commit e2c55c2b8b444c85bed437e46d4c67739578fba2 Author: Rik Wehbring Date: Mon Aug 31 22:13:39 2009 +0000 Preliminary addition of Calendar support for Jpilot Categories work correctly including editing. Import/Export work correctly. Preference for Calendar versus Datebook added. GUI modified to display category on right-hand side. Syncing of records with a Location field DO NOT WORK. Otherwise everything works perfectly. commit 10d62734043341db64ddb551b4f16455dac7ee3a Author: Rik Wehbring Date: Fri Aug 28 23:06:52 2009 +0000 Added new feature where ToDo items which are due today are marked by a soft green color. This helps prioritize between overdue items, shown in red, items to be completed today, shown in soft green, and items due in the future, solid black. commit 98eef1518f630c0dd256f00bf40ea47ad41e0cb6 Author: Rik Wehbring Date: Fri Aug 28 22:19:37 2009 +0000 Textual changes only to line up code blocks, etc. commit 23b20171f273b227131471e0bb38e4451e9b3f34 Author: Rik Wehbring Date: Fri Aug 28 21:22:53 2009 +0000 Center pixmaps in clist columns below pixmap in title row of clist Previously the pixmaps were not centered under their title icons but were off to the side by 1 pixel. This was small but visually annoying. The problem was two-fold. A) the option to center the columns was not being applied and B) GTK cannot center icons which have a width which is an odd number. commit 31eb12d13121c7635be48367daafeeec327a9ba3 Author: Rik Wehbring Date: Fri Aug 28 19:04:54 2009 +0000 Simplify lock icon naming. Now there are lock, unlock, and masklock icons. commit 8305f155c909a421abd65640a45ebb510f07ad1f Author: Rik Wehbring Date: Fri Aug 28 19:00:04 2009 +0000 Correct visual defect in hasp of lock in private record locking icons. Improve the top curve of the lock hasp. commit 8d8149c825b28aac753eab1ee42f49c668125106 Author: Rik Wehbring Date: Fri Aug 28 18:32:20 2009 +0000 Replace alarm clock icon with a more graphically pleasing version commit ef995f8617c5c8bb81115a06b4f05c93239348f9 Author: Rik Wehbring Date: Fri Aug 28 18:30:53 2009 +0000 Separate clist icons (such as alarm clock icon) from code in utils.c and place in icons directory. This allows user-defined icons to be substituted more easily for the default icons. Also eliminated goto statement in favor of if statement. commit 3fe00b1a051cad0134bf386ee3543e4687cbe0b0 Author: Rik Wehbring Date: Fri Aug 28 06:19:40 2009 +0000 Use same shadow style for clist in datebook as in other applications commit 8d4151f104a3268b9a0218a210bf37aa9745457e Author: Rik Wehbring Date: Fri Aug 28 05:53:39 2009 +0000 Updated FIXME note for libplugin.c commit 1f50b279f8429aa744480ba6a97278fe57a5f573 Author: Rik Wehbring Date: Fri Aug 28 05:53:12 2009 +0000 Removed unnecessary FIXME notes commit d6d79c4f15da17efa5d7b31f6e3997b62f91ec3e Author: Rik Wehbring Date: Fri Aug 28 05:38:11 2009 +0000 Removed comment about buffer overrun after verifying code commit 885f9db1c32747bd875890025bd418c614a72da5 Author: Rik Wehbring Date: Fri Aug 28 04:58:48 2009 +0000 clist columns will now autosize which is better for i18n compatibility. clist shadow type was set to be the same as the other applications. commit 74f4f5260ae998f78543baf8d4064719064cf5c2 Author: Rik Wehbring Date: Fri Aug 28 02:16:12 2009 +0000 Display warning during ical export from jpilot-dump if character encoding is not UTF-8 Removes TODO item from code commit 267d2a768cad3b2b418e3e1f70035f869d6a9279 Author: Rik Wehbring Date: Fri Aug 28 02:01:58 2009 +0000 Clean up code by removing private date2seconds procedure and using equivalent in utils.c Clears an outstanding TODO item commit 3651838b7dd0396b9f990371c26dcbf678f8ccf7 Author: Rik Wehbring Date: Fri Aug 28 01:51:56 2009 +0000 Category menubar for KeyRing is now uniform with other applications. Implemented and removed TODO items in code commit d8e62507b5d2142d48685acd8cccf05a7344efd8 Author: Rik Wehbring Date: Fri Aug 28 01:44:52 2009 +0000 Remove TODO that shouldn't be implemented since it might lead to security issues with holding records unencrypted in memory commit fa0e934d93a8eb9d1d50eb1b7238d8262ac4beea Author: Rik Wehbring Date: Fri Aug 28 01:40:22 2009 +0000 Datebook delete procedure is now uniform with the other 3 apps. Modified where conversion of strings from pilot to palm encoding takes place. It now happens in cb_delete_memo rather than in the delete_routine in utils.c. commit b9afb14915700eae2cd5d81f5e2e6e456fe04758 Author: Rik Wehbring Date: Thu Aug 27 15:05:30 2009 +0000 Remove unused GTK1 code now that it is no longer supported commit 6d15dcf93180a8e168720e1738ce007c215e95ab Author: Ludovic Rousseau Date: Wed Aug 26 16:31:24 2009 +0000 update commit 792355547c5fd61df3a07db8acc4282fbf5ce5d5 Author: Rik Wehbring Date: Mon Aug 24 14:48:23 2009 +0000 Implement Shift-Tab functionality to move between text fields. Tab already advances to the next text field but now the operation is reversible and shift-tab returns to the previous widget. commit d1d44e0d0f47e19ed36658d62d57a1dcb4089d82 Author: Rik Wehbring Date: Tue Aug 11 21:08:56 2009 +0000 Add missing Changelog entry for current release 1.6.2 commit 21ad35a55746f912d9fac3afac0f192aecb93f61 Author: Rik Wehbring Date: Tue Aug 11 20:54:20 2009 +0000 Require pilot-link >= 0.12.4 for Jpilot commit 3b8761c99b478376063cb9954e9b35eba1f086a0 Author: Rik Wehbring Date: Tue Aug 11 20:13:42 2009 +0000 Include top_srcdir for compilation of plugins which is needed for some complicated build strategies. commit f35b60f4e01b6319ec6743b47dd4aa79990733d2 Author: Rik Wehbring Date: Sat Aug 1 16:47:56 2009 +0000 Add single quotes around string not being converted correctly by iconv for clarity in error reporting commit c13cdb9249b8087e41a95d595440f7660887eba1 Author: Rik Wehbring Date: Fri Jul 31 21:22:17 2009 +0000 Make it easier to toggle OTHERCONV_DEBUG commit f2a8e97dbd4b0317029b4a01c123dc5368cb62d6 Author: Rik Wehbring Date: Fri Jul 31 17:59:08 2009 +0000 Correct indentation to Jpilot standards commit c2752188bad4f0778ab0f743637e03f54dbb2a59 Author: Rik Wehbring Date: Fri Jul 31 16:46:17 2009 +0000 Fix Bug 1213 : Edit Categories should edit Manana categories when option is selected Added an empty Manana database so first sync will work correctly as well. commit 83491afdf11b944cf32e6391c8f63599d6cf0cdf Author: Rik Wehbring Date: Fri Jul 31 05:09:37 2009 +0000 Fix typo in error message commit 6c398c46b0f193a65f2673629be436da14069d1b Author: Rik Wehbring Date: Fri Jul 31 02:08:49 2009 +0000 Fix Bugzilla 1917 and 1622 : Lack of Vcard export for Birthday, IM, and custom fields commit f08dda05fca2f855baf35214ec034a86d909a61c Author: Rik Wehbring Date: Mon Jul 27 20:05:40 2009 +0000 Update e-mail address for rikster5 jpilot contacts commit f73ea36fe66a591756fc3f8278d3d22f6afb24a5 Author: Rik Wehbring Date: Sun Jul 26 03:13:08 2009 +0000 Fix Bug 1991 : Categories are lost during first sync. Created new blank pdb databases for the empty/ directory. Databases have blank category names, blank rename bits, and now have zeroed ID fields. The non-zero ID fields were the problem. commit 4d3ec0da2250d7c84ca651dbf9d35e08a1692666 Author: Rik Wehbring Date: Mon Jul 6 22:29:47 2009 +0000 Clean up Automake files for plugin modules Plugins are now built expressly as modules and installed without unnecessary symbolic links. commit 3f2a2d861fea0485dccb32c24fd042e37e039305 Author: Rik Wehbring Date: Fri Jul 3 20:20:55 2009 +0000 Fix bug 1990: Private Contact records discoverable through search GUI commit a73e9fb02fa916ee53b4cdcc4bc8e4380179b5c5 Author: Ludovic Rousseau Date: Thu Jun 11 13:43:55 2009 +0000 unpack_KeyRing(): correctly handle records with no date set commit 99b074b4bf8b68e421373e79102890bac8d26e98 Author: Ludovic Rousseau Date: Sat May 30 16:09:12 2009 +0000 default communication port is now "usb:" instead of nothing commit 1bf1f9b04e66f14f0559d1f396d2f55a7a151c73 Author: Ludovic Rousseau Date: Sat May 30 16:01:53 2009 +0000 update from automake-1.10 commit f011b68d1e773e022d20fd1a98a617f68bd84b7e Author: Judd Montgomery Date: Fri May 29 04:50:58 2009 +0000 Pilot-link 0.12.4 broke some things with the contacts merge. I don't want to require a brand new pilot-link just yet. This is an attempt to make things work with few #ifdefs so the code is more readable. I might require 0.12.4 later when its tested and has made its way downstream. Then this campatibility layer could be removed. commit 623531cb3e1d6774f9c220e998d307396b28a781 Author: Judd Montgomery Date: Fri May 29 04:39:45 2009 +0000 Remove extra character in printf commit e1698887d3083d6ec57fce3d160773c2c2046754 Author: Ludovic Rousseau Date: Sun May 10 09:36:40 2009 +0000 revert to version 1.96 commit fb7ed5e509d481962bb96cd84a8685a58730f8e6 Author: Ludovic Rousseau Date: Sun May 10 09:32:38 2009 +0000 expense.c:1424: warning: assignment discards qualifiers from pointer target type expense.c:1472: warning: passing argument 1 of 'make_menu' from incompatible pointer type expense.c:1473: warning: passing argument 1 of 'make_menu' from incompatible pointer type commit d24cecde1d7de87c6998bd6902fb9b29e3985457 Author: Ludovic Rousseau Date: Wed May 6 20:14:02 2009 +0000 fix warning: old-style function definition commit 4c6574e2d01e322b43790ee4d5d64f8e3311a46f Author: Ludovic Rousseau Date: Wed May 6 19:44:51 2009 +0000 fix warning: initialization discards qualifiers from pointer target type commit edba65d748b4907b4ee9b693686a89d31a77060e Author: Ludovic Rousseau Date: Wed May 6 19:42:46 2009 +0000 fix warning: initialization discards qualifiers from pointer target type commit caf6fe274154aa84ea3e6c556e80f27241963f74 Author: Ludovic Rousseau Date: Wed May 6 19:38:21 2009 +0000 fix warning: passing argument 2 of 'jp_logf' discards qualifiers from pointer target type commit 84dfebaed0b12423804218738e0a28393e7d08bd Author: Ludovic Rousseau Date: Wed May 6 19:29:47 2009 +0000 libplugin.h:315: warning: redundant redeclaration of 'dialog_save_changed_record' libplugin.h:303: warning: previous declaration of 'dialog_save_changed_record' was here commit 92b12336bd97e068e50c0dfef9ee8ad17a98120f Author: Ludovic Rousseau Date: Wed May 6 19:28:03 2009 +0000 correct warning: function declaration isn't a prototype commit f680bf903742268efdb8adce87f9358f574fc272 Author: Rik Wehbring Date: Wed May 6 19:04:11 2009 +0000 Simplify KeyRing host/Palm string handling. KeyRing now translates strings from Palm to host character set at the "boundaries" of the application. In other words, it only translates once when reading from a Palm file and once more when it writes back to a Palm file. This matches the behavior of the other applications and also yields a performance benefit as unnecessary conversions are eliminated. Export of KeyRing data, which motivated this patch, is now correctly in the host character set. commit d13d34728b0aed334b87a6e111f82ad3c586ea8e Author: Rik Wehbring Date: Wed May 6 18:53:01 2009 +0000 Reverse previous patch to convert strings to UTF8 for keyring export commit db6c3947bf42109061074c31ba0088e672561ad6 Author: Ludovic Rousseau Date: Wed May 6 13:43:49 2009 +0000 translate 2 strings commit 18ae3ab288ed771eb8095457d9f9c771cab489bb Author: Ludovic Rousseau Date: Wed May 6 13:33:41 2009 +0000 export the strings in UTF-8 instead of Palm encoding commit 39479c5f94aff29237e09a74d10d53f505750cb7 Author: Rik Wehbring Date: Mon May 4 19:24:54 2009 +0000 Add export functionality to Keyring Add new preference for keyring export filename. Thanks to David Gibson for initial patchset. commit d8ad2152c8201710f631041f78dc95aa532827ac Author: Rik Wehbring Date: Mon May 4 18:38:03 2009 +0000 Replace tabs with spaces. Eliminate inconsistent indentation based on user's tabstop value commit d5241a16ea6dbff0a03e167b6809fbd6de7e519c Author: Rik Wehbring Date: Fri May 1 00:06:18 2009 +0000 Remove excess blank newlines from VCARD export commit d51afe8412bbf9a1f85ce34f6c71484fa32dc7e0 Author: Rik Wehbring Date: Fri May 1 00:03:48 2009 +0000 Add VCARD support for IM, Birthday, Website fields Thanks to David Gibson for patch. commit cd86ba7481b051b337e451998d53f8b36bfdfac9 Author: Rik Wehbring Date: Mon Apr 27 04:04:02 2009 +0000 Clear compiler warning about possible uninitialized variable commit 2cddaa9148d8eaeb455f8cf8117f6b9e77e5b816 Author: Rik Wehbring Date: Mon Apr 27 04:00:21 2009 +0000 Fix compiler warning about unused variable commit 18597b0dce7871028cab55bab4edd1b1e548ac39 Author: Ludovic Rousseau Date: Sun Apr 26 15:19:07 2009 +0000 translate strings from pidfile.c commit 22666b357cbcf27723dc40d5722a0ef53e6832fe Author: Ludovic Rousseau Date: Sun Apr 26 14:55:17 2009 +0000 add pidfile.c commit ff0d52cbbc234078983157b18142048234451e29 Author: Ludovic Rousseau Date: Sat Apr 25 19:05:45 2009 +0000 remove extra category name when exporting in vCard format. Closes Ubuntu bug 366543 https://bugs.launchpad.net/ubuntu/+source/jpilot/+bug/366543 commit 84bd51a21f16ea20a440cb324764a5cccb20825e Author: Ludovic Rousseau Date: Fri Mar 20 21:32:10 2009 +0000 disable debug commit 3d0287aa8a229ade8a1c77e31792939d75be4f38 Author: Ludovic Rousseau Date: Fri Mar 20 21:31:25 2009 +0000 UTF_to_other(): replace unconvertible characters by '?' instead of truncating the string. Closes Debian bug #520135 commit 9bc0584973d7b6e2e0e73435ad662a1dc4efd1c1 Author: Ludovic Rousseau Date: Sun Mar 15 20:34:38 2009 +0000 make_phone_menu(): do not convert to UTF-8 since it is already converted Closes Debian bug #519120 commit b93eb42327f159513404f3e9dc6d6701ff1f8485 Author: Judd Montgomery Date: Sun Feb 22 04:03:52 2009 +0000 Patch from Nicholas piper for buffer overflow commit 699d33579b1edf9a878170c742ea92947825cdaf Author: Rik Wehbring Date: Mon Feb 16 15:59:10 2009 +0000 Reset version string to CVS numbering 1.7.0 commit 82dd38f56b6e15acd84c782d9e89f22bedb573b1 Author: Judd Montgomery Date: Sun Feb 15 21:17:20 2009 +0000 version 1.6.2 for release commit 490d049975bdb96046b5ac0bffbe25772bacdd7a Author: Ludovic Rousseau Date: Sun Feb 15 14:01:44 2009 +0000 libplugin.c:376: warning: ���unique_id��� may be used uninitialized in this function libplugin.c:375: warning: ���attrib��� may be used uninitialized in this function libplugin.c:371: warning: ���next_offset��� may be used uninitialized in this function commit 174359a48d5a2ea23a430416e91e21464d1bb48d Author: Ludovic Rousseau Date: Sat Feb 14 17:32:31 2009 +0000 move t_fmt_ampm in prefs.c only commit 41a06d57431d4f4ccba636ae56c7b6ac789de98f Author: Rik Wehbring Date: Mon Feb 9 00:28:34 2009 +0000 Fix bug in Contact sync where records created on the Palm could not be deleted or modified because they did not match the record in Jpilot Source of problem is an undocumented 4bit field in the packed Contacts structure. Jpilot does not use it and it is unknown what its function is. For comparison purposes the field is masked off to zero which is what Jpilot uses. commit d30aac9a7baa8aba0fd08f88de0f554e718e7976 Author: Rik Wehbring Date: Mon Feb 2 00:22:53 2009 +0000 Fix inability to add photos after a sync process. SIGCHLD handler set by sync process was interfering with return value of pclose. commit cd92be44fc2c3fca20066e6441c609d4b63c032a Author: Rik Wehbring Date: Mon Feb 2 00:12:40 2009 +0000 Adjust comments and format code commit 1b03e857ed7df5f7d2e9e18a395c217e3c3b6245 Author: Rik Wehbring Date: Sun Feb 1 23:52:14 2009 +0000 Fix Bugzilla 1973 : Segfault while editing Contacts Any time a Contact with a picture is edited there is a potential segmentation fault. Without this patch the segmentation faults are so frequent that the Contact App is unusable. commit 9d66662fe16c233fa995bcda2c9b61fac0babab8 Author: Rik Wehbring Date: Sun Feb 1 20:14:38 2009 +0000 Fix bug for syncing of simultaneously modified Contacts Contacts which were simultaneously(on Jpilot and the Palm) modified to the same value were incorrectly reported as being different and causing duplicate entries. commit 5d69ddec3c6352eaeb94c67b411e10241c5cc715 Author: Rik Wehbring Date: Mon Jan 26 01:43:03 2009 +0000 Fix bug 1974 where Memos database is not sorted alphabetically commit dd7862f58c997aefee48308f2281a1e543826929 Author: Rik Wehbring Date: Thu Jan 22 22:09:38 2009 +0000 Add sortable columns feature to Expense plugin commit 3cacff922fcaaa63528744edc0058b7aa190ddae Author: Rik Wehbring Date: Thu Jan 22 17:05:34 2009 +0000 Display correct record count when deleting categories. commit bc320832ffce09ea8a5a2098c94a49d4e1ec8663 Author: Rik Wehbring Date: Thu Jan 22 16:59:30 2009 +0000 Update jpilot copyright to include 2009 commit 837cdaabe5cd0297d626b9b56fbb300344154d35 Author: Rik Wehbring Date: Thu Jan 22 02:10:23 2009 +0000 Overhaul Expense Plugin Code now uses common category menu generation code from utils.c Categories now alphabetized Categories are cycled if the plugin is repeatedly entered via a function key Removed edit category button and 'Category:' label in favor of single category menu bar as in the other apps Plugin version code updated to compile cleanly on Macs commit 430398e218505972e5c7c292a432b0755d1696ca Author: Rik Wehbring Date: Mon Jan 19 22:17:02 2009 +0000 Fix subtle bug where Unfiled category on left hand-side of window was not reflected in the right-hand side of window Introduced extra utility function to clean up menu code commit 1a7581bd3bcd004881c89b2da8255dde454627b7 Author: Rik Wehbring Date: Sun Jan 18 22:46:07 2009 +0000 Fix Bugzilla 1965, add a cancel button to save changed record dialog Expense plugin was not patched since it differs significantly from the 4 main apps. It is not possible to implement a 'cancel' feature when the category is cyled via one of the four main application buttons. commit 54b66c1c48183d539c3722ac1daad15454c12265 Author: Ludovic Rousseau Date: Sat Jan 17 14:32:00 2009 +0000 do not call plugin_get_name() from inside the plugin itself. On Mac OS X the linker uses the first plugin_get_name() symbol found (from Expense plugin) + some minor improvements commit 66dd3268f60f425b419e5bf672dcaf11ddc7f597 Author: Rik Wehbring Date: Fri Jan 16 17:32:54 2009 +0000 Help menu now displays version (About->Expense) commit 5411990597094010cfa923bf8f16c509fac67d18 Author: Rik Wehbring Date: Fri Jan 16 17:31:50 2009 +0000 Version bumped from 0.99 to 1.0 Version now displayed in help menu (About->Synctime) commit 7c05cf171749a9fc278c81a054be14878bf32596 Author: Rik Wehbring Date: Fri Jan 16 17:30:30 2009 +0000 Overhaul of Keyring Eliminated private functions for creating menus in favor of common ones in utils.c Categories are now sorted Variable names synchronized to resemble the code of the other 4 palm apps Version bumped from 0.99 to 1.1 Version string is now displayed in the help menu (About->KeyRing) README updated to reflect the use of libgcrypt or openssl commit 3fe0806a09895b423fa8fb9c441f39ac56b4a7ee Author: Rik Wehbring Date: Fri Jan 16 02:34:19 2009 +0000 Resolve Bugzilla 1967 by hiding internal variable in .jpilotrc commit 0cb1c4073817f083b6b4fe7a686bbfc5199f1d3d Author: Rik Wehbring Date: Wed Jan 14 04:51:31 2009 +0000 Reverse Cancel and Print buttons to follow ordinary convention that the default is on the far right. commit df905b7e833a71e45a98a89c2a35bf226a44a88e Author: Rik Wehbring Date: Wed Jan 14 02:20:34 2009 +0000 Fix Bugzilla 1972 where small calendars were not printed in correct location occasionally for the month of February commit f8f33fb092b4b0cae4c3b935269e83be5ac7ff96 Author: Ludovic Rousseau Date: Sun Jan 11 19:25:07 2009 +0000 add a --with-openssl option to disable GNU libgcrypt even if installed Closes bug #1970 commit 2a92a683243c264376e7743c097ff33178ecf7f0 Author: Rik Wehbring Date: Tue Dec 30 01:32:42 2008 +0000 Fix background of directory and file choosers in GtkFileSelection to match color scheme commit bec8466b1408f93f25308969df0019439541b14b Author: Rik Wehbring Date: Sat Dec 27 01:50:37 2008 +0000 Fix Bugzilla 1966, segfault on CSV import if null fields are not enclosed in double quotes commit 6802848711c2aaf98725ba9917fcd2d515218f96 Author: Rik Wehbring Date: Tue Dec 23 05:48:36 2008 +0000 Fix Note and Quickview tab to have the same border margin commit 912cee824d284bc6e38041556b1ea3e8e10404ec Author: Rik Wehbring Date: Tue Dec 23 05:03:38 2008 +0000 Fix last check-in so that scrollbars automatically appear/disappear as necessary commit eaa3c4fafba3a76b0954e4494a358ad15d172c9d Author: Rik Wehbring Date: Tue Dec 23 04:41:27 2008 +0000 Remove unnecessary space between function name and parentheses which starts variable list. commit 4094d11a95cda22e59b7266c676be42825972abc Author: Rik Wehbring Date: Fri Dec 19 17:06:36 2008 +0000 Change version number to 1.7 (developmental release) so that any builds done with CVS code will properly show that unreleased code is being used commit 3c4c37541c4c16ff684bf74a291e481033af042a Author: Rik Wehbring Date: Fri Dec 19 16:14:15 2008 +0000 Change scrollbar policy to display only when needed. Paned windows make the scrollbars unnecessary clutter most of the time. commit 1d6d68ee1d1118e56c57e580bc81eac903bdd96d Author: Rik Wehbring Date: Fri Dec 19 16:01:13 2008 +0000 Add Note field header on pane dividing Description and Note fields commit 8c381d7c06230c70a0dbe755fb27b51eeadf21d1 Author: Ludovic Rousseau Date: Wed Dec 17 20:30:40 2008 +0000 Use a pane instead of a static box for todo description and note commit c130a2b8370bdb332e3120f60c0519437ebfddd1 Author: Ludovic Rousseau Date: Wed Dec 17 20:07:50 2008 +0000 todo_gui(): remove useless gtk_hbox commit a69427a31e8d94c3763cdd50ed67b21620d2d674 Author: Ludovic Rousseau Date: Wed Dec 17 20:01:56 2008 +0000 do not set a minimum size for a widget when not needed commit 378e5ad615b40d75b6a5c4e15aaff993f197c338 Author: Ludovic Rousseau Date: Tue Dec 16 21:09:25 2008 +0000 datebook_gui(): do not use a ridiculously small minimal size for todo list commit 5f79d6f72af6e67e616a4049a690a605f45b4372 Author: Judd Montgomery Date: Mon Dec 15 13:24:04 2008 +0000 The payback program has been cancelled for a long time now commit 557a64bee8aab8dc910f29ac7bc5f07b11c420d1 Author: Judd Montgomery Date: Mon Dec 15 13:21:26 2008 +0000 update for version 1.6.1 commit 138cba7f14ce36aae2302df10778221ccf7347d8 Author: Judd Montgomery Date: Mon Dec 15 03:36:53 2008 +0000 changed release to version 1.6.1 commit fffbf61ed5a5f483f85a6bac97209a7fd9636572 Author: Judd Montgomery Date: Mon Dec 15 03:35:45 2008 +0000 fixed changelog email addresses commit bf3788d04b28e37eb0058b54005a92ed251f77b4 Author: Ludovic Rousseau Date: Sat Dec 13 13:06:20 2008 +0000 add missing {} commit f0dd24fda826d6305a8eacd520dfd13b5dc9762a Author: Rik Wehbring Date: Sat Dec 13 05:42:37 2008 +0000 Implement a true comparison routine for Contact records in sync process commit 55e637656b4c04179fb0efca05dfbe3fa08440b6 Author: Ludovic Rousseau Date: Fri Dec 12 15:06:32 2008 +0000 main(): initialise ret variable jpilot.c:1500: warning: ���ret��� may be used uninitialized in this function commit c000bfe574b495e9888d26b2c501aca9e071821d Author: Ludovic Rousseau Date: Fri Dec 12 15:02:47 2008 +0000 cb_private(): do not ask for the password again if the password dialog is canceled commit 9645d856234e34799af47cd8a44ca7b52c91dcd4 Author: Ludovic Rousseau Date: Fri Dec 12 14:31:01 2008 +0000 translate 1 string commit 84089b552538a348b523a0735de9c0b0f3d4e268 Author: Rik Wehbring Date: Tue Dec 9 18:31:04 2008 +0000 GTK 2.12 changed named of tooltip widget which invalidated part of color rc file making tooltips invisible. Change selector in rc file to be broader and capture both GTK2.12 widgets as well as those in earlier GTK2 versions. commit 38742fc4c004d899dce1b7c7968b1309f99adfee Author: Rik Wehbring Date: Tue Dec 9 02:33:21 2008 +0000 After changing category of address book the default focus is now on the quick find entry widget. This matches the behavior of what happens when a user cycles through categories using the AddressBook icon on the left- hand side. commit cf4bdb06d37f9ea2c7872982230ebee66dddcd1a Author: Rik Wehbring Date: Mon Dec 8 17:01:50 2008 +0000 Updated rc color files for latest GTK 2.12 so that color of days in calendar widget is correct. Removed references to GTK 1.X in color files as jpilot is now a GTK2 app. commit 632144474f18919adce6fdcfb22b56eb296c4866 Author: Rik Wehbring Date: Sun Nov 30 01:11:49 2008 +0000 Invalid appointments, such as repeat weekly events without any day selected, raise a warning message but erroneously allowed the appt to be created anyways. Patch stops that behavior and prevents invalid appts from being created. commit 0b254bad0f6085a2c2366b810f2472b2c715bb03 Author: Rik Wehbring Date: Sat Nov 29 22:35:58 2008 +0000 Single events do not have valid data in the repeat-event section of data structures when an export to CSV is done. This patch simply puts in blank data, zeroes, for those repeat fields when the event does not repeat. commit 71a64b50ea46630f86ed48a9833f80fbb1f6e571 Author: Ludovic Rousseau Date: Sat Nov 22 16:34:45 2008 +0000 cb_date_button(): update the date button only if jp_cal_dialog() returns CAL_DONE commit 0f2ba5bc11066718388789a27a193ac4f876abf3 Author: Ludovic Rousseau Date: Sat Nov 22 15:58:16 2008 +0000 cb_date_button(): if the date was set to an invalid value we use the date of today also avoids a runtime error: Gtk-CRITICAL **: gtk_calendar_select_month: assertion `month <= 11' failed commit fc525f036d385f38d97a9f0060e7200e624b8b79 Author: Ludovic Rousseau Date: Sat Nov 22 15:31:55 2008 +0000 pack_KeyRing(): use a temporay buffer since overlapping buffers are not allowed by libgcrypt commit 6ffac7508f783707d76239b1988112116fffec8f Author: Ludovic Rousseau Date: Sat Nov 22 15:08:53 2008 +0000 display cryptographic library name used (none, libgcrypt or OpenSSL) commit 103a39b07219eab960cc90bcb075882a1dd2f118 Author: Ludovic Rousseau Date: Thu Oct 30 15:07:12 2008 +0000 improve previous patch commit 46f3fb03c473c9f7c1c7f3585f22dc1392f454fb Author: Ludovic Rousseau Date: Thu Oct 30 14:40:04 2008 +0000 correctly select the Unfield menu entry when cycling the categories commit 616ffa0cdae05a9407ec79923b868fcdaa0a0957 Author: Ludovic Rousseau Date: Thu Oct 30 13:51:19 2008 +0000 correct fields order commit 65fd9da8b6cd754c93e75653508f460d3ba21152 Author: Rik Wehbring Date: Mon Oct 20 04:40:31 2008 +0000 Remove temporary debug code accidentally checked in commit e49b46998636f011f271fa38b46dee1c4d06138a Author: Rik Wehbring Date: Mon Oct 20 02:36:10 2008 +0000 Change comment to more standard English phrasing commit d60b6565ba0f7bd5448d69ea26ca3831e70c9150 Author: Rik Wehbring Date: Mon Oct 20 02:24:23 2008 +0000 Fix several corner cases in alarm code which caused unnecessary retriggering of alarms. commit 92a113fe1026014157e69679dd0ee8349f1539c4 Author: Ludovic Rousseau Date: Sun Oct 19 19:07:49 2008 +0000 use @OPENSSL_LIBS@ @LIBGCRYPT_LIBS@ instead of a hardcoded -lcrypto commit 0b58c6e85628a936a6bcc2f1630b8577edb341fe Author: Ludovic Rousseau Date: Sun Oct 19 19:07:03 2008 +0000 use AM_PATH_LIBGCRYPT to detect libgcrypt define HAVE_LIBGCRYPT if libgcrypt is found define OPENSSL_LIBS to the correct lib commit cce31a725c137da8e45fdc3b57b43c47b56bf595 Author: Ludovic Rousseau Date: Sun Oct 19 19:03:34 2008 +0000 #include "config.h" to get HAVE_LIBGCRYPT use jp_logf() instead of printf() to log libgcrypt errors commit 0edc777a989b1a7a197d56152895bf88034cd5b3 Author: Ludovic Rousseau Date: Sun Oct 19 18:54:52 2008 +0000 unpack_KeyRing(): debug decryption commit c1e49f1e67f39f48650463108b706df378b6b10d Author: Ludovic Rousseau Date: Sun Oct 19 16:27:44 2008 +0000 plugin_gui_cleanup(): only store the time if the plugin was active. If the keyring plugin is active and a synch is performed then plugin_gui_cleanup() is called. If the keyring plugin is called again then plugin_gui_cleanup() is called again just before plugin_gui() is called so the time difference is always < PLUGIN_MAX_INACTIVE_TIME and no password is requested. commit 869cc05f1f78611595b49a9a76b9db18cae6c592 Author: Ludovic Rousseau Date: Sun Oct 19 16:13:06 2008 +0000 add support of libgcrypt libgcrypt is LGPL licenced so no problem to use it with a GPL code. This is not the case with OpenSSL. commit 2b74fe53da994e7c2925bae0a7eec75c862a0d18 Author: Rik Wehbring Date: Sun Sep 21 19:13:11 2008 +0000 Silence compiler warning about uninitialized variable use commit 9f4ea5b792f6eceb03a0c2904f3a50f8d1e8c27e Author: Rik Wehbring Date: Sun Sep 21 19:06:47 2008 +0000 Fix Bug 1536: Incorrect characters in LDIF export 1) Use GTK for palm character set to UTF-8 conversion rather than assuming ISO-8859-1. 2) Recode base64 encoding routine to follow correct RFC algorithm commit ec48c2f9f4a877d2a45e1a2b45d892d4c3dac39d Author: Ludovic Rousseau Date: Wed Sep 3 11:29:29 2008 +0000 convert in UTF-8 commit 6e6152a9aafd05415ec261d6026685f4c65b80bf Author: Ludovic Rousseau Date: Wed Sep 3 10:18:07 2008 +0000 update commit 544723c84c6495383de89f955461cbc6681ea352 Author: Ludovic Rousseau Date: Wed Sep 3 10:07:43 2008 +0000 declare oc_strnlen() to avoid: otherconv.o: In function `other_to_UTF': otherconv.c:183: undefined reference to `oc_strnlen' otherconv.c:212: undefined reference to `oc_strnlen' otherconv.o: In function `UTF_to_other': otherconv.c:265: undefined reference to `oc_strnlen' commit dc19724b4c4347f2700f00eb3474a5b2c10e4531 Author: Rik Wehbring Date: Tue Sep 2 06:20:02 2008 +0000 Overhaul of ical export code. Fix Bug1678, incorrect truncation in middle of UTF-8 character Fix VCARD/ical export to use CRLF as end-of-line as called for in RFC Ensure RFC maximum line length of 75 is obeyed commit 4100fbec7d2737b58e39d398b39d5c8805a62d11 Author: Rik Wehbring Date: Tue Aug 26 03:26:53 2008 +0000 Optimizations to character set conversion routines derived from code profiling. commit cddbcb833d0486eda544bf2be04cbaeb5cbc3590 Author: Rik Wehbring Date: Sat Aug 16 07:59:47 2008 +0000 Fix bug where changing calendar date on a modified record and clicking yes to save changes did not update calendar to newly selected date. commit 53718edcfcbe99aa859568f9267568e75fe961ea Author: Rik Wehbring Date: Thu Aug 14 21:18:15 2008 +0000 Fix ical export format for repeating events where last occurrence of event was not included commit 3549f05eefb4f60d183f8357a0135cf668f0cf0c Author: Ludovic Rousseau Date: Wed Aug 6 19:18:31 2008 +0000 patch from Fedora http://cvs.fedoraproject.org/viewcvs/devel/jpilot/jpilot-0.99.9-trans.patch?view=markup commit 525251bd4c6b8393a645ebc15f37972d2de86a37 Author: Ludovic Rousseau Date: Wed Aug 6 19:16:17 2008 +0000 increase line[] buffer Patch from Fedora http://cvs.fedoraproject.org/viewcvs/devel/jpilot/jpilot-0.99.8-overfl.patch?view=markup commit 25b55c509c9a62ea03eb7394b9d4207a625d848d Author: Rik Wehbring Date: Mon Jun 23 17:03:36 2008 +0000 Check for required headers for flock at configuration, rather than compilation, if option has been specified commit b7f6f248080afb206b25fff636b2704df4f096e9 Author: Rik Wehbring Date: Mon Jun 23 03:03:45 2008 +0000 Change a few messages so that existing translation strings can be re-used. Reduces the absolute number of translations required and hence the i18n effort. commit 6303db593b43e6541978a62576b0faa9d8fe6961 Author: Rik Wehbring Date: Fri Jun 20 04:36:41 2008 +0000 Performance improvements suggested by code profiling Inlined a few simple functions. Moved function calls to get_pref outside of loop since value returned was static for the entire loop run. Recoded oc_strnlen to be a thin inline function over library call. commit c83b72f28bd8625804740d5e0b21389beea634e0 Author: Rik Wehbring Date: Thu Jun 19 04:12:08 2008 +0000 Code cleanup for readability/maintainability -Section breaks between major code blocks -common naming conventions across files where possible -remove unnecessary #includes -remove unused #defines -common file name syntax, jpilot.xxx, for files in .jpilot directory -for files with large lists of functions, alphabetize lists as practical organizational strategy commit 374a16cdf4d0f3aa23a5d1001cf56500b692cc12 Author: Rik Wehbring Date: Wed Jun 18 02:40:02 2008 +0000 Include help strings from plugins in i18n translation commit 6c971821e1eec62b55519b8a513253ecabfd03a3 Author: Rik Wehbring Date: Sun Jun 15 06:08:08 2008 +0000 Always place reserved 'Unfiled' category at end of category list rather than in alphabetical position somewhere in the list. This matches Palm HW and Palm SW behavior. commit b2e3e481e0594644736c2f9b18c4ffea4ed4a691 Author: Rik Wehbring Date: Sun Jun 15 05:05:30 2008 +0000 Forked sync process must return via '_exit' call rather than 'return' from subroutine. commit eed1b27bace32e7023f5cdd3ffaf04e2a7b0f260 Author: Rik Wehbring Date: Sat Jun 14 22:34:12 2008 +0000 Change month printing label to remove unnecessary comma commit 745415020647a5292652410276d00adc52891d29 Author: Rik Wehbring Date: Sat Jun 14 22:33:21 2008 +0000 Clean up variable names and add section breaks to code commit f4f5eb973575ac844f693d041fe29b6971f4bd88 Author: Rik Wehbring Date: Sat Jun 14 22:10:47 2008 +0000 Standardize names for textview widgets and buffers commit 78acacdc49c6153233173a2b88d8d0883cdf648e Author: Rik Wehbring Date: Sat Jun 14 21:10:34 2008 +0000 Finish patch to remove GTK 1.x macro calls commit 2c4102baa519806de1a5bc1009388a259fc4f0af Author: Rik Wehbring Date: Sat Jun 14 20:57:04 2008 +0000 Remove macros implementing deprecated GTK1.x calls commit c4aa11d9af6d225f8c50607efb12913501d4f391 Author: Rik Wehbring Date: Fri Jun 13 01:31:04 2008 +0000 Change ordering of constant in if expression to make it clearer what test is being performed commit 7434f821bed8aa911b55a0c886a20c16b7353fa5 Author: Ludovic Rousseau Date: Wed Jun 11 20:39:54 2008 +0000 delete_pc_record(): convert description and note from J-Pilot to Palm encoding Closes: 1926: It is not possible to remove a datebook record containing non-ASCII characters commit f7093ae880ad03443741c7c6ed7d3a577913685e Author: Ludovic Rousseau Date: Wed Jun 11 19:43:47 2008 +0000 remove an extra ", " in a debug log commit ab299d17fb4c719c3fb9aa1a78f0533997389252 Author: Ludovic Rousseau Date: Wed Jun 11 12:38:46 2008 +0000 activate locking code commit 448b87aeb9d9c4eb9949ab1a2cb35359ae41d1d5 Author: Ludovic Rousseau Date: Wed Jun 11 12:38:06 2008 +0000 debug locking code commit a9276c59db44bd922a152bed82c5a0f65e398dae Author: Ludovic Rousseau Date: Wed Jun 11 11:56:07 2008 +0000 Do not use flock if USE_FLOCK is not defined. Closes 1925: 1.6.0 has compile error on Solaris - utils.c uses flock which is not available commit 2fefaa6010c44e24528cc6891cbe1220bac6e206 Author: Ludovic Rousseau Date: Wed Jun 11 06:53:45 2008 +0000 cb_sync(): do not fork on Mac OS X. Solves bug 1924: JPilot crashes on MacOS X commit 003227956c62498640c6e687cb13353fd097c72a Author: Rik Wehbring Date: Mon Jun 9 17:47:31 2008 +0000 Fix compiler warning properly around ivalue in utils.c commit a1c13f0331a5c5f556dfc3595c13e7dd35bbf52b Author: Rik Wehbring Date: Mon Jun 9 17:43:10 2008 +0000 Eliminate unnecessary macros in configure.in commit 34242eafdf081611e7858c947e2c9a158506b06b Author: Rik Wehbring Date: Mon Jun 9 17:23:37 2008 +0000 Check for locale.h during configure as it is required by gettext.h to implement context-sensitive messages. commit 59e2af253ca26cedba08dc484745763a3c506cda Author: Rik Wehbring Date: Mon Jun 9 17:21:31 2008 +0000 Correct undeclared ivalue introduced during pref_memo32 check-in commit 3417522549382d04663c94ea596f51727f48ca25 Author: Rik Wehbring Date: Mon Jun 9 16:31:24 2008 +0000 Correct some indentation around #ifdefs commit 4e40fffe940da7f4fe4263f12368bcec77714166 Author: Rik Wehbring Date: Mon Jun 9 16:27:54 2008 +0000 Switch over obsolete memo32 preferences to using pref_memo_sync and pref_memo_version. commit 735d9d447f5db7d61e21324d191fbe0ea740b1b4 Author: Rik Wehbring Date: Mon Jun 9 15:28:13 2008 +0000 Replace deprecated calls to bzero with memset commit 19f113c5de0ddd14bbfa1c47df70b8577f80c5e2 Author: Rik Wehbring Date: Mon Jun 9 03:29:50 2008 +0000 Gettext requires mkinstalldirs in source OR a version of automake >= 1.9 commit 192e16947035e139600799f3212e7f833ff83ebf Author: Ludovic Rousseau Date: Sun Jun 8 14:04:44 2008 +0000 check for defined(ENABLE_NLS) instead of defined(HAVE_GETTEXT) HAVE_GETTEXT is defined if the system provides gettext but not if intl/libintl.a is used (on Mac OS X) commit 331ea36df50c8b287e96eb1256d2265611f58a92 Author: Rik Wehbring Date: Fri Jun 6 23:09:01 2008 +0000 Recode sync process for simultaneously (palm and PC) edited records. Process now accurately detects whether records have been changed versus the old code which missed 1Byte differences. Process is also more robust and produces fewer Sync Conflict messages. commit 7cc13f08bdbe89cf61076d9065e407afbdf42fe4 Author: Ludovic Rousseau Date: Fri Jun 6 16:01:53 2008 +0000 wrap plugin_unpack_cai_from_ai() in a new static function keyr_plugin_unpack_cai_from_ai() so that the plugin can call keyr_plugin_unpack_cai_from_ai() instead of any plugin_unpack_cai_from_ai() found in memory (like the plugin_unpack_cai_from_ai() from Expense plugin) commit 08252c65572a3989849cc1894f429d7bc71f8a14 Author: Ludovic Rousseau Date: Fri Jun 6 15:57:28 2008 +0000 plugin_unpack_cai_from_ai(): add a log commit c396915efbc1a687391ac5e5fd95aa91bb6988fe Author: Ludovic Rousseau Date: Fri Jun 6 15:56:29 2008 +0000 remove two unused global variables commit 8c409619d5f907cd36b44e3caa4dc89ec93a5bd8 Author: Ludovic Rousseau Date: Fri Jun 6 15:53:28 2008 +0000 declare global variables static to avoid name space pollution commit 861490e67451226eeb5c007f11df4d2093b60697 Author: Rik Wehbring Date: Fri Jun 6 01:58:02 2008 +0000 Clear compiler warning about implicitly defined function commit 7584b452888c228b6582b09dfb9428fe830f8e57 Author: Rik Wehbring Date: Wed Jun 4 21:24:23 2008 +0000 Remove "is" to make string resemble others, possibly fewer i18n translations required. Extra space on end of string is intentional to match "Fetching... " string and to have a space between the information and the success string "OK" commit 4e6b638748b0aa11039ca2fa3100cf023d25ff28 Author: Rik Wehbring Date: Wed Jun 4 20:42:13 2008 +0000 Fix enable-alarm-shell-danger in configure.in on HEAD branch of CVS commit cef86037dbda988353fc83a8e21a65d66447944a Author: Ludovic Rousseau Date: Wed Jun 4 20:06:26 2008 +0000 translate fuzzy strings commit 7e41af2f1d8178311f2fa95ab63b86e668b20da4 Author: Ludovic Rousseau Date: Wed Jun 4 19:50:42 2008 +0000 sync_install(): remove trailing space in log message commit 23f920ad6e8bfaf83b73d8943b5deec7b3b908fc Author: Ludovic Rousseau Date: Wed Jun 4 19:17:18 2008 +0000 address_gui(): create the buttons "Dial" and "Mail" with the same width commit a448f8dbedaf4d2b29b7bf2157244015453829a3 Author: Rik Wehbring Date: Wed Jun 4 18:07:40 2008 +0000 Remove unused code from development of picture interface. commit 875007fbb757dc5faf91efc0b24ee8d657b6f211 Author: Rik Wehbring Date: Wed Jun 4 17:52:21 2008 +0000 Properly line up Dial menus, IM menus, and website button in contacts GUI commit 97ba02aa04d7e518e145d0c3ce96ac6a2997b21a Author: Rik Wehbring Date: Wed Jun 4 17:10:19 2008 +0000 Prevent double log messages to GUI and Palm when a file can't be opened. Excess warning messages produced when a file, such as ContactsDB-PAdd, doesn't exist. commit 16307990732cf708bd8d0f0065544556bfbe10db Author: Rik Wehbring Date: Wed Jun 4 16:58:08 2008 +0000 Remove unnecessary spaces at ends of translated strings commit 786e79419f58c39cb7ab6e4d0c9d143a57dab14f Author: Rik Wehbring Date: Wed Jun 4 05:49:32 2008 +0000 Remove redundant code to get to the start of GList. Code had already been removed for all other applications but escaped notice in the new contact.c code. commit 00691ed92d2c86cc54a1633601f0f12a266f620d Author: Rik Wehbring Date: Wed Jun 4 01:16:34 2008 +0000 Align "Date:" correctly with spinner boxes commit 4b86e58783d720209c62d9117c418131e7480feb Author: Rik Wehbring Date: Tue Jun 3 23:47:00 2008 +0000 Recode string to reuse exsting i18n translations commit 98eec1e61a8dfb1797a4177b341fa7ebe09f255c Author: Ludovic Rousseau Date: Tue Jun 3 19:28:25 2008 +0000 correct spacing using gtk_table_set_col_spacings() instead of extra " " characters commit caa1b42b69b395b011962a84212c5783b9f08c02 Author: Ludovic Rousseau Date: Tue Jun 3 19:15:46 2008 +0000 define N_(str) also if HAVE_GETTEXT is not defined commit b4f0035be407220f935322dfb85fe1bd563f6387 Author: Rik Wehbring Date: Tue Jun 3 15:44:40 2008 +0000 Improve appearance of Settings tab in preferences by adding some space between label and widget next to it. commit e349b3352dc069ed92c2731276b643bf2ffba5a1 Author: Rik Wehbring Date: Tue Jun 3 15:28:21 2008 +0000 Make alarm note and description substitution labels insensitive when the feature is disabled in the build. commit f608cde920fba9129f6830790f6ae7dbe4cacbd7 Author: Rik Wehbring Date: Tue Jun 3 03:23:15 2008 +0000 Add "Edit Categories..." item to pulldown category menu. Editing categories is now reached through the category menu just as it is on the Palm or the Palm Desktop SW. commit 5d2146a5ab45acb6e943617442264e2fd2f9404b Author: Rik Wehbring Date: Tue Jun 3 01:25:55 2008 +0000 Use local stack variable rather than malloc in export routine. Simpler code and it now matches what is done in datebook_gui.c and address_gui.c commit cd1b15fd809a98527201f0f6437b667f1d57c298 Author: Rik Wehbring Date: Tue Jun 3 01:08:57 2008 +0000 Reorder Datebook tab in preference GUI so that options are grouped more logically. commit 4150a38d83cafe21f544ec8996972db42c3aedfc Author: Rik Wehbring Date: Tue Jun 3 01:04:40 2008 +0000 Clean up synctime code. Use standard return values from functions. commit 2493aedd58790b6b2c59ebac2219d5f5cf71f74b Author: Rik Wehbring Date: Tue Jun 3 01:02:53 2008 +0000 Remove support for GTK1 in Jpilot Significant gains in code readability and maintainability. 1500 lines of code no longer required to be maintained. commit 26a6e2a7c7239bd495f4916ac921cc24f161a324 Author: Rik Wehbring Date: Mon Jun 2 17:24:10 2008 +0000 Add gettext.h to exported files so that 'make distcheck' passes. commit 98f42012cd2f59011094dbe4226b2d19d69d5205 Author: Rik Wehbring Date: Mon Jun 2 03:44:21 2008 +0000 Transition plugins to pilot-link > 0.12.0 commit 8f8c7fc3a5ec01c5e8b6cb312ab01630172def15 Author: Rik Wehbring Date: Mon Jun 2 03:43:02 2008 +0000 Complete transition to requiring pilot-link > 0.12.0 Removed obsolete code to support pilot-link 0.11.8. Code base is now smaller, more readable, and easier to maintain. commit 2d534ef4535595cbaf6a0e1f4f699dbed4070b49 Author: Rik Wehbring Date: Mon Jun 2 01:27:26 2008 +0000 Fix bug 1775 regarding unclear message about syncing commit 15ecfdc3dc45a732d6b4f196ea9d078e94bff7ce Author: Rik Wehbring Date: Mon Jun 2 01:07:41 2008 +0000 Eliminate double "Sync Anyways" dialog commit 6c9160e89b8bb80c4083f97b79ac9f41cec4706c Author: Rik Wehbring Date: Mon Jun 2 00:20:11 2008 +0000 Update user name displayed on jpilot window title if a sync to a new palm changes the name. commit bd16925b36b3f0c46065aa67a9cf7c29b65c2acc Author: Rik Wehbring Date: Mon Jun 2 00:17:40 2008 +0000 Fix bug 1783, Week and Month view window sizes not remembered on exit. commit 711c2b51d98169d7c4f0de62d45a68a416bd1699 Author: Rik Wehbring Date: Mon Jun 2 00:12:39 2008 +0000 Eliminate segmentation fault with DAT import when JPILOT_DEBUG is enabled. commit 264fcc4f0ece41e5fcbd559b8533b627b6f5b529 Author: Rik Wehbring Date: Mon Jun 2 00:09:28 2008 +0000 Validate CSV file before importing. Fixes bug 1810 Validation is very cursory. It merely checks that the header line has the correct number of fields (indicated by commas) as the number of fields that can be imported. More extensive checking based on version numbers in the header could be done at some point. commit 05d393a604047ec7ace96563d4632f24343f44dd Author: Rik Wehbring Date: Mon Jun 2 00:06:19 2008 +0000 Transfer icons from hardcode locations in jpilot.c to icons directory commit 025fac25a6913a1cf8222f6a65a347e968524c55 Author: Rik Wehbring Date: Mon Jun 2 00:05:03 2008 +0000 Clean jpilot.c code 1) Removed unused, but cluttering, font code to font.c 2) Removed inline definition of xpm icons. Icons now reside in icons/ directory and are included with standard #include. Easy to substitute new icons by dropping them into the icons/ directory where they will be built into the application 3) Removed unused #include directives commit face30a80a8284c5f52f1b209f92b32b6763425a Author: Rik Wehbring Date: Sun Jun 1 23:49:29 2008 +0000 Convert jpilot-icon2 to look like all the others commit ad02ddd02c2ab1ae2a29152f51a06c4b1996dfcb Author: Rik Wehbring Date: Sun Jun 1 23:10:30 2008 +0000 Revise strings for i18n usage 1) Don't translate strings which are only used for debugging 2) Make single strings for translation of one sentence rather than building strings through concatenation 3) Use the same string for the same idea so only one translation is made 4) Added translation markup for Payback window, import/export file types commit bdf0255d48f020be0bf0151facda6eb098a88322 Author: Rik Wehbring Date: Sun Jun 1 21:55:08 2008 +0000 Addendum to gettext-0.16.1 conversion commit a08554bdd6afb416cad4635d4411d10868507372 Author: Rik Wehbring Date: Sun Jun 1 21:34:53 2008 +0000 Fix bug1778 (i18n requiring different translation based on context) commit 527462fc2dbebc4e1d847b5c0ffd7adb39fca154 Author: Rik Wehbring Date: Sun Jun 1 21:33:07 2008 +0000 Upgrade package to gettext-0.16.1 Newer gettext allows context-sensitive messages. commit ca2d673ca89b890c7e9c8282680329745e10f3e3 Author: Rik Wehbring Date: Sun Jun 1 19:07:55 2008 +0000 Change filename README.txt over to README which is GNU autotools standard Updated README text as well. commit a7891d7567c01c326d8514735c9f0e4520fd4e6b Author: Rik Wehbring Date: Sun Jun 1 19:02:59 2008 +0000 Code to allow keyring plugin to follow category changes on the Palm. Fixes Bug 1412. KeyRing uses a non-standard size CategoryAppInfo structure (2 bytes shorter than what pilot-link uses) and so a specialized version of pack/unpack_CategoryAppInfo was written. commit 9542730ad30bf3f5c0d24113ab851cfd04be926a Author: Rik Wehbring Date: Sun Jun 1 18:54:03 2008 +0000 Delete items already completed in TODO file commit b6f845dd2e21aa6e4ca6218da0b19090b2b7cbdc Author: Rik Wehbring Date: Sun Jun 1 18:52:53 2008 +0000 Major overhaul of category syncing logic Fixes Bugzilla 1563 (Inconsistent categories between palm and Jpilot) Fixes Bugzilla 1570 (First hot-sync changes address categories) Reverse engineered Palm category syncing logic by comparing Jpilot behavior to Palm Desktop behavior. Discovered many undocumented features now included in code (mostly sync.c). Discovered bug in unpack_CategoryAppInfo (filed as 1912) and placed a workaround in Jpilot code. See unpack_memo_cai_from_ai. commit 2ed35bedf40afa03f03d7999020483203fdca666 Author: Rik Wehbring Date: Sun Jun 1 16:30:23 2008 +0000 Eliminate redundant call to aclocal in build scripts commit d72bb9bb6407715bdc0b9870ae6325c9a556a4df Author: Rik Wehbring Date: Sun Jun 1 16:25:44 2008 +0000 Bump version to a developmental number (1.7) Bug reports, etc., from users building from CVS will now indicate by version number that they are using unreleased code. commit afc77eaab7bd92d7ebae3a473aba2f43f33181f1 Author: Judd Montgomery Date: Sun May 25 19:14:44 2008 +0000 Changed to version 1.6.0 commit af580ff634de8921bb79f83a464f7843d737567e Author: Judd Montgomery Date: Sun May 25 19:13:20 2008 +0000 added new empty databases commit 67c7fa34d6fe077f0b938cbbb9767aaa4b0c39bc Author: Ludovic Rousseau Date: Sun May 25 09:46:20 2008 +0000 Mac OS X only: improve performances of the clist clearing hack commit 8d13d50bc1f2d63c49d8ef59d90f950bff77229b Author: Ludovic Rousseau Date: Sun May 25 09:31:07 2008 +0000 Mac OS X only: hack to erase a clist before displaying it again commit 5517d4ac077f13eea775f39e9d9f43cf9930354b Author: Rik Wehbring Date: Sat May 24 14:53:13 2008 +0000 Eliminate seg fault in export when note field is longer than description field commit 03e344d8bc09a39306a3e375e09a287c7394a72f Author: Rik Wehbring Date: Thu May 22 22:03:19 2008 +0000 Place message about stock buttons in configure summary. Raises the visibility of the option so users can know and decide whether to turn it on or off commit 5569b25ca6d42a5096e5c336bc1b1eaff80b51e9 Author: Ludovic Rousseau Date: Wed May 21 13:30:19 2008 +0000 translate strings commit c6bd8bda6efbfbc0c726ae2ebf878641712fe51c Author: Ludovic Rousseau Date: Wed May 21 13:29:49 2008 +0000 cb_memo_export_ok(): i18n "Yes" and "No" commit 2809924746515f8d5efb644265c348acac7d7fa2 Author: Ludovic Rousseau Date: Wed May 21 13:24:17 2008 +0000 cb_addr_export_ok(): i18n the format "%s: " commit bc021d3a3b7ccd635f6faf4364f132dc389d102b Author: Ludovic Rousseau Date: Wed May 21 13:18:44 2008 +0000 datebook_to_text(): i18n the Repeat Type string commit e34ae5d03301f55145ca737fca346806ee82a125 Author: Ludovic Rousseau Date: Wed May 21 13:14:58 2008 +0000 datebook_to_text(): split a i18n string to avoid text duplication commit d60082cf4067893217a2d911125214868bf59872 Author: Judd Montgomery Date: Sat May 17 03:13:52 2008 +0000 updated from translation project commit 090de4daae09eaf6019c63b7f812154708aa5c21 Author: Judd Montgomery Date: Thu May 15 16:31:24 2008 +0000 stock buttons enabled by derfault commit 9fe48b6e2dc21bc4200ef08d14cab286be094fdc Author: Ludovic Rousseau Date: Wed May 14 18:46:20 2008 +0000 get_inline_pixbuf_data(): use gdk_pixbuf_unref() instead of g_object_unref() to release a gdk_pixbuf_new_from_xpm_data() commit 3958cad33a8463a529efd62f22ecf5b2808a66e3 Author: Rik Wehbring Date: Wed May 14 18:24:46 2008 +0000 Update version to pre4 Remove last bits of configuration code for pilot-link versions before 0.12.0 commit 91bb669fe43085a840000ce7fddd43dbbb2286fe Author: Rik Wehbring Date: Wed May 14 18:05:38 2008 +0000 Expand on segfault fix for search gui during sorting. Problem was not just that case statement needed a default clause but that addr_sort_order was not initialized properly. commit d4f6590d9e2d71f331b57c0d9346146b6366bda6 Author: Ludovic Rousseau Date: Wed May 14 12:01:33 2008 +0000 contact_compare(): initialise sort_idx[] to sane default values. Avoid a crash when using the search function commit d372ff6dc1fb74bdee13f13cd22333f90243bd86 Author: Ludovic Rousseau Date: Sat May 10 16:07:38 2008 +0000 cb_todo_export_ok(): initialize variable to NULL todo_gui.c:632: warning: ���now��� may be used uninitialized in this function commit bfcdbce515b35180ae52b248acdc849448f093d1 Author: Ludovic Rousseau Date: Sat May 10 16:06:09 2008 +0000 comment out unused/deactivated category edition code todo_gui.c:2034: warning: unused variable ���button��� todo_gui.c:1281: warning: ���cb_edit_cats��� defined but not used commit 2c4f491e9ff56fa773631c21551d292e198ea07f Author: Ludovic Rousseau Date: Sat May 10 16:04:24 2008 +0000 Comment out unused category edition code memo_gui.c:1445: warning: unused variable ���button��� memo_gui.c:980: warning: ���cb_edit_cats��� defined but not used commit b380420c6be03a8d49ce94958c6cff46bdce133e Author: Ludovic Rousseau Date: Sat May 10 16:01:39 2008 +0000 comment out two unused functions address_gui.c:2249: warning: ���cb_edit_cats_address��� defined but not used address_gui.c:2289: warning: ���cb_edit_cats_category��� defined but not used commit 790d6400629042f6736472e4b534b95a01869581 Author: Ludovic Rousseau Date: Sat May 10 15:59:36 2008 +0000 cb_delete_appt(): remove the write_type variable and avoid a compiler warning datebook_gui.c:2845: warning: ���write_type��� may be used uninitialized in this function commit e89f41212c2356c5fd6d8b3e0fc0b60b7ecdc995 Author: Ludovic Rousseau Date: Sat May 10 15:49:35 2008 +0000 comment out unused cb_edit_cats() function address_gui.c:2336: warning: ���cb_edit_cats��� defined but not used commit de58e8b7ff3f4712165bc7bdaa8af3172aaf726e Author: Ludovic Rousseau Date: Sat May 10 15:48:39 2008 +0000 appt_export_ok(): initialize variable now datebook_gui.c:688: warning: ���now��� may be used uninitialized in this function commit 10b26de58b53a1baaa0ddfdef8a2cc37cbaf1080 Author: Rik Wehbring Date: Thu May 8 13:52:10 2008 +0000 Temporarily remove button to edit categories for 4 main apps PDAs are for saving data and time. Unfortunately the category sync code often loses data and results in lost time trying to recreate the original database. The simplest remedy is not to offer the edit category button and have users change categories on the Palm. I have not changed libplugin.c so there is still a backdoor by which plugins like Expense can use the faulty code. commit 316368f4afffc65650f0847f6d662ea25d373e8d Author: Ludovic Rousseau Date: Thu May 8 13:48:59 2008 +0000 use _() instead of gettext() expense.c:1313: warning: incompatible implicit declaration of built-in function 'gettext' commit dbac928a84c09bcb4519c3f9cbff3a010126fdad Author: Rik Wehbring Date: Wed May 7 13:58:15 2008 +0000 Fix compilation for GTK < 2.10 reported on message boards commit d0290255ffe2961a6777d7aaab85a24be4967e6c Author: Rik Wehbring Date: Tue May 6 00:11:52 2008 +0000 Eliminate all compiler warnings for 1.6 release commit b1e16daf90e6f31ada5632682e959a0762ca9e61 Author: Rik Wehbring Date: Mon May 5 20:21:05 2008 +0000 Remove use of strptime for CSV import because the function is not very portable across platforms. commit 35beeb4f9a94b81723afc69ffb58efc7a84260c6 Author: Rik Wehbring Date: Mon May 5 19:50:32 2008 +0000 Ignore auto-generated Makefile.in.in commit e53f032194bde6be471c722ec21daf700eba6b3b Author: Rik Wehbring Date: Mon May 5 19:49:54 2008 +0000 Regenerated for 1.6 release. This file should possibly be removed from CVS and autogenerated by the user commit 539dfeeff5a4664db36513dba3bc36d2ed22818e Author: Rik Wehbring Date: Mon May 5 19:47:13 2008 +0000 Makefile.in.in should be provided by gettext or intltool package commit 648e12c032d26b8e101e7e4c8bace2ace3c0752e Author: Rik Wehbring Date: Mon May 5 19:32:07 2008 +0000 Eliminate some compile warnings commit 826d9dd09e1335a1354484709db01053447cf0fc Author: Rik Wehbring Date: Mon May 5 19:10:16 2008 +0000 Configure script now requires pilot-link > 0.12.0 to build commit ca51b33dfaf2923929a9ae1448a132b43cb39d79 Author: Judd Montgomery Date: Sat May 3 17:16:54 2008 +0000 Fixed stack smashing bug in printing commit 0be7804368249934f25ae00e6ebd7302f9c3edfa Author: Judd Montgomery Date: Sat May 3 16:37:49 2008 +0000 Fixed Palm OS version number to have new databases. I'm not 100% sure about this. I seem to remember a 5.4 device without the new apps. commit 65a05a3419aad465ee4b27fb65dbbe3627933cfb Author: Judd Montgomery Date: Sat May 3 15:58:48 2008 +0000 Should fix bug 1918 - A Contacts database with a "version 10" appinfo structure is in the empty directory and I believe most Palms have version 11. The T/Es have a version 10. An app info struct that was too short (version 10 size) was being written to the Palm and would cause it to need to be hard reset. I tested this with my Treo 680, however I did not test it before I made this change to verify the need to hard reset. We might want to have a version 11 database in the empty directory, but I want to test this fix with a version 10. commit a3fd32ebfaf48c8ddd5b93261dd192e37da029ab Author: Judd Montgomery Date: Sat May 3 15:11:19 2008 +0000 updated from the translation project commit 0c465c01da603b2a09caf1745c702830c0ab0550 Author: Judd Montgomery Date: Sat May 3 14:40:46 2008 +0000 updated from the translation project commit cdde2b662f5c1106d285537a60aa964ed58065cc Author: Judd Montgomery Date: Sat May 3 03:06:38 2008 +0000 updated to version 1.6.0-pre2 commit 279f31055f68075bee9686ce03c970fc8fbed6c8 Author: Judd Montgomery Date: Sat May 3 03:02:40 2008 +0000 Added po/jpilot.pot to EXTRA_DIST commit ccec0488bf1a6030229cf896fdc25f3b886041b1 Author: Judd Montgomery Date: Sat May 3 02:58:16 2008 +0000 revert previous patch for yellow/white today commit 20d8765cc66c1b84a4ec6da0218f1dbe9365ace7 Author: Judd Montgomery Date: Fri May 2 18:24:16 2008 +0000 patch for making today white/yellow commit 71dfbe8c68b4e8c3bd1c437c84d30af47817b5dc Author: Judd Montgomery Date: Fri May 2 18:18:50 2008 +0000 minor format change and comments commit b736d962426a85dceae480d8d6081b6b32b19965 Author: Judd Montgomery Date: Fri May 2 18:16:44 2008 +0000 updated version commit 7a31c885749d5def8a718bc1a70ed688c7ee62b2 Author: Rik Wehbring Date: Thu May 1 22:29:14 2008 +0000 Allow for a resizable name column whose width is remembered. commit fac32803784f2a8e8c7b2460c48fc518b93fc001 Author: Rik Wehbring Date: Thu May 1 19:58:12 2008 +0000 Fix bug where first name, last name, and company were required to fit in 30 characters in clist commit 2f1bf340f10751fc5e38c64d9aa94859c333e7b9 Author: Rik Wehbring Date: Thu May 1 19:31:06 2008 +0000 Visual clean up of jp-contact.c, jp-pi-contact.h Indentation, correct comments, use standard variable names and return values commit 2bf54b4168ca3ce1fdb1aff3377436386ebc4696 Author: Rik Wehbring Date: Thu May 1 19:28:44 2008 +0000 Plug memory leak in contact category editing commit c1400863af2edf5c1bdce7ddcb55c39bade6778f Author: Rik Wehbring Date: Thu May 1 04:04:00 2008 +0000 Eliminate redundant function call commit 1adf47da6461e2f6b1510c257cdf0b7833386309 Author: Rik Wehbring Date: Thu May 1 04:03:32 2008 +0000 Revise datebook_update_clist function to look like the other 3 applications commit 2e48ff91c5232af052cb8d4329ec40d9c4fd9596 Author: Rik Wehbring Date: Thu May 1 03:45:44 2008 +0000 Fix bug where export caused clist_row_selected to be altered for the original clist commit 4564f426ae68f296de85aca6c0e21c186335e010 Author: Rik Wehbring Date: Thu May 1 00:39:25 2008 +0000 Fix out-of-bounds memory dereference affecting photo code commit 2389e4b66e651a02366d433c2667758314f6cd98 Author: Rik Wehbring Date: Wed Apr 30 23:26:06 2008 +0000 Plug memory leaks for plugins during syncs commit 4c35520b46aec29f93e61fc63c48c12c4609fb62 Author: Rik Wehbring Date: Wed Apr 30 19:52:00 2008 +0000 Plug memory leaks with photo code for Contacts commit 163cc65cc80693c10673ec88a3c079cee08fed50 Author: Rik Wehbring Date: Wed Apr 30 18:08:18 2008 +0000 Plug memory leaks in contacts and import code commit b8d719989d614ec2b0c47182f4fae8f72d510a16 Author: Rik Wehbring Date: Tue Apr 29 19:22:38 2008 +0000 Fix return/shift-return key strokes to move between left and right-hand side of Jpilot Address GUI commit b3a2bdb4e296e7c96f0b3927d4e8586764a14858 Author: Rik Wehbring Date: Tue Apr 29 19:11:32 2008 +0000 Clean code up with more meaningful #defines commit b8aa04a362a6afe7190b7305c89113c87a4311e5 Author: Rik Wehbring Date: Tue Apr 29 18:51:18 2008 +0000 Reorder phone buttons to display them as the Palm Desktop does. The Palm SW has the phone menus in one order but actually displays the phone buttons in another. This actually enhances usability because they have demoted Fax and promoted E-mail and Mobile which people use more frequently today. commit 8a2733d7a8ac11c8889a98724b81f06c7595cccd Author: Rik Wehbring Date: Tue Apr 29 14:21:24 2008 +0000 Eliminate hack to put pixmap in clist column titles commit d480bfcdc2850e55e3c8316898e6886d85aa2145 Author: Rik Wehbring Date: Tue Apr 29 04:15:16 2008 +0000 Add ability to sort addresses by first name, last name, or company as the Palm Desktop software does commit 1b20182469bb817d529d8722349957f1b4112c40 Author: Rik Wehbring Date: Mon Apr 28 21:11:10 2008 +0000 Add extra #define to help make address_gui code more readable commit fb34d7b439b0380ff64325231295553c3bfd8f2c Author: Rik Wehbring Date: Mon Apr 28 20:30:13 2008 +0000 Contact code cleanup 1) Eliminated unnecessary routines 2) Replaced hardcoded numbers with #defines 3) Clear contact routine update so information such as the picture or birthday field isn't leaked when masking is on. commit 4610d253828cc447dd4b4f7088db0c23744edd91 Author: Rik Wehbring Date: Sun Apr 27 16:32:31 2008 +0000 Quit import dialog after a successful import It is more natural after selecting import all for the user to be returned to Jpilot rather than returning to the file selection dialog to possibly import another file. commit 6a52ba1e2d2729b5aedd728ec90183027447db79 Author: Rik Wehbring Date: Sun Apr 27 16:30:19 2008 +0000 Identify export window as belonging to Jpilot All other popup windows have Jpilot in the title to help the user, via the window manager, identify which windows belong to the same application. commit 00057daaaa28af4d61485d7d691893f148c1fb04 Author: Rik Wehbring Date: Sun Apr 27 16:06:12 2008 +0000 Hide DAT/ABA import button for Contact and Memos import since it is not currently supported commit 5fb2b13695b3030ee26df928b2f1a178aceddd5a Author: Rik Wehbring Date: Sun Apr 27 15:10:49 2008 +0000 Undo checkins 1.140, 1.141 CLIST widget is so old and deprecated that it causes problems with the pointer focus in GTK/GDK that I can't resolve. After a change/save dialog the user must click on the Jpilot application to re-activate the window and give pointer focus back to Jpilot. commit 674b5e40b0f81f5f53ce3041283eee09846e48b0 Author: Rik Wehbring Date: Sat Apr 26 12:03:04 2008 +0000 Default birthday reminder to value of TODO_DAYS_TILL_DUE rather than the empty string commit 08710648112b26954c29865c08dab086becd6fa3 Author: Rik Wehbring Date: Sat Apr 26 11:23:08 2008 +0000 Export now prints out which database, Memo or Memos, was exported. commit e4917484eecf0dbc0194b1afef4de6abafd332c2 Author: Rik Wehbring Date: Sat Apr 26 11:21:32 2008 +0000 Eliminate compiler warning for pointer focus bug fix commit a9359f4f60cac9089e98369992dfffa18ad04967 Author: Rik Wehbring Date: Fri Apr 25 23:40:27 2008 +0000 Fix bug where pointer focus was not returned to Jpilot after save/change dialog and required an extra mouse click to re-activate application commit 42f54b32b5c949358608e100b17fc2cdcec289cc Author: Rik Wehbring Date: Fri Apr 25 22:46:14 2008 +0000 Instrument code for switching between old and new versions of Palm databases commit e1a9bfa25eb0d89e33916e6696faa2c731bc54b6 Author: Rik Wehbring Date: Fri Apr 25 22:23:22 2008 +0000 Export Birthday Reminder Advance for CSV exports CSV can now be used to export/import data to contacts database without loss. commit e371d17829e4f8d8b5981879b159c72751ae7bc6 Author: Rik Wehbring Date: Fri Apr 25 04:42:55 2008 +0000 Fix bug where reminder field of birthday was not cleared when moving between rows in clist commit 90d7758a263ff2c2c69aa4e78836776eaf53a64e Author: Rik Wehbring Date: Fri Apr 25 04:34:52 2008 +0000 i18n for text type exports TEXT export messages are now translated to the current locale. commit 73f5b66a2716259f3b01943eb887bab50634678e Author: Rik Wehbring Date: Fri Apr 25 02:42:12 2008 +0000 Overhaul of import code remove cruft Highlights 1) Consistent naming convention using cb_ for callback routines 2) ToDo CSV import now correctly handles completed todos commit 999c506bf5628970b30686153b488ca08bc4a2cb Author: Rik Wehbring Date: Thu Apr 24 22:12:52 2008 +0000 Fix bug where TEXT type exports did not include the Birthday field commit a4263c0948faece55837ed471b204824c01e764e Author: Rik Wehbring Date: Thu Apr 24 01:26:01 2008 +0000 Redrafted export code 1) All export code now uses similar style. 2) Jpilot version is placed in export files. This could be used in the future on the import side to determine compatibility. 3) All category names are UTF converted. commit 36418ec77be629a1cf8bea116440cb25c77e773a Author: Rik Wehbring Date: Wed Apr 23 22:14:38 2008 +0000 Rename jp_free_ContactList to free_ContactList because it is not a true jp_ namespace function commit 8fccb25d1f677c7e4c030bc98d58d1c7d859b8a7 Author: Rik Wehbring Date: Wed Apr 23 22:09:16 2008 +0000 Replace tabs with spaces so file pretty prints without respect to user tab spacing commit 288a694c2234a0fd28a20b18bf95778af7db31a0 Author: Rik Wehbring Date: Wed Apr 23 22:02:38 2008 +0000 Fix Bug 1899: CSV import for contacts does not work Issues: 1) The code uses strptime as an inverse for strftime. This may not be available on all platforms or may need a #define to enable it. 2) The birthday CSV export does not print out the details for the reminder portion of the field. Thus some data is lost and it is not possible to do an export CSV/import CSV and come up with the same palm database. commit 2403bc4b99cad193f1d83577e8af251776b648f9 Author: Rik Wehbring Date: Tue Apr 15 23:41:49 2008 +0000 Fix bug where hide/show/mask radio button in menu did not follow actual state of hidden records IF the padlock button on the left-hand edge was used to change state rather than the menu itself. commit a54f731b3f47b8243cd6667ef6e9d96090f3ae91 Author: Rik Wehbring Date: Tue Apr 15 03:28:05 2008 +0000 Fix Bugzilla 1909: Backup does not fully restore palm Incorrect logic was eliminating all files with the creator ID psys which included psyslaunchDB that holds the user specified application categories. A comparison with Palm Desktop shows that it backs up the file ConnectionsDB with creator ID modm. Jpilot was wrongfully excluding modm files. commit 339173f5e81d3bc8f85c58ad12de04886e3551a6 Author: Rik Wehbring Date: Thu Apr 3 15:59:59 2008 +0000 Fix Bugzilla 1900 : Copy and Paste into GtkEntry displays garbage for newline character. Added new routine to utils.c to turn on multiline truncation for GtkEntry widgets. With truncation on, only the first line of input in the paste buffer is used by GTK. Modified most code locations to turn on the new property. Exceptions are where multiline characters *might* be appropriate such as file save dialogs, search gui, password fields, and UNIX commands fields. commit ba1888d32cb80c75476969240e7ac3770998570a Author: Ludovic Rousseau Date: Fri Mar 14 17:42:47 2008 +0000 when comparing the command line arguments go up to the final NUL so that "-psn_0_290887" is not considered equal to "-p" commit 73a193b9ea92c294f807a021654a67dd4803cd43 Author: Ludovic Rousseau Date: Sun Feb 24 10:26:13 2008 +0000 jp_open_home_file(): do not fail if flock() returns ENOLCK as this may happen on some filesystems (encfs for example) commit 1d95059ac6796afdc59b6d5ccd3985df9f7262ee Author: Ludovic Rousseau Date: Sun Feb 10 16:47:16 2008 +0000 cb_addr_export_ok(): initialise variables to avoid compiler warnings address_gui.c:1180: warning: ���country_i��� may be used uninitialized in this function address_gui.c:1180: warning: ���zip_i��� may be used uninitialized in this function address_gui.c:1180: warning: ���state_i��� may be used uninitialized in this function address_gui.c:1180: warning: ���city_i��� may be used uninitialized in this function address_gui.c:1180: warning: ���address_i��� may be used uninitialized in this function commit 29ffdf87052be1bcb8949e3d6fc0efd3909a01e4 Author: Ludovic Rousseau Date: Sun Feb 10 16:42:35 2008 +0000 cb_addr_export_ok(): convert category name to UTF-8 when exporting to vCard commit 50f73ecf012976caddfd768dddb06aecdcd252f2 Author: Ludovic Rousseau Date: Sun Feb 10 16:38:30 2008 +0000 cb_addr_export_ok(): convert category to UTF-8 when exporting to CSV commit 4c972bdd1077b342d6e98b0b94b9736a17b55bee Author: Ludovic Rousseau Date: Sun Feb 10 16:35:18 2008 +0000 cb_addr_export_ok(): partly reverse patch 1.160. Do not convert (again) field names in UTF-8 commit 620632c0a09a1c1cf213a95e517a35a955d64a01 Author: Judd Montgomery Date: Tue Feb 5 03:54:45 2008 +0000 This fixes a datebook bug. If you would create a reoccuring appt, sync, then delete one day of it, or modify one occurence only, the record would get duplicated at sync time. This is because the record would get modified on the Palm first and then compared to the original, which of course would fail. This bug was not apparent in older code because the record matching was turned off. commit 664e5d38d924abc6c966d4d435963c4b06036394 Author: Judd Montgomery Date: Tue Feb 5 00:57:25 2008 +0000 Added printing support for Contacts and fixed for Addresses commit 9ad7a752404b2a057429aed9cb92bf3328b86b8d Author: Judd Montgomery Date: Thu Jan 31 21:46:18 2008 +0000 Added a 1 line header to CSV export commit 7f9aa68fa8878638e4af34f8602d9844b1e04203 Author: Judd Montgomery Date: Thu Jan 31 19:05:17 2008 +0000 Fixed editing of categories for MemosDB-PMem commit 32933ac05226c40749b88a57f6981b922bcaa7c5 Author: Judd Montgomery Date: Thu Jan 31 19:03:28 2008 +0000 Fixed editing of categories for Contacts commit fe673df02644078dae9a89048b7d150aba274325 Author: Judd Montgomery Date: Tue Jan 29 17:57:58 2008 +0000 Moved Note on Address and Contacts to the next to last tab where it used to be. commit 74df6d19468b94ea64fc6f32adbf40161edbb806 Author: Rik Wehbring Date: Sun Jan 27 22:03:53 2008 +0000 Allow switching between old and new palm databases without restarting jpilot Switching to new palm databases requires that 4 new pdb files be available in the ~/.jpilot directory. The check for these files was previously done only at startup so that changing the preferences would render jpilot unusable until the program was restarted. Now jpilot simply copies over templates for both the old and new databases at startup and can switch over dynamically. commit b120a548d53db37e2ccff3239127a4727c257e5c Author: Rik Wehbring Date: Sun Jan 27 21:03:37 2008 +0000 Remove unused variables to clean compiler warnings commit 2f922373953185effaa179b196953ef00f4f1d34 Author: Judd Montgomery Date: Sun Jan 27 04:14:31 2008 +0000 Added a pulldown menu for serial port setting commit c5edc141678874b989bacf8b33bc79826c48354d Author: Ludovic Rousseau Date: Sat Jan 26 09:47:44 2008 +0000 cb_addr_export_ok(): text mode export: convert Category and field names in UTF8 since the data itself is also in UTF-8. commit 3abd197bc9e9375f60be66849fce35568176c656 Author: Judd Montgomery Date: Sat Jan 26 03:43:24 2008 +0000 Fixed Contact support for exporting as LDIF commit d91e127f35de553bf1d014d8094cd45ac1e58137 Author: Judd Montgomery Date: Fri Jan 25 23:07:27 2008 +0000 Fixed vCard export for Contacts commit dfa8eb97ce7b2cb918a59f9655477bb26e875152 Author: Judd Montgomery Date: Fri Jan 25 21:13:37 2008 +0000 Added support for Contacts commit 38a7a73f5ecc5460daa968c76ebfc1e7f5a0f6a2 Author: Judd Montgomery Date: Fri Jan 25 19:47:21 2008 +0000 remove label for note textview since its on its own notebook page commit 1476de1414eda65a3505c879fcc39524303cd650 Author: Ludovic Rousseau Date: Wed Jan 23 14:11:36 2008 +0000 contact_to_gstring(): do not UTF8-convert an already converted field commit 2b6bc90782a45725e7c5cafcee1ab8abd6396ca4 Author: Judd Montgomery Date: Wed Jan 23 03:12:21 2008 +0000 Put the Notes in Contacts on its own notebook page so its large. Added a scrollbar type to schema and used it to add a scrollbar to notes. commit 144322a9adfbb935652c823c0986a3209d31dfda Author: Judd Montgomery Date: Tue Jan 22 02:22:10 2008 +0000 Fixed Export of Text, and CSV for Contacts. Output formats may change. VCard, and Ldif still need done. commit c27eb46290970eded50019607abcfdd7e7de55b6 Author: Ludovic Rousseau Date: Sat Jan 19 14:22:41 2008 +0000 contact_to_gstring() and make_phone_menu(): convert field names in UTF-8 commit f364b6774f2531b686c25c2acc84b0e22f324a1e Author: Ludovic Rousseau Date: Sun Jan 13 22:25:10 2008 +0000 install_user.c:81: warning: format ���%ld��� expects type ���long int *���, but argument 3 has type ���long unsigned int *��� commit 9293131492c485ab432d3ac403b4cf5df77e9f62 Author: Ludovic Rousseau Date: Sun Jan 13 22:19:06 2008 +0000 prefs.c:183:31: warning: unknown escape sequence '\%' commit 349d0d724225d66ec42abd2ef4ec9cf8f554be51 Author: Ludovic Rousseau Date: Sun Jan 13 22:16:34 2008 +0000 prefs.c:102: warning: missing initializer commit 773ca7954766a83a9cbe2f435093000d864947ec Author: Ludovic Rousseau Date: Sun Jan 13 22:13:33 2008 +0000 remove some warning: nested extern declaration of ... commit ce4f7e0e0241236b38630654987089b38c1bfc07 Author: Ludovic Rousseau Date: Sun Jan 13 22:04:29 2008 +0000 movetwo extern declarations outside of a function todo_gui.c:2008: warning: nested extern declaration of ���glob_date_label��� todo_gui.c:2009: warning: nested extern declaration of ���glob_date_timer_tag��� commit 8b653ef70edf2aca14d3b8ef0276e7524842d7ff Author: Ludovic Rousseau Date: Sun Jan 13 22:00:24 2008 +0000 UTF_to_other(): correctly check the returned value of g_iconv() in case of error. otherconv.c:272: warning: comparison of unsigned expression < 0 is always false commit 52f74fbc3a0995db641b1277203254ced506ea55 Author: Ludovic Rousseau Date: Sun Jan 13 21:54:24 2008 +0000 jp_unpack_ContactAppInfo(): comment out unused variable commit a281db6b110e7fe285d248bd25df1c25ffcb25a7 Author: Ludovic Rousseau Date: Sun Jan 13 21:47:13 2008 +0000 rename free_ContactList() -> jp_free_ContactList() address_gui.c:1244: warning: implicit declaration of function ���jp_free_ContactList��� commit ad2a3d55ad96fd8be3bc828c5d7484c0947410b8 Author: Ludovic Rousseau Date: Sun Jan 13 21:41:52 2008 +0000 jp_pack_ContactAppInfo(): return -1 instead of an uninitialised value in case of error jp-contact.c:543: warning: ���i��� is used uninitialized in this function commit bb82a7f60badb07ede4b7d9fdab2ca38974ab09a Author: Rik Wehbring Date: Sun Jan 13 18:18:29 2008 +0000 Blank ContactDB not being copied correctly. A new user (no sync) has the initial database files copied from the files in /usr/share/jpilot. The code to do the copying was writing an extra EOF character at the end of the file so the two files were not identical. This caused no problems with the old databases but was causing a problem with the new Contacts database. The old code for copying files may appear elsewhere in the code and be causing unspecified errors. commit 1e8f43b3c8b7e1086e280a9746878a87d50e82f2 Author: Ludovic Rousseau Date: Sun Jan 13 14:54:28 2008 +0000 addr_clear_details(): delete the contact picture if any. Before the patch the creation of a new record inherited the contact picture commit 6087a7b683cacc2cb15a30f00ced5cf378a7cd43 Author: Ludovic Rousseau Date: Sun Jan 13 14:40:50 2008 +0000 pack_contact_cai_into_ai(): store the returned value of pi_buffer_new() in pi_buf instead of throwing it away and using a non initialised pi_buf commit 4676dfe07550b33596956183e1e689458ca22337 Author: Ludovic Rousseau Date: Wed Jan 2 16:05:35 2008 +0000 datebook_update_clist(): use NULL mask for gtk_clist_set_pixmap() on Mac OS X commit 7c8fcea6f2ebfa594ec71b28357cf091d0b35a19 Author: Ludovic Rousseau Date: Wed Jan 2 15:38:41 2008 +0000 address_update_clist(): use a NULL mask for gtk_clist_set_pixmap() on Mac OS X commit 635b84f14adc273f1e825d1ae18970043a9f8d2b Author: Ludovic Rousseau Date: Wed Jan 2 15:32:22 2008 +0000 address_gui(): use a NULL mask for gtk_pixmap_new() on Mac OS X commit ea84067c7356e2ade70a940986b453b3a6654bee Author: Ludovic Rousseau Date: Tue Dec 18 21:00:57 2007 +0000 #include "utils.h" to avoid undeclared function warnings rename funtions to avoid name conflicts with functions declared in utils.h commit 3a0ac4e6f0530e40631dd8e44f7e9b6e20ced2b1 Author: Rik Wehbring Date: Tue Dec 18 01:30:07 2007 +0000 Searches which return datebook events now position the calendar on the next occurrence of an event. This solves a problem where the pdb database has a repeating event which starts on one day but actually has no occurrence on the start date. This also changes the UI behavior slightly. A search for a monthly repeating event will now take you to the next occurrence rather than the start date of the event which may have been years back. This is useful because one is typically concerned with what other irregular appts., such as a doctor's visit, might interfere with the regularly scheduled appointments. The search GUI has not been modified which may be potentially confusing. It shows the start date of a repeating appt. but clicking on it will take you to a different date than the one shown(i.e., the one closest to the present). commit 3dc98bfb4793b1c7f662258d9a1dfee85c803c50 Author: Rik Wehbring Date: Tue Dec 18 00:41:42 2007 +0000 Moved routines for finding the next occurrence of a repeating event into utils.c where they can be called by other parts of the code more cleanly. commit b71f13f20334e3410af7ee41c89dbe09da6ea36f Author: Judd Montgomery Date: Sat Dec 15 21:13:22 2007 +0000 testing cvs commit d293ac213504d86d0650128867d67030d016c25e Author: Rik Wehbring Date: Thu Dec 13 22:01:48 2007 +0000 Fix memory leak for pi_buffers when modifying records commit 8bc2b2b64d984653cc3c10ea44dc556e8f057f00 Author: Rik Wehbring Date: Thu Dec 13 02:53:30 2007 +0000 Fix DBA import of MonthByDay events where no RepeatDay was being assigned commit 37dbcee2f072fd9bb2438829eee918e1671684b8 Author: Rik Wehbring Date: Thu Dec 13 00:12:46 2007 +0000 Correctly position calendar widget on correct date after adding or modifying a record commit 8cac13874e6ec8f935291c8a80d43c200f5515f7 Author: Rik Wehbring Date: Wed Dec 12 23:13:26 2007 +0000 Validate repeating event start dates to prevent problems. Users have encountered problems when the start date of a repeating event is not, in fact, an actual date on which the event occurs. For example, the search dialog will find an appointment but clicking to go to that day will not show anything. This fix modifies the start date to be a valid one. commit 79b827552c4b4a6a73354e32ffc1047c3d26c37c Author: Ludovic Rousseau Date: Tue Dec 11 20:21:05 2007 +0000 jp_vlogf(): use fopen() instead of jp_open_home_file() but with the correct path to have the jpilot.log file in ~/.jpilot/ commit 544f57c0d5fe70573bd5380d92f973dec138e9fc Author: Judd Montgomery Date: Tue Dec 11 17:59:51 2007 +0000 reverse previous patch which caused the log file to be opened in the CWD commit 11214cff8cb2319f685215ff05e657d1db7e34ed Author: Judd Montgomery Date: Tue Dec 11 17:44:25 2007 +0000 Fixed memory leak commit f513acf47b690dcb35e5d81bdbfb3023007d577b Author: Judd Montgomery Date: Wed Nov 28 19:14:42 2007 +0000 Renamed contact code to prevent namespace polution with pilot-link commit 19c8928172c9028c68ac6d277f03d7423d390dac Author: Ludovic Rousseau Date: Sun Nov 25 21:53:33 2007 +0000 jp_vlogf(): do not open jpilot.log using jp_open_home_file() since the locking mechanism will prevent any other jpilot execution commit d45c7c360e118b7d7795a46af2bba8428e5464ad Author: Ludovic Rousseau Date: Sun Nov 25 12:19:21 2007 +0000 call gtk_pixmap_new() with a NULL mask on Mac OS X commit 49fc2983b29a42d4867dc6132452312207672674 Author: Ludovic Rousseau Date: Sun Nov 25 12:17:13 2007 +0000 do not force the size of the 4 main app buttons since the bitmap may be truncated commit e398a243046b9ea7ef680f5c34ef2d83b5f6db17 Author: Ludovic Rousseau Date: Sun Nov 25 12:12:33 2007 +0000 cb_clist_selection(): simulate completion click by clicking the "Completed" and "Apply" buttons. Setting the completion date does not work and create a conflicting entry. See Debian bug #451868 (http://bugs.debian.org/451868) commit 3a0b65e5311d7c2f4314b830c0805d6dbecbffd2 Author: Ludovic Rousseau Date: Sat Nov 24 17:22:21 2007 +0000 todo_update_clist(): use a NULL mask for gtk_clist_set_pixmap() on Mac OS X commit e83039df270f88105557cb6aa470a11a018bf7b5 Author: Ludovic Rousseau Date: Sat Nov 24 17:18:28 2007 +0000 datebook_gui(): use a NULL mask for gtk_pixmap_new() on Mac OS X commit 3b99f2223a3c60bd86e87b509b18fd201d3cdbba Author: Ludovic Rousseau Date: Sat Nov 24 14:58:11 2007 +0000 addr_clear_details(): do not call gtk_check_menu_item_set_active() with an non-existant Gtk+ menu item commit 64a58b05ae26614a1b4a17c9d343f51d21d3e823 Author: Ludovic Rousseau Date: Fri Nov 23 19:15:20 2007 +0000 update commit ff6d65970f816e4773197ca7406da980d49149a7 Author: Ludovic Rousseau Date: Fri Nov 23 19:14:37 2007 +0000 regenerated commit a7904249337e052f08ec74b9cbafbe4397d6fbe3 Author: Ludovic Rousseau Date: Fri Nov 23 19:13:55 2007 +0000 remove useless space chars commit cc0787a66c189a166d3b8627e1be670d7e18ab4d Author: Ludovic Rousseau Date: Tue Nov 20 22:58:30 2007 +0000 cb_clist_selection(): also reset reminder checkbox and value if they are not used commit 4b57c2824b3e1d64177baed5d18b93a9f4a9506a Author: Ludovic Rousseau Date: Tue Nov 20 22:35:44 2007 +0000 cb_clist_selection(): clear birthday info if none is set commit b31aab86de8c05a186bf24900eb897769d6e9bb3 Author: Ludovic Rousseau Date: Tue Nov 20 22:25:50 2007 +0000 do not convert again to utf8 contact_app_info.labels[] if Contacts database (new format) is used commit 52877b00bcff0cd76d61cc2ad9c40ff555f85b5d Author: Ludovic Rousseau Date: Tue Nov 20 22:18:44 2007 +0000 i18n buttons "Change Photo" and "Remove Photo" commit 4bf85bd3e2f1601f0093864375586cad2fb629d2 Author: Ludovic Rousseau Date: Tue Nov 20 22:16:04 2007 +0000 cb_photo_menu_select(): mark the record as changed if the photo is changed commit 78b80b478f2582db34b399759aab8cd3f820271f Author: Ludovic Rousseau Date: Tue Nov 20 22:05:20 2007 +0000 unpack_cai_from_ai() does not return a negative value in case of error but return EXIT_SUCCESS (0) or EXIT_FAILURE (1). The test was wrong. commit 334b583a054849e63eeb03ba28f0a7ad45102671 Author: Rik Wehbring Date: Wed Nov 7 21:35:07 2007 +0000 Removed jpilot.kdelnk as it is obsolete in KDE and replaced by jpilot.desktop commit ca679ab6cf69d1ad4aca46bc5136e37a83067a24 Author: Rik Wehbring Date: Wed Nov 7 19:00:08 2007 +0000 Restore ability to change categories lost during ContactDB code addition commit 34f4b09351eff344fa92bfb235fd1892d7c8408d Author: Ludovic Rousseau Date: Wed Nov 7 17:22:13 2007 +0000 use infinitive form for Import & Export commit cf0095e4a60c202941137fe558268dde32dbb0da Author: Rik Wehbring Date: Wed Nov 7 02:27:31 2007 +0000 Correct highlighting of images on mouseover Buttons with embedded pixmaps were showing the highlight color around the pixmap but the back of the pixmap retained the ordinary background color. Switched to using transparency masks for pixmaps so that highlighted button underneath can show through. commit d146fd5f3b90e9711089a4a3e89a4c843aed2ca1 Author: Rik Wehbring Date: Wed Nov 7 00:09:15 2007 +0000 Add a newline for clarity in warning message during sync_install commit 116722b64b25e334df80a7b9d5b764d2feb359cf Author: Rik Wehbring Date: Tue Nov 6 23:12:14 2007 +0000 Removing printf debugging code accidentally included in last checkin commit 935fb698e31574a7113d4c5cb0915b561c22b467 Author: Rik Wehbring Date: Tue Nov 6 23:05:50 2007 +0000 More gracefully handle filenames which are not UTF-8 compliant during restore Filenames such as the Manana database with a tilde over the n will not convert to utf8 cleanly. The code now warns users that these databases are not being restored so the user can intervene manually. commit 5b9b75d32508f066eb1deaf104b0cd91200fc3e6 Author: Rik Wehbring Date: Tue Nov 6 20:12:45 2007 +0000 Fix syncing of Memos database commit e936982088f7739257e62d7511538898207cdeb4 Author: Rik Wehbring Date: Tue Nov 6 19:29:33 2007 +0000 Correct inline documentation about new palm OS prefs commit 695ef6db0e38cc66c3c67832c7ddf32916e14e12 Author: Rik Wehbring Date: Tue Nov 6 19:25:12 2007 +0000 Add empty databases for new palm applications commit 4c7c7e1735608ae06ba993be759d03842787fe6a Author: Rik Wehbring Date: Tue Nov 6 06:41:40 2007 +0000 Add preference selection code for choosing new (Palm OS >= 4) databases Tasks and Calendar preference support is coded but commented out until the core code supports these databases. commit ad5aaf4dae5b008dd61dc7ee5b6ffe5326b7fa29 Author: Rik Wehbring Date: Mon Nov 5 01:14:22 2007 +0000 Add horizontal formatting break in GUI during sync for more readability commit 0e00991c386c1f78dd0cbe62eae78c0b9b88cce4 Author: Rik Wehbring Date: Mon Nov 5 01:08:55 2007 +0000 Restore category syncing for slow syncs which was lost during contacts DB code changes commit 7be7e5855230c75161d0cf779c5fcc07c6fd700e Author: Ludovic Rousseau Date: Sun Nov 4 15:52:08 2007 +0000 fix a crash bug on Mac OS X commit 81629cddff38e0f9c4493e963e0487d743709ee2 Author: Ludovic Rousseau Date: Sun Nov 4 15:16:05 2007 +0000 call gtk_pixmap_new() with NULL instead of mask since that does not work for Gtk+ on Mac OS X and the change has no side effect commit 67a836d5a0da3cf43165b29e083720015c9bfe5c Author: Ludovic Rousseau Date: Sun Nov 4 12:46:22 2007 +0000 keyring.c:1374: warning: implicit declaration of function 'gettext' commit 890139221c516f09699238b9837a10cf65f336b8 Author: Ludovic Rousseau Date: Sun Nov 4 10:48:24 2007 +0000 case insensitive sort Thanks to Wolfgang Becker for the patch commit dffa5219d3b6b229826c31238ab473af78ac9ef3 Author: Ludovic Rousseau Date: Sun Nov 4 10:43:03 2007 +0000 address_gui.c:3214: warning: nested extern declaration of 'glob_date_label' address_gui.c:3215: warning: nested extern declaration of 'glob_date_timer_tag' commit c39c2e383c686c2ccc677770f4509234149f60ce Author: Ludovic Rousseau Date: Thu Nov 1 13:11:03 2007 +0000 dialog_generic(): use _() instead of gettext() commit 386d2ab5459b994f65505ee100714002a2dfbace Author: Ludovic Rousseau Date: Thu Nov 1 12:56:36 2007 +0000 utils.c:254: warning: nested extern declaration of ���glob_date_label��� commit c2b9141ebf7ddfdad00b78ceeaccb633054f4cde Author: Ludovic Rousseau Date: Thu Nov 1 12:51:04 2007 +0000 only define week_start if needed commit 82d2b327b90a24f258dfa5c60ccdc8b2c7cef985 Author: Ludovic Rousseau Date: Thu Nov 1 12:47:50 2007 +0000 change i type from int to unsigned int jpilot.c:1496: warning: comparison between signed and unsigned commit 73288a3c02f6982555b2406f0b802e5d906adb37 Author: Ludovic Rousseau Date: Thu Nov 1 12:44:23 2007 +0000 move declaration of accel_group from global to local in main() jpilot.c:1478: warning: declaration of ���accel_group��� shadows a global declaration jpilot.c:126: warning: shadowed declaration is here commit 0c1ff08c9f6eaad5441d8a1b5a1d1816a9feb04d Author: Ludovic Rousseau Date: Thu Nov 1 12:39:48 2007 +0000 initialize the .extra_data field of the GtkItemFactoryEntry entries commit a0ca2aca0179c1fe979f58b7f5dc20ac22b70d20 Author: Ludovic Rousseau Date: Thu Nov 1 11:15:09 2007 +0000 rename get_main_menu() window parameter to my_window jpilot.c:1144: warning: declaration of ���window��� shadows a global declaration jpilot.c:112: warning: shadowed declaration is here commit 9b1060a1363ca16b5d42f48c817ded76822e3590 Author: Ludovic Rousseau Date: Thu Nov 1 11:10:00 2007 +0000 Use %lu instead of %ld for unsigned long int jpilot.c:911: warning: format ���%ld��� expects type ���long int *���, but argument 3 has type ���long unsigned int *��� commit 21d15e6dd982a2c882a654a6f496ab727438b1e3 Author: Ludovic Rousseau Date: Thu Nov 1 11:07:26 2007 +0000 main(): jpilot.c:2881: warning: declaration of ���char_set��� shadows a previous local jpilot.c:1988: warning: shadowed declaration is here commit c5cd738ae737a0ec7d8ba40572b2511435bc1fa5 Author: Ludovic Rousseau Date: Thu Nov 1 11:00:20 2007 +0000 Do not #include since this file does not exist on Gtk+ for Quartz (Mac OS X) and is not used commit b1934b50c89ba3ab4db74c0b5bd6e3bb72407ad3 Author: Rik Wehbring Date: Wed Oct 31 04:02:34 2007 +0000 Reverse ifdef for proper compilation when not running pilot-link-0.12 commit dc4c3e8bc88d7457470408a7fc766e04c874070a Author: Ludovic Rousseau Date: Sat Oct 27 07:47:28 2007 +0000 declare local variables and functions as static commit 66b7cfc3bbc837d5fa52dcac83014e81da8bba00 Author: Ludovic Rousseau Date: Sat Oct 27 07:44:35 2007 +0000 use #defined values instead of constants in phone_type_menu_item[] definition to avoid a buffer overflow since 7 is used instead of NUM_MENU_ITEM1 (and NUM_MENU_ITEM1 == 8) commit 48811070465ddedc2c2d2d2458e3e9871bce4d70 Author: Ludovic Rousseau Date: Sat Oct 27 07:03:43 2007 +0000 Not needed with pilot-link 0.12.x commit d5a7ffeeb828610a8a7180f9091169249aba86d2 Author: Ludovic Rousseau Date: Thu Oct 25 19:02:43 2007 +0000 translate a string commit 80c5b73228c3971e3aa26d139020fb688919960d Author: Ludovic Rousseau Date: Thu Oct 25 19:00:54 2007 +0000 regenerated commit 466141482564f79f57a61e43d4caf26eaca4e7b4 Author: Ludovic Rousseau Date: Thu Oct 25 18:55:30 2007 +0000 address_gui(): revert to Address database if Contacts database can't be used commit 1eaf2ee0a079b1f15ed671d5790de64a85d0d4fa Author: Ludovic Rousseau Date: Thu Oct 25 18:53:33 2007 +0000 call jp_close_home_file() instead of fclose() to avoid deadlocks commit f86e2548e0f7255b031dc6d9bc43f47192bf1e78 Author: Rik Wehbring Date: Thu Oct 25 03:34:14 2007 +0000 Undo/Revert 1.72 changes English makes a distinction between words that start with a vowel sound and those that don't. Correct usage is "an Address record" but "a Memo record". This requires "an %s" and "a %s" C strings. commit cc470150cbe3a1d623a7455adab02d48cbb8f30a Author: Ludovic Rousseau Date: Wed Oct 24 20:19:09 2007 +0000 add some translations commit 0b4d9406b9136d36df7e306c4cb07858f9ba3d01 Author: Ludovic Rousseau Date: Wed Oct 24 20:16:56 2007 +0000 use "a %s record" instead of "an %s record" commit 0ef430ed305d88a9841e55d978ae1d111a856fc8 Author: Ludovic Rousseau Date: Wed Oct 24 20:08:05 2007 +0000 regenerate commit b9e469920af82ae9231e5bfdaa23acc17b8b0061 Author: Ludovic Rousseau Date: Wed Oct 24 20:05:48 2007 +0000 contact_to_gstring(): use "%s%s: %s" instead of "%s%s:%s" commit aff928bd86b2ee727d764e97f8dbe85d056a8fe4 Author: Ludovic Rousseau Date: Wed Oct 24 20:04:42 2007 +0000 contact_to_gstring(): i18n the format string "%s%s:%s" commit 3476a543a7185b157b3be94209e0b978d87b3365 Author: Ludovic Rousseau Date: Wed Oct 24 20:00:35 2007 +0000 charset_p2newj(): add a case for CHAR_SET_LATIN1 to just create a copy of the string to avoid a test in the caller code commit e6ee3ed4be184d4f276e1f01a17483412c98cfc3 Author: Ludovic Rousseau Date: Wed Oct 24 19:57:38 2007 +0000 convert field names in UTF-8 commit 975270bee15e007b26e7460de7bce27bc3fa20a3 Author: Ludovic Rousseau Date: Tue Oct 23 21:35:10 2007 +0000 cb_entry(): sort the search results commit 4f44906412423d42931b900cf6fbc38689e17271 Author: Ludovic Rousseau Date: Tue Oct 23 19:17:59 2007 +0000 add contact.c commit 543a02c7bd8d28945728c9782fbe3ffebc5e5e0e Author: Judd Montgomery Date: Tue Oct 23 18:29:15 2007 +0000 Changes for supporting the new Contacts, and Memos Databases New databases are: ContactsDB-PAdd and MemosDB-PMem Import/Export only works for Addresses, needs Contacts support jpilot-dump needs updated for Contacts A pref needs to be put into Memos to toggle new/old DBs Japanese Kana patches were not ported to new code (need Japanese help) commit 3fc244fbf6cca5bcc872af6c1e78380188d91e3f Author: Rik Wehbring Date: Sun Oct 21 02:14:40 2007 +0000 Improved detection of matching records during sync which lowers probability of data loss for a multiple modification event (record modified on Palm and desktop simultaneously). Certain databases (Memo and ToDo) can use memcmp to check for any differences between records. This catches changes which preserve record length such as changing SMITH to smith. commit 2d6afcbaf2a4b9bc954e8ce227f5c4247d907a65 Author: Ludovic Rousseau Date: Sat Oct 20 13:33:59 2007 +0000 use a recursive rm for *.cache to remove the directory autom4te.cache commit 3d351c82503ef96c42382c8354ad7381dfce4e31 Author: Rik Wehbring Date: Sat Oct 20 00:28:06 2007 +0000 Fix typo for last checkin commit 1e55694f0458d79d04041ea4c06950b70bb0769b Author: Rik Wehbring Date: Fri Oct 19 23:58:14 2007 +0000 Eliminate syncing databases when the conduit is turned off in preferences. Fixes Bug 1072, 1618 commit 7bcdaa8300be3fd64c4214dd066629b37d22f633 Author: Rik Wehbring Date: Fri Oct 19 19:26:18 2007 +0000 Fix Bug 1840, record conflict during sync preserves data and warns user to manually merge records commit 3858f922786ee89036c85b9e5fa3c42e86a2acf1 Author: Rik Wehbring Date: Fri Oct 19 17:52:17 2007 +0000 Fix Bug 1595: seg fault when exporting CSV under Japanese character set commit 97d1338b98aae61f5f8e219949cd5e21795dcbd7 Author: Rik Wehbring Date: Fri Oct 19 17:12:41 2007 +0000 Fix segfault behavior under Japanese character set commit 431edfa5ccef65607fc706d0e79770cf4b282b71 Author: Rik Wehbring Date: Fri Oct 19 03:35:06 2007 +0000 Stop memory leak in charset_p2newj commit 30e138887e53541f26d1b4982e55b51a7cd5f0bb Author: Rik Wehbring Date: Fri Oct 19 02:09:55 2007 +0000 Major overhaul of sync code When records conflict, i.e., modifications on both the Palm and the PC, the previous behavior had been to overrule the Palm in all cases and keep the PC record. This can lead to unacceptable data loss. The new strategy detects a conflict and keeps both records to allow the user to merge changes manually. Without writing equality comparison routines for each database it is impossible to be completely sure that the records are different. The current code checks only to see if the records are the same length. Changes which preserve length, such as SMITH to smith or 1234 to 4567, will not be caught. Nevertheless, the probabilistic chance of data loss has decreased significantly since both a length-preserving change AND a simultaneous modification of the same record is rare. It is rare enough that the previous unacceptable behaviour has not generated any comments until recently. Other problems fixed: syncing without forking now works a slow sync where the pdb database does not exist no longer locks the pc3 file commit 0cbdd7d5b680a4b4af4e590b3a1987b31984c3ab Author: Rik Wehbring Date: Thu Oct 18 22:55:27 2007 +0000 Handle obscure error case and shut up compiler warning commit 59974e907ab32a121b3f83697e35c45edd8506c4 Author: Rik Wehbring Date: Wed Oct 10 17:07:33 2007 +0000 Add code to shut up a compiler warning commit f9d3ce1c45da451e44428faa5803135c61770265 Author: Ludovic Rousseau Date: Sat Oct 6 15:36:43 2007 +0000 add support for Mac OS X plugins (.dylib) Original patch from macport at http://svn.macports.org/repository/macports/trunk/dports/palm/jpilot/files/patch-plugins.c commit f72ee6e95a4477a47e9edf5a3d52e4b723076b80 Author: Ludovic Rousseau Date: Sat Oct 6 15:04:22 2007 +0000 comment out pilot_time_to_unix_time() and unix_time_to_pilot_time() since they are aleady provided by pilot-link and make the link fail on Mac OS X (multiple definitions) commit c26a7b39f08f3a66441286bde7466a4d108940fc Author: Ludovic Rousseau Date: Wed Oct 3 14:14:30 2007 +0000 call pi_buffer_free() only if RecordBuffer in not NULL utils.c:2126: warning: ���RecordBuffer��� is used uninitialized in this function commit 5bf1cc58cb9e36a494316991aeda9fa9e985403a Author: Ludovic Rousseau Date: Wed Oct 3 14:09:36 2007 +0000 jpilot.c:1930: warning: the address of ���str_ver��� will always evaluate as ���true��� commit f0a6e49220a02a10573b753c0e8b8bc181996677 Author: Ludovic Rousseau Date: Wed Oct 3 13:57:51 2007 +0000 remove two compiler warnings: address.c:64: warning: ���str1��� may be used uninitialized in this function commit 12271f42fd9196940644ee10ca775f29a5a9003b Author: Ludovic Rousseau Date: Wed Oct 3 13:33:21 2007 +0000 add support of iCalendat format (-i argument) Thanks to Jay Kline for the patch commit 516c51a0a7feb8fa801c110312c4ed407942aa00 Author: Ludovic Rousseau Date: Wed Oct 3 12:47:19 2007 +0000 Exit is a command fails commit d64ed4dff26bb74bff92c8676068852f6d220209 Author: Rik Wehbring Date: Sun Sep 23 01:20:42 2007 +0000 Adjust modification time of pdb files when syncing Fixes Bug 1839 where no mtime update prevents version control Fixes restore bug where latest copy of pdb was not installed because it was incorrectly dated relative to backup pdb timestamp commit a3af0403663da3a30c836011eeb4862c83477b43 Author: Rik Wehbring Date: Sat Sep 22 19:13:29 2007 +0000 Correct color of day boxes which fall outside of month in monthview gui commit 335a83dd03adced82c758d06dc6e85c255a4af21 Author: Rik Wehbring Date: Sat Sep 22 18:48:26 2007 +0000 Highlight TODAY in week and month views using GTK styles commit 96d3f55b4c082d3666b6bea4d08ee8422cd40fba Author: Rik Wehbring Date: Fri Sep 21 19:58:30 2007 +0000 Completed update and optimization of alarm code Code now optimized to jump to date near current date which reduces search time in algorithm. Code now functionally correct for all alarm types including repeatWeekly. Bug 1794, alarms not being removed in a timely fashion, is fixed. commit e03ddec6a7ff9b3379c9f900d1afa7a0758ecf2c Author: Rik Wehbring Date: Thu Sep 20 18:53:09 2007 +0000 Alarms are incorrectly set when advance is not zero commit d452ca9ae8c7e453c5cd41ae9598fd72098a305d Author: Rik Wehbring Date: Wed Sep 19 20:45:50 2007 +0000 Major refactor of alarm code Existing code incorrectly generated alarms for various types of repeating events. Current code is functionally correct but is not optimized for performance. commit be3989009c5fa1980764d162159be1bc1d18f797 Author: Rik Wehbring Date: Wed Sep 19 20:42:22 2007 +0000 Clean up compiler warnings commit 1255ec9da45e70501b73f99fa0003c43bf7eb4aa Author: Rik Wehbring Date: Tue Sep 18 17:11:53 2007 +0000 Resolve 1762 and 1838 Treos syncing over USB need a serial rate above 9600. Changed default serial rate to 115200 and removed documentation that implied the serial rate wasn't used during USB operations. commit 9dd94ef04cc858c3bf466bc38d8795792f602f45 Author: Rik Wehbring Date: Tue Sep 18 16:55:27 2007 +0000 Fix Bug 1842: Alarm checkbox not reset off for new records commit 82f8e545ae0be40a9e4a957970682516b52e2988 Author: Rik Wehbring Date: Mon Aug 27 19:19:20 2007 +0000 Applied translation update from Bugzilla 1834 commit 6e78f79a15e5f0bdaad609217e04f34cd6296561 Author: Ludovic Rousseau Date: Sat Aug 11 20:25:39 2007 +0000 use a validated Categories= field. See http://standards.freedesktop.org/menu-spec/1.0/apa.html commit 32b8c1c80a58660eb6f6a4489ebb22126b4a88f2 Author: Ludovic Rousseau Date: Sat Aug 11 19:29:29 2007 +0000 address_gui(): do not convert the labels if the charset is latin1 but use the labels directly Correct a bug I introduced in revision 1.128 and reported as Debian bug #436499 commit fe786fe5d972814cac5284a4ab8ef67971a65f6a Author: Rik Wehbring Date: Tue Aug 7 16:03:06 2007 +0000 The default mail command needs to change now that the mozilla code base has been split into browser(firefox) and mailer(thunderbird) commit b01c52a928e377e4739a2102ea1f44644e4af881 Author: Rik Wehbring Date: Sun Jul 22 17:32:59 2007 +0000 Allow selection of text in weekview and monthview guis. Code now uses the button_release event rather than button_press event to switch from the weekview and monthly views to the jpilot calendar window. This allows selections of text to be copied before the automatic re-focus to the calendar widget. This was done in response to a request on the jpilot-mailing list. commit 49a9cd49d5f5f9cdc38ce0acf50f0486a02e7c9e Author: Rik Wehbring Date: Sun Jul 22 17:29:24 2007 +0000 Recode GTK2 section to correctly handle enter_notify events commit 46a58f124068e92b9f9642b1abd332615277059e Author: Ludovic Rousseau Date: Fri Jun 15 14:57:17 2007 +0000 do not distribute the generated manpages since they shall be generated locally using the correct $(datadir) commit af22c320c5dae6cba562aec2d8b4a305b7b38fba Author: Ludovic Rousseau Date: Fri Jun 15 14:53:54 2007 +0000 install docs and icons in /usr/share/doc/jpilot instead of /usr/share/doc/jpilot-x.y.z commit 6a59c35bf9afba212b15d3f22ee447a567282ded Author: Ludovic Rousseau Date: Thu Jun 14 14:21:00 2007 +0000 convert the field names to UTF-8 when displaying them in the Quick View commit 3e935c1d1bf1582bf3eedd31c92c86bb83cb9cab Author: Rik Wehbring Date: Wed Jun 6 02:45:10 2007 +0000 Improve code efficiency of Glists Doubly-linked Glists are used throughout the code. During their creation the inefficient g_list_append is used which requires traversing the Glist. Replaced g_list_append with g_list_prepend The lists, which are delivered with a pointer to the tail, are often traversed to find the head of the list. By switching to g_list_prepend the head of the list is already available and a second uneccessary list traversal can be avoided. commit d3a2956b1a1400716180c3191be15fe9de9a4088 Author: Rik Wehbring Date: Tue Jun 5 19:39:48 2007 +0000 Feature request 1395: Remember ToDo sort order between invocations commit efa02494b2635de0f6214d2f31a716351c07e62a Author: Rik Wehbring Date: Tue Jun 5 18:48:05 2007 +0000 Change indentation for better readability commit 96bd10d3434e54a99a390105f40a5de515fdc627 Author: Rik Wehbring Date: Wed May 30 22:31:36 2007 +0000 Addendum to fixing Bugzilla 1814 which will prevent an occasional double free on a pointer commit ebd601a5f7d9d3b1682cfbba432a686a44e1fa7c Author: Rik Wehbring Date: Wed May 30 21:44:57 2007 +0000 Fix Bugzilla 1814: incorrect sort order commit b12643d9307222dc50784844c8d4dbdfff162727 Author: Ludovic Rousseau Date: Fri Apr 13 13:14:23 2007 +0000 do not convert the labels and phonelabels from PDA to local encoding in the address_app_info structure itself since the fields are limited to 16 bytes and converting to UTF-8 may expand them well above that limit The labels are no more truncated commit 375d6e417939cec4dc611e4fbbfca36bd4ed94cd Author: Ludovic Rousseau Date: Fri Apr 13 12:53:26 2007 +0000 remove an unused variable commit 2af43a13da1b9a9d4b1b2581b534318c9ed4d351 Author: Ludovic Rousseau Date: Fri Apr 13 12:47:58 2007 +0000 remove an explicit cast japanese.c:222: warning: value computed is not used commit 1bb744db2f43982314b5825e842b2054f541e0a4 Author: Ludovic Rousseau Date: Fri Apr 13 12:45:11 2007 +0000 remove get_pay_type() since it is defined but never used commit 5a3e3515c5905fb1c78165db26dd56a04364765a Author: Ludovic Rousseau Date: Fri Apr 13 12:40:04 2007 +0000 make print_address_list() return void instead of int address.c:57: attention : control reaches end of non-void function commit e9cc677c87b87c09c537cf0195ddf3e4744830ec Author: Ludovic Rousseau Date: Fri Apr 13 12:38:42 2007 +0000 remove unused variable address.c:51: attention : unused variable ���next��� commit cde3f9aec0d0bb7d4fa1e945999dd3af58512654 Author: Ludovic Rousseau Date: Fri Apr 13 12:36:34 2007 +0000 jp_sync(): buffer variable was used not defined when JPILOT_DEBUG is used commit e3593d792d7adc1adbb36345de905699878d1188 Author: Ludovic Rousseau Date: Fri Feb 16 13:21:34 2007 +0000 jp_open_home_file(): do not try to lock a non existant file commit 04135e78aa4a754098e988050e076f9b36e6ebb7 Author: Rik Wehbring Date: Mon Feb 12 06:07:09 2007 +0000 Partial fix for Bug 1783: Dimensions of weekview and monthview guis not preserved commit 20f3e36b2749a05298c228b2bdb6265150d05fe5 Author: Ludovic Rousseau Date: Fri Feb 9 16:39:27 2007 +0000 fix bug 1781: use flock() to lock file access and avoid database corruption commit 2b4d42990812c89f5cfab740a2c85988b85f5747 Author: Rik Wehbring Date: Thu Feb 1 18:25:29 2007 +0000 Updated translations for portugese_Brazil translation commit 7345ed0d19237f3614fa4610f8b87ee45cf8e798 Author: Ludovic Rousseau Date: Tue Jan 23 17:21:46 2007 +0000 typos commit b9cad5a3e0a0b9d7aa9bb7c5118df7a0b4f9124d Author: Rik Wehbring Date: Wed Jan 3 07:44:57 2007 +0000 Add Feature 1777: Portugese_Brazil translation commit ff35a92f2d1feceac9abc6d46f1954e43b91efd7 Author: Ludovic Rousseau Date: Sat Dec 30 17:17:06 2006 +0000 Fix bug 1776: missing showpage on postscript output commit e26424940da332fa0e69719a9cc492da15c38d75 Author: Rik Wehbring Date: Sat Dec 16 07:13:58 2006 +0000 Fix color of inactive scrollbar buttons under latest GTK libraries(2.10) commit 1af9f2e39165536e6394845c4b7135eb4898ffc9 Author: Rik Wehbring Date: Thu Dec 7 15:11:35 2006 +0000 Stop printing contents of oversized note or description field in todo when field exceeds max length. On entering an overly large note or description field jpilot emits a warning and truncates the buffer to a maximum length. In addition the current behavior has been to print the entire problem buffer which obscures what is happening and makes it look like there has been some weird corruption within the Jpilot program. commit 9ee71620796126a3f066680ebe04cb936e1e95c7 Author: Rik Wehbring Date: Wed Dec 6 23:52:18 2006 +0000 Use a slightly more robust scheme to decide when Mail versus Dial button should be displayed Old scheme relied on the gettext translation being equal to "E-mail" but this is not very portable between different locales. Instead jpilot now uses the same scheme it uses for exporting records(csv, ldif) which is to check for a labelcode of 4. This is still a hardcoded value but it seems to be the one Palm developers have chosen and is unlikely to change anytime soon. commit 8970d9edc255c20ee617c01cc20a6c37e2f23921 Author: Rik Wehbring Date: Wed Nov 15 21:49:20 2006 +0000 Tweak fix to bug 1744 so that resizing main jpilot window doesn't simply open up the log window commit bcd003ce028998e1d16cf088e5d73d0ec7f8a184 Author: Ludovic Rousseau Date: Sat Nov 11 13:12:33 2006 +0000 automatically select the first record found. Closes bug 1756. commit 9a0231cbab016fd9752cb202e7f3f5d7df3673d1 Author: Rik Wehbring Date: Sat Nov 11 02:08:59 2006 +0000 Fix Bug 1744 : Output messages window is not properly sized to show buttons Fixed for GTK2 by querying the window for it's desired size and setting the location of the pane divider appropriately. commit cc86f81660e93d78703e0c7cdd28194429d4237c Author: Rik Wehbring Date: Tue Nov 7 07:20:42 2006 +0000 Feature Request 1757: Clicking on case sensitive widget automatically re-performs the search with the new setting. Patch from Ludovic commit 28a260c6487984625177d98df579124c40bd117c Author: Ludovic Rousseau Date: Sun Nov 5 13:23:36 2006 +0000 bad_sync_exit_status(): call gettext() to translate the text of the message box commit ef522d43087351e21f0571c109d277e75c282e86 Author: Ludovic Rousseau Date: Sun Nov 5 13:21:31 2006 +0000 update text formating commit 6dc8a6b38184e6d5b6ffc90adc122b54d2cb7f87 Author: Rik Wehbring Date: Thu Oct 19 18:49:31 2006 +0000 Add a few rules to cvsignore files to remove clutter when updating commit 10cbcbf6df609192a9db57ef875479cabc6c762d Author: Rik Wehbring Date: Tue Oct 10 02:02:19 2006 +0000 Use intltool-0.35 Makefile.in.in rather than gettext Makefile.in.in commit e9f17ddfd0d57a02b0729e6119f9c3a8f7aa0904 Author: Rik Wehbring Date: Tue Oct 10 01:53:58 2006 +0000 Eliminate distribution of gettext macros in m4 directory commit f087f36af6ac5cae2300671c00ae42b0ad7861ea Author: Rik Wehbring Date: Tue Oct 10 01:40:33 2006 +0000 Use autopoint in preference to gettextize which should only be used when first adapting program for NLS commit b1255dc79e832b9e58d7241615bd3249e4b46269 Author: Rik Wehbring Date: Tue Oct 10 01:15:20 2006 +0000 POTFILES is a derived object and does not need to be stored in CVS. configure regenerates file from POTFILES.in commit a925e3e3a7043a508425d0f1df4215ed86d8e7d1 Author: Rik Wehbring Date: Tue Oct 10 00:03:22 2006 +0000 Removed unused intl/ directory libc or libintl provide gettext function calls. There is no need to include our own copies of gettext functions when the user's host computer has more up-to-date versions. These functions have not been a part of the jpilot build distribution since 2/22/2004. commit 216f610329d9873ae4bad7a02881198cd154500d Author: Rik Wehbring Date: Mon Oct 9 23:57:50 2006 +0000 Overhaul autotools environment Added lots of explicit comments about how scripts are operating Removed accumulated cruft Fixed Bug 1721 Fixed configure script where --enable-option could interfere with building correctly if the default for the option was already to be enabled. Fixed many potential problems in the configure sh script where unquoted variables were being compared to unquoted strings. commit 1f94ba96fe77a7006f693ec2e38880e7ad664c48 Author: Ludovic Rousseau Date: Thu Oct 5 14:20:55 2006 +0000 plugin_gui(): replace a static affectation by a dynamic one to use l10n for the columns titles commit 999a63fbf2fd2c130bb674f8f94f761ba2c43c80 Author: Ludovic Rousseau Date: Thu Oct 5 14:14:41 2006 +0000 translate missing strings commit 56da9030a7cf90212ce594a277550adaee69e0c4 Author: Ludovic Rousseau Date: Thu Oct 5 13:55:57 2006 +0000 convert from ISO-8859-1 to utf-8 commit ebed1f6181ad236d41b3b364673e27273d655da1 Author: Rik Wehbring Date: Tue Oct 3 20:56:18 2006 +0000 Man pages are now derived objects through a makefile rule. This allows variable substitution to correct what were previously hardcoded paths commit 0d81639c0779707d27db631e6a944284ebefaaa1 Author: Rik Wehbring Date: Thu Sep 28 22:21:51 2006 +0000 Small mods as some names have changed slightly between versions of intltool and gettext commit 111ad9936b5b19b81cfb3c0ea1bea03a678e3e6c Author: Rik Wehbring Date: Thu Sep 28 22:12:11 2006 +0000 2 files missing gettext tags added : rebuilt po toolchain commit c0e5564fa1f2de9df5f5bf2131d62d08b1df0aa6 Author: Rik Wehbring Date: Thu Sep 28 22:01:37 2006 +0000 Added gettext macros to text strings commit b87b183d3495e8be442930d0b843333c6297a82d Author: Rik Wehbring Date: Thu Sep 28 21:51:44 2006 +0000 2 files missed being added to gettext translation list commit a384801a8e01fc8d19cefc349d00e6bf3287e497 Author: Rik Wehbring Date: Thu Sep 28 18:38:05 2006 +0000 Removed old Makefile.unix from CVS which has been replaced long ago by automake commit 5ab7459ffb06524bda81691c87e608ef46c2617e Author: Rik Wehbring Date: Thu Sep 28 18:36:20 2006 +0000 Clean Automake.am files in subdirectories commit 38c6491e9966b2feaa56fd4f5c76e9dde5b8e166 Author: Rik Wehbring Date: Thu Sep 28 04:12:21 2006 +0000 Updated comments to clearly document script commit 061863cbd666d0e8596ad0a113394331db652f2f Author: Rik Wehbring Date: Thu Sep 28 00:33:12 2006 +0000 Fix configuration bug where enable-gtk2=yes would actually disrupt GTK2 build commit 4c4f58920617d28b2e67de3a59140150992c7fb4 Author: Rik Wehbring Date: Wed Sep 27 22:48:37 2006 +0000 Feature request 1730: sortable last changed column in keyring commit 2aedad517a0205a7b9a344168845b4b481917b3f Author: Rik Wehbring Date: Wed Sep 27 21:35:10 2006 +0000 Sort order selected by column is now remembered across changes such as the addition or modification of a record commit fb6c97dd4b7a0247f6df297d8485327e0f212e0c Author: Rik Wehbring Date: Wed Sep 27 21:02:59 2006 +0000 Fix possible data corruption issue associated with sorted columns commit cf054f11577ea41fe7409cb80b14329d713ee57e Author: Rik Wehbring Date: Wed Sep 27 19:20:20 2006 +0000 Fix possible data overwriting situation when using sorted columns commit 9e65b1ca76be0e0337f7f6214096ebadacd0c86c Author: Rik Wehbring Date: Wed Sep 27 00:24:34 2006 +0000 Feature request 1730: sortable columns in KeyRing commit 915a18e21ef6971e0e6a1ddf18139ef2380bb696 Author: Rik Wehbring Date: Tue Sep 26 23:52:00 2006 +0000 Feature request 1730: last changed field is updated whenever the password is changed commit a05f61b39ec9ee8a4eae8ae4fe59478cf16f79f1 Author: Rik Wehbring Date: Tue Sep 26 23:49:13 2006 +0000 Take out unnecessary commented out code and re-phrase some comments commit a1358db11f32d4255af29beba6987e78c5d69b39 Author: Rik Wehbring Date: Tue Sep 26 22:51:57 2006 +0000 Add feature request 1667: Larger Note field in address book gui commit b42c512b1227623f3529e6c5d7af9b3676d59c80 Author: Rik Wehbring Date: Tue Sep 26 21:30:27 2006 +0000 Changeover from no to nb for Norway language code commit 5a58b47751e88efb47f0b62c83d901a1b386df82 Author: Rik Wehbring Date: Tue Sep 26 21:03:40 2006 +0000 Fix bug 1722 : macro of nl_langinfo preventing compilation on Solaris and OpenBSD commit ea98068ec7d9188a435e32ac646022feceafee3e Author: Ludovic Rousseau Date: Tue Sep 26 20:18:23 2006 +0000 use a safer way to fix bug 1731 commit 4823c57f1ecea428265b1a5eca2f822276697924 Author: Rik Wehbring Date: Tue Sep 26 17:57:15 2006 +0000 Fix bug 1734 : building on 64 bit architectures commit a86c6e6aedfabeb23e91a24ab1e9cee123bf4b04 Author: Rik Wehbring Date: Tue Sep 26 17:43:04 2006 +0000 Fix bug 1733: Norwegian language code changing from no to nb commit 4de5439081eb56a02e54cb8e0499e9f2adc3a217 Author: Rik Wehbring Date: Tue Sep 26 17:42:03 2006 +0000 Removed old Norwegian language file in favor of new language code nb commit 15b3866678d18d50520ecae82aa06b8b405e2cdc Author: Rik Wehbring Date: Tue Sep 26 17:41:11 2006 +0000 Norwegian language file changing from old code of no to new code of nb commit 306a43a0b128a3a16e32fcfbaa0f52c02879d42d Author: Rik Wehbring Date: Tue Sep 26 17:13:12 2006 +0000 Fix bug 1731: subscript out of range commit 6f419487499ebb1b066f02258851bba74d8c2ab3 Author: Judd Montgomery Date: Mon Sep 4 19:45:03 2006 +0000 remove -Wall option, CFLAGS= should be used on configure line commit 57de1fd5036da3f3527fe715d46df616245b6ae9 Author: Rik Wehbring Date: Sun Sep 3 04:06:24 2006 +0000 Fix sorting by name or company in address book which was busted while fixing Bugzilla 1700 commit dd32ac30f890b9470ec709adad39f2a2867c79a2 Author: Judd Montgomery Date: Mon Aug 28 01:44:39 2006 +0000 minor cleanup commit 9d6bc7d78674a4eb1ea83bfe24ee146a955cbe97 Author: Judd Montgomery Date: Mon Aug 28 01:37:57 2006 +0000 0.99.9 release commit e2ec392660dcb6709fd1e74bbd967cc38446affd Author: Judd Montgomery Date: Mon Aug 28 01:27:57 2006 +0000 0.99.9 release commit b6606546804ddddc84eb060a66f07f86cb3d6e62 Author: Judd Montgomery Date: Mon Aug 28 01:01:27 2006 +0000 Rewrote to work better commit f783422e094ac975cedf6c72b283f1133a5da69a Author: Ludovic Rousseau Date: Sun Jul 30 14:01:00 2006 +0000 remove a unused variable utils.c:1379: warning: unused variable ���out��� commit 7c36ef60fd04741e36c46942875c715c009eca16 Author: Ludovic Rousseau Date: Sun Jul 30 13:57:00 2006 +0000 comment two unused static functions and avoid libplugin.c:372: warning: ���pilot_time_to_unix_time��� defined but not used libplugin.c:385: warning: ���bytes_to_bin��� defined but not used commit 8cfea166a7fc50f2e3910b7d09bf6dc02f4bcdb7 Author: Ludovic Rousseau Date: Sun Jul 30 13:51:46 2006 +0000 add declaration of get_timeout_interval() to avoid a address_gui.c:2589: warning: implicit declaration of function ���get_timeout_interval��� commit d1e56be5a54bae9fe672e1bcc890a122f06ac8c6 Author: Rik Wehbring Date: Fri Jul 21 22:25:24 2006 +0000 Fix Bug 1700: Sorting by company labels in address book are incorrect commit f37aa9297b660c8159f9d12641f346a50edcaf9f Author: Judd Montgomery Date: Wed Jul 5 00:34:11 2006 +0000 Removed raw_header_to_header() and replaced with unpack_db_header(). This should fix the machine dependent problems with reading the structure straight from disk. This should now run properly on ARM and Zaurus. commit 40ef1b955ac25c6396fc55ece88b55d53404e688 Author: Rik Wehbring Date: Sun Jun 25 04:49:51 2006 +0000 Fix translation of category name All which was not being passed through gettext commit 331e038e7d63fc2140b9a33e2b421179b90bfcc0 Author: Rik Wehbring Date: Sun Jun 25 03:36:36 2006 +0000 Fix Bug 1679: Excess power consumption from needless time updates commit cfaa488d29cc9b1a58bcb67ea3f7aa28092372d6 Author: Ludovic Rousseau Date: Fri Jun 23 13:38:32 2006 +0000 do not try to change the datebook displayed day when the user click in a day in the week or month view and the datebook application is NOT active any more. This typically crashed jpilot. This closes Debian bug #374495 commit c3e00fc0f350cfb6ec40e5ad91bbb491b4f815d2 Author: Judd Montgomery Date: Fri Jun 9 20:42:57 2006 +0000 Moved nested function to enable building on Mac OSX commit 0d506278deb5314c966d3138fa3079fc844e0826 Author: Judd Montgomery Date: Fri Jun 9 03:05:35 2006 +0000 Re-add code to use Page-Up to go backward one day and Page-Up to go forward one day. Code changed to only accept page-up/page-down in clist, and calendar widget so as to not affect text widgets. commit e76d462935fadbaf828c6a6527b938cf8c2904fc Author: Judd Montgomery Date: Sun Jun 4 23:06:07 2006 +0000 Removed clipboard code. The X11 clipboard code was causing X to lock up under certain circumstances. It seems that it didn't interact well with other applications. I received numerous reports of this. The newer versions of GTK don't seem to need this code anymore anyway. commit db70bb10b7b00c43bb312943c2e056e4a993e5de Author: Judd Montgomery Date: Fri May 26 20:52:14 2006 +0000 Fixed small months on monthview printout not being the correct months commit 2b155e2d04a957295fd53b80a34f93eafe218295 Author: Rik Wehbring Date: Thu May 18 16:31:13 2006 +0000 Fix Bug 1668: Buffer overrun in user ID field commit 9ef401f8c30d7db82456ba121322d7471f7635fb Author: Rik Wehbring Date: Wed May 17 22:09:32 2006 +0000 Fix Bug 1640: permissions on files should be 0600 for privacy commit 4afe9e5e0ad6d597303bfa49f0f9ed0ab7dc9904 Author: Judd Montgomery Date: Sat May 13 20:44:42 2006 +0000 Changed incorrect database names for sync_categories during a slow sync. The databases affected were MemoDB doing a sync_categories with Memo32DB and and Manana doing a sync_categories with ToDoDB. I suspect this is why the MemoDB could be corrupted at times and was hard to reproduce. It would not happen on a fast sync. Not fully tested. commit 99723669756163ccfd87efa083b8a446b65035fb Author: Ludovic Rousseau Date: Tue May 9 20:52:40 2006 +0000 set_bg_rgb_clist_row() and set_fg_rgb_clist_cell(): initialise the .pixel field to avoid warning: ���color.pixel��� is used uninitialized commit 0686237682ff4edef3819854e72510c993e31a68 Author: Ludovic Rousseau Date: Tue May 9 20:51:21 2006 +0000 UTF_to_other(): use the correct error message in case of memory exhaustion (and avoid a warning: ���errstr��� is used uninitialized) commit bc4c975d547751f8a54a797f18342a160c1d930a Author: Rik Wehbring Date: Mon May 8 15:51:27 2006 +0000 Fix bug 1661 where pref_fdow is not set correctly for GTK 2.8 libraries commit a941614fa3a9859df6d8a0957c7206a7c44d67d1 Author: Ludovic Rousseau Date: Thu Apr 20 12:29:03 2006 +0000 cb_delete_appt(): do not call charset_j2p() since it will be done later by pc_datebook_write(). The problem was we had a double conversion UTF-1 -> Latin1 and the latin1 encoding was wrong as UTF-1 for the second convertion so the text was truncated. This solves Debian bug #363452 commit 1bbcdfe863d11a984130ce714182620c912706ab Author: Rik Wehbring Date: Mon Apr 17 05:31:37 2006 +0000 Fix Bug 1650: Text does not wrap in alarm dialog window commit 5702d65bb15edce4a855c18e0e15e6dc4229290e Author: Ludovic Rousseau Date: Wed Apr 12 20:27:35 2006 +0000 translation update by Peter Mukunda Pasedach commit 923118a4ae545a7f3f2327a0007a6ed5b7e65a3f Author: Rik Wehbring Date: Mon Apr 10 23:31:08 2006 +0000 Fix Bug 1594: Syncing KeyRing causes Palm to crash with invalid UniqueID commit 6a31b14a08145f79d27497899df2e0bea070bc7d Author: Ludovic Rousseau Date: Sun Apr 2 19:04:56 2006 +0000 restore the file to a correct value (revert the "Just forcing a commit" by David) commit 9c2a5b62897a54f66e012c6147b0958c306e11c8 Author: David A. Desrosiers Date: Wed Mar 29 15:23:13 2006 +0000 Just forcing a commit to see why commit emails aren't being sent commit c034ee89089b8030cc5caceab83480f41649f325 Author: Rik Wehbring Date: Wed Mar 29 04:25:35 2006 +0000 Modified scroll code in output window to more reliably keep to the end of the window commit f5f914a1f36dced63e06c8a97a5b39797f7eeb1c Author: Judd Montgomery Date: Sun Mar 26 18:15:11 2006 +0000 Changed to Slackware convention commit dbc5568e1bb98d453653b28e9e36a9a94d0d7843 Author: Rik Wehbring Date: Wed Mar 15 20:03:26 2006 +0000 Fix bug 1639 where CRLF is not used for vCARD export commit 72b4920ee2a69e73f3141f68440bddc2ce177da7 Author: Ludovic Rousseau Date: Sat Feb 25 17:48:20 2006 +0000 Resolve bug 1634 "jpilot-dump is off by 1 day" dumpbook(): explicitly initialise the .tm_isdst field (daylight saving time) instead of using the random value in memory commit 701cc0aa498b9553b21f8210331d875fd0dd851a Author: Rik Wehbring Date: Tue Feb 14 20:53:26 2006 +0000 Resolve Bug 1051, 1617 Code now checks whether locale supports am/pm formats before offering them as choices. commit ab9f393172e55387510d3992631301b47aed3820 Author: Rik Wehbring Date: Tue Feb 14 20:40:48 2006 +0000 Use EXIT_FAILURE macro where appropriate commit d7a9357560921bd367eec3e8ca73338db6183b13 Author: Rik Wehbring Date: Thu Feb 9 04:38:55 2006 +0000 Fix bug 1615: scrollbar position during hotsync commit e6fdd8fd09a0f67c26eec7d1b6705669a91b3e38 Author: Rik Wehbring Date: Sat Feb 4 07:09:25 2006 +0000 Updated po file from miurahr commit 458c55eb07a60e19a4cae4e98c7a2532f0b0825a Author: Rik Wehbring Date: Thu Jan 26 00:51:04 2006 +0000 Fix bug 1592 where hitting cancel in calendar popup causes date to go back 1900 years for each occurrence commit 7a21f994b51cc3f3c4fd7214178048977277ab94 Author: Ludovic Rousseau Date: Sun Jan 15 11:34:29 2006 +0000 version 0.99.9-pre2 commit 079a58cceba57cdc23d46dbdf810a37c191c8d7c Author: Ludovic Rousseau Date: Sun Jan 15 11:28:21 2006 +0000 regenerate for 0.99.9-pre2 commit e3dc7dc72eab87bdd892750c0189cc4754c42d7d Author: Rik Wehbring Date: Wed Jan 11 22:50:46 2006 +0000 Work around GTK bug in nested callback routines. When creating a new appt in the datebook the first time the pulldown menus for setting the time are used they appear and disappear. One has to click a second time for the menus to stay on the screen. In addition, if one clicks and holds the mouse the very first time then the entry for 8 am is missing in the menu. This patch fixes both items. commit b20cf4940667fb1dbc2f8980a8198053a3aa767b Author: Rik Wehbring Date: Wed Jan 11 21:27:40 2006 +0000 Reuse existing local variable for memory savings commit 7f3b02a6b13b16202c296fc8c5b5e037174e1383 Author: Rik Wehbring Date: Wed Jan 11 21:21:27 2006 +0000 Remove unused variables commit 4519c32f9f889f03e6908da5ceb7cd52b41cafee Author: Rik Wehbring Date: Wed Jan 11 21:06:20 2006 +0000 Prevent end time in appt from being before start time. This mimics PalmOS behavior more closely commit 8545228373a321c43f1db353515a17ecf9fb0bb9 Author: Rik Wehbring Date: Wed Jan 11 01:57:54 2006 +0000 Extract first day of week from locale under GTK 2.8 libraries commit 45e8558687ae4682120ac9b50c3c3640e0a9bb3b Author: Rik Wehbring Date: Tue Jan 10 07:24:02 2006 +0000 Add test_compile target for developers to Makefile A number of simple errors would have been caught by developers before patches were checked in to CVS if the build logs had been searched. I added a target which configures a GTK1 build, compiles the code, and then checks for warnings and errors. If the GTK1 build passes then it does the same sequence for GTK2. It is recommended to run 'make test_compile' before checking new code into CVS. commit 35dfd43b69397d542a8e73ba81f4b4c1cf14dd70 Author: Rik Wehbring Date: Tue Jan 10 06:25:00 2006 +0000 Increase keyboard functionality in search GUI. Search results in clist can be scrolled through using cursor keys. Added ability to hit Enter and automatically go to the currently highlighted record. Previously one had to use the mouse and click on a row in the clist to have this functionality. commit 5df80410b1c5f324baa24afd68d800ef0dd7e286 Author: Rik Wehbring Date: Tue Jan 10 05:59:11 2006 +0000 Have focus default to search entry field when the Find window is called to the front commit bbe96f3aae2ac5378426842abfec4e2b1803f65e Author: Rik Wehbring Date: Tue Jan 10 05:16:47 2006 +0000 Modify gtkrc coloring files to produce correct results on GTK2.8 libraries commit ff97bd66b972e84f1cf90b4f1754fc4e39e2f328 Author: Rik Wehbring Date: Fri Jan 6 02:33:30 2006 +0000 Incorrect fopen call caused next_id file to grow without bound commit 5c783cd5e462f9ebc97b7bdcc269826d23d80d8d Author: Rik Wehbring Date: Fri Jan 6 00:57:16 2006 +0000 GTK uses day 0 to unselect the current calendar day. Use this fact in cb_cal_changed to avoid extra clist_updates when adding a new appointment. commit 72f42eed44c18861b8a1bcd5a183dd2a301732d0 Author: Rik Wehbring Date: Thu Jan 5 23:18:33 2006 +0000 Change a few subroutine names to be consistent with other gui.c files commit ebc4d875625e7f5ce0eb40b490057ef91cecc93a Author: Rik Wehbring Date: Thu Jan 5 22:52:32 2006 +0000 Disconnect signals when a new record is added so that cb_record_changed is not called every time a character is typed commit 5b8c68d12c53434efe9ec8666c7ee96ab0e3b4cd Author: Rik Wehbring Date: Thu Jan 5 22:46:23 2006 +0000 Re-connect disconnected signals at the end of memo_clear_details for consistency with other clear_details subroutines commit c0153af95c19c38844a0c95f847fe4aff47b5cdf Author: Ludovic Rousseau Date: Thu Jan 5 20:43:20 2006 +0000 add ko.gmo and uk.gmo commit 4d774d4e6d54366fc9346006db8c84992d3b324c Author: Rik Wehbring Date: Thu Jan 5 17:17:16 2006 +0000 Enter hotkey now positions cursor at the start of an entry in GTK2 commit 2fada1ae08892a22686d80766fe39a012f0f0c9a Author: Rik Wehbring Date: Thu Jan 5 05:15:42 2006 +0000 Only print note field in alarms if it exists. Eliminate extra spaces otherwise commit f567a3c780d8d511771cf0ffeaf8d8f5b1134fb3 Author: Rik Wehbring Date: Thu Jan 5 05:04:22 2006 +0000 Alarm reminders which are for a specific time should not show a duration(time1-time1) commit 4dea74e7f47a972e0ac22a405a336f35393d4a2c Author: Ludovic Rousseau Date: Sun Jan 1 22:36:32 2006 +0000 Declare variables used with GTK+2 only when GTK+2 is used commit caa1f15b1e64d3103074c2952861d217853f0b63 Author: Ludovic Rousseau Date: Sun Jan 1 22:33:44 2006 +0000 add declaration of g_strlcpy() if GTK+1 is used commit 7f2d1e247105df4ee7ba9a1ac93670e71d260d18 Author: Ludovic Rousseau Date: Sun Jan 1 22:33:05 2006 +0000 add definition of g_strlcpy() when GTK+1 is used since this function is new in GTK+2. This is the exact copy of strlcpy() from OpenBSD with the name changed ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/ commit 44316cddfd61bdc3e09559d33d88064308b65bc8 Author: Judd Montgomery Date: Fri Dec 30 19:01:08 2005 +0000 Added a last changed button, and calendar dialog to keyring commit cd1c25baefb93b89972b7cc7d4e541f1d4a38604 Author: Judd Montgomery Date: Fri Dec 30 17:05:36 2005 +0000 Removed global variables from cal_dialog code commit d98871fa3dd65ce113bff76283def89f6a9f270d Author: Rik Wehbring Date: Fri Dec 30 04:33:45 2005 +0000 Apply patch to fix FD leak when errors occur. Patch provided by Phuah Yee Keat commit d88e4835b926d28cde2b1a5c92992dbce25e75f9 Author: Judd Montgomery Date: Fri Dec 30 02:36:44 2005 +0000 Added a field for the last changed date and set it to today when the record is changed. It probably should be editable like the begin date button in datebook. I'll save this for future work. commit 0b26a3c5ff7ae34c73637e48b3d081dc1837c5f5 Author: Rik Wehbring Date: Wed Dec 28 02:26:17 2005 +0000 Fix Bugzilla 1533 where null description in appointment crashes ical export of datebook commit 2c31f2442a4a03e73c09dfe5ec58b5e1e8cf8810 Author: Ludovic Rousseau Date: Mon Dec 19 20:22:06 2005 +0000 buttons Clear and Remove are always visible with GTK+ 2.8 and a button_box. Revert back to a simple box. commit a2186eb5b4d07faae9f465d00f34dca0c0aef3ab Author: Ludovic Rousseau Date: Sun Dec 18 18:58:39 2005 +0000 version 0.99.9-pre1 commit 66cdc085a920b07a15a2f5bd6f098d6b0b2b10d5 Author: Ludovic Rousseau Date: Sun Dec 18 17:31:19 2005 +0000 version 0.99.9-pre1 commit 7d1beaaa93992b26a0620589c6d64517be07a888 Author: Ludovic Rousseau Date: Sun Dec 18 17:27:31 2005 +0000 regenerate commit bc0cdf87cd87c9fe4efa251ba6a482778a40c48f Author: Ludovic Rousseau Date: Sun Dec 18 15:46:54 2005 +0000 use GTK2 stock buttons for Minimize and Clear buttons of the log window commit 8e362c530523bc457fde3cc117dbd254c0a09fb4 Author: Ludovic Rousseau Date: Sun Dec 18 15:33:54 2005 +0000 import_record_ask(): convert category name in correct encoding (UTF) commit fd381397c8e0f0cbd967263bb6af28c94875ebcd Author: Ludovic Rousseau Date: Sun Dec 18 15:27:59 2005 +0000 import_record_ask(): use GTK2 stock button commit d46b5cc902ed7ecac5e2a1cde4db42996e732e3e Author: Ludovic Rousseau Date: Sun Dec 18 15:22:28 2005 +0000 import_gui(): move the Import button on the right side commit 9e3410325e08e8f3435622a0ce9e22712552b166 Author: Ludovic Rousseau Date: Sun Dec 18 15:05:40 2005 +0000 do not cast malloc() return value. See http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1047673478&id=1043284351 commit 33bdde8c3198fe2125bc372404b9b6e684a7307a Author: Ludovic Rousseau Date: Sun Dec 18 14:54:39 2005 +0000 use g_strlcpy() instead of (unsafe) strncpy() + setting a NULL byte commit b868da53d99b831240dfde3063e7f7fcc3479200 Author: Ludovic Rousseau Date: Sun Dec 18 14:22:44 2005 +0000 use g_strlcpy() instead of strncpy() + setting a NULL byte commit 55e1fc181616552f58d283966fc72a3d4abf916c Author: Ludovic Rousseau Date: Sun Dec 18 14:17:56 2005 +0000 cb_date_cats(): convert category name in correct encoding (UTF) commit a447c1cf757c1aebecf9a4c724021b58cb9e2cfb Author: Ludovic Rousseau Date: Sun Dec 18 14:07:05 2005 +0000 cb_date_cats(): use STOCK buttons for the DB3 category selection box commit 6813bd92445e9828308e81603f17ae8416f1ba7d Author: Ludovic Rousseau Date: Fri Dec 16 20:02:05 2005 +0000 use GTK2 stock icons for week and month views commit 20af87baa0aef2d52bef6094748240cb0b52f806 Author: Ludovic Rousseau Date: Fri Dec 16 13:33:27 2005 +0000 get_inline_pixbuf_data(): use g_object_unref() instead of g_free() since gdk_pixbuf_new_from_xpm_data() returns an object. This avoids a startup crash under Ubuntu with: *** glibc detected *** free(): invalid pointer: 0x0811d968 *** commit 8c9f6949ccff96cbf1b7f63b8a424f8c4d887f71 Author: Ludovic Rousseau Date: Wed Dec 14 21:53:16 2005 +0000 use a new (nicer) alarm dialog box commit 97c5ec4b583136a5a3e098facd313075986ba550 Author: Ludovic Rousseau Date: Wed Dec 14 21:49:59 2005 +0000 upgraded to gettext 0.14.5 commit 5ce2b654e113c752f822e2259d26f1df4532c64d Author: Ludovic Rousseau Date: Wed Dec 14 21:32:11 2005 +0000 datebook_gui(): add some space around the "Week" and "Month" buttons as already done for the other buttons commit 12c5f1380c62fbf484799f8257393af6dba52ad9 Author: Ludovic Rousseau Date: Wed Dec 14 21:26:59 2005 +0000 do not remap PageUp and PageDown to previous/next day since these kays are also used by GTK+ for Begin/End in a textfield The patch is easily reverted since I just #if 0 the code commit 4ae6f407ee0b42486b21d961f3055468dc8ae8c9 Author: Ludovic Rousseau Date: Wed Dec 14 21:20:21 2005 +0000 upgraded to gettext 0.14.5 commit f610e2edf2e83c842dd2c503c0a81199d05d345f Author: Ludovic Rousseau Date: Wed Dec 14 17:08:07 2005 +0000 add ko l10n commit 1ca532b1cebb24a0da1add906b0fb710fb4866cf Author: Ludovic Rousseau Date: Wed Dec 14 17:04:34 2005 +0000 translation by Byeong-Taek Lee, thanks commit 6038fffb83d07aa9cc14c4ef5fda2f97a18d66bb Author: Judd Montgomery Date: Sun Dec 11 20:39:00 2005 +0000 Add support of Korean (CP949) encoding commit d43f1a12ee3ad128a001483c79f1510980586676 Author: Rik Wehbring Date: Tue Dec 6 06:49:02 2005 +0000 Highlight first row of returned search results commit 3182c5f1ce25b4532a5b0365c25ce5e7bee57234 Author: Rik Wehbring Date: Tue Dec 6 06:07:07 2005 +0000 Change configure to build GTK2 version by default Per discussion on the Jpilot message boards, all of the major distros are now building Jpilot under GTK2. The last survey of users also showed 2/3 using GTK2 and 1/3 using GTK1. GTK1 build is availble by explicitly configuring with --disable-gtk2. commit a4e3c19690ddcd5a2986aad99f8552f9a5fe085e Author: Rik Wehbring Date: Tue Dec 6 04:52:40 2005 +0000 Create grayed out insensitive checkbutton in preferences window when Datebk is disabled in build commit 419de21dd42a18a498740483008978e56d3b67ce Author: Rik Wehbring Date: Tue Dec 6 03:33:01 2005 +0000 Update set_new_button function in plugins to more clearly code for what is happening in GUI commit ef1dfb235ae78e22acdf00b076a3d3f5c5acc6c1 Author: Rik Wehbring Date: Mon Dec 5 05:25:52 2005 +0000 Update jpilot-dump help print-out and man page to reflect using D for datebook instead of B commit c4d7b5628439587764061d4254f4b6106835731d Author: Rik Wehbring Date: Sat Dec 3 23:16:48 2005 +0000 Clean set_new_button code Instead of trying to track deltas between old state and new state I simply put up the buttons I want to display and hide the other ones. This makes the code easier to understand and there is no performance penalty because a gtk_widget_hide on an already hidden widget takes almost zero time. commit 62c63e03068da3105739d93eca6fe80f33a18f5b Author: Rik Wehbring Date: Sat Dec 3 22:36:57 2005 +0000 Remove list of bugs for versions of jpilot that are no longer supported commit ca55b8eece4e1b52d6720e4422c7a9e9140626b1 Author: Rik Wehbring Date: Sat Dec 3 22:34:07 2005 +0000 Remove no longer relevant file UPGRADING from distribution commit bfda5017250db7adfa617581fad7ee34faa41f50 Author: Rik Wehbring Date: Sat Dec 3 22:32:45 2005 +0000 Add prototype to fix compiler warning commit 59fd40f35aee6176695a17ff62d6052f478fea69 Author: Rik Wehbring Date: Sat Dec 3 22:18:28 2005 +0000 Removing man page for upgrade process which is no longer relevant commit 480551cd10aa1bfc39111a998076da27cc229050 Author: Rik Wehbring Date: Sat Dec 3 22:15:04 2005 +0000 Fix compile error for plugins because plugin_find commands work differently than main apps commit afa72b8a039ca1235dc86c2a84c74bea56def2d7 Author: Rik Wehbring Date: Sat Dec 3 22:05:22 2005 +0000 Correct bug where clicking on a clist row does not always send you to the correct record When a record is modified, and a user clicks on a different row in a clist instead of hitting the 'apply changes' button`, and the user selects that the changes be saved then there is the possibility that the entry that the user selected will no longer be in the row that the user selected. This is caused by the addition of the new or modified record and the subsequent default sorting of the clist. The bug is corrected by finding out which record, rather than which row, the user was trying to access and then going to that record after the new or modified one has been added. commit 9a255598f6f228833036bd5a554eb1185e420e55 Author: Rik Wehbring Date: Sat Dec 3 21:47:49 2005 +0000 Highlight the day of the week in weekview and monthview guis by bolding the corresponding label commit 7905a97e60f574faf9b15de192b64ac7fcbd0888 Author: Rik Wehbring Date: Sat Dec 3 21:44:11 2005 +0000 Remove clist_hack code. Fix for modal window/clist lock up is now in utils.c commit ca18cfccc4a68448a4832fedccc828ddf364bc15 Author: Rik Wehbring Date: Sat Dec 3 00:00:39 2005 +0000 Fixed broken compilation under GTK1 gtk_window_stick() is only available under GTK2 commit 16139d3d9e3d1924a786e7937703ad6008a843f7 Author: Ludovic Rousseau Date: Fri Dec 2 17:17:34 2005 +0000 dialog_alarm(): make the alarm window appear on _all_ desktops and not just the one with J-Pilot commit c4091fc88ee4f28e486c2e7f75fdcddbc9dca1a6 Author: Ludovic Rousseau Date: Fri Dec 2 17:12:02 2005 +0000 dialog_alarm(): make the alarm window always appear and stay _above_ the main J-Pilot window commit 549cfc1949c2aff2bf96dae271db9df94f24959e Author: Rik Wehbring Date: Wed Nov 30 01:44:30 2005 +0000 Labels in modal dialogs shouldn't be selectable. When selectable, the tab key bounces between the label and the yes/no buttons. When unselectable, the tab key bounces only between the two buttons. commit bd50432c9ab258b95a56952a66d0e8fdca6f8437 Author: Rik Wehbring Date: Wed Nov 30 01:38:53 2005 +0000 Changed icon from OK to CLOSE which more accurately reflects its behavior. See install_gui.c for another example of CLOSE instead of OK commit cef85c2f30c089cf30df8ea7169264e6484c029b Author: Rik Wehbring Date: Tue Nov 29 23:25:59 2005 +0000 Fix mouse lockup bug caused by clist widgets commit 7a0cadcd52170ecb32ad6a659f41134592391888 Author: Ludovic Rousseau Date: Tue Nov 29 22:36:31 2005 +0000 use GTK+2 stock button commit 4b1f411eaf50336401d5245a076b6f231ae5c790 Author: Ludovic Rousseau Date: Tue Nov 29 22:33:41 2005 +0000 use GTK+2 stock buttons commit 22953c4b9880793a414884699355b59448d75b4f Author: Rik Wehbring Date: Mon Nov 28 19:09:17 2005 +0000 Improve alignment of help screens in GTK1 Default text alignment changed from centered(GTK1) to left-justified(GTK2). Patch forces left-justification in GTK1 so that the two versions of jpilot look the same. commit 9efa46be3402ec38ba5b5726fc18c091fcc835c9 Author: Rik Wehbring Date: Mon Nov 28 07:31:28 2005 +0000 Error message changed to prevent conflict with existing "Edit Categories" window. When editing categories and an error occurs the alert window has the title "Edit Categories <2>" because the window manager has to give it a unique name. This is confusing so the alert window was re-titled to "Edit Categories Error" commit f983d72e13e5649c2b0b2ab8ce98c1a9623202ed Author: Rik Wehbring Date: Mon Nov 28 07:22:23 2005 +0000 Change title for plugin help from Help to About xxx commit fe497c316efddc47e09e15af163bf39cad7a5ab0 Author: Rik Wehbring Date: Mon Nov 28 07:01:38 2005 +0000 Correct information and improve format of Jpilot help screen commit 7d7d2c7986191f6e067b09046db4832000ff8b46 Author: Rik Wehbring Date: Sun Nov 27 20:22:13 2005 +0000 For consistency, edit categories window does not get stock_buttons unless it is explicitly enabled commit 8927347d94c6b172b3490a53587c9df3f4f927f9 Author: Rik Wehbring Date: Sun Nov 27 20:08:34 2005 +0000 Change password masking dialog to use new button ordering more clearly commit 1b7de4a99da86887f3a1b236d75c6154e7bb5ae5 Author: Rik Wehbring Date: Sun Nov 27 19:50:06 2005 +0000 Keyring password dialog now uses stock buttons for Cancel and Ok commit 1997ea7379df4e40b67b81149c4330fd646e6043 Author: Rik Wehbring Date: Sun Nov 27 19:14:34 2005 +0000 Fix compile-time warnings in GTK1 related to new button boxes commit e6862fbd0d560c1cbb4db79e5498565c65c60626 Author: Ludovic Rousseau Date: Sun Nov 27 14:05:06 2005 +0000 use 3 pixels instead of 6 between the buttons in the top-rigth corner commit 6e4dfd1fc48d555745f3f0bca882c40a2125d1b4 Author: Ludovic Rousseau Date: Sun Nov 27 14:03:42 2005 +0000 dialog_generic(): set the window title to the message title instead of having just "jpilot" commit 90aac0ac646e5c37da1f1fb3300ad9db34592696 Author: Ludovic Rousseau Date: Sun Nov 27 14:01:52 2005 +0000 cb_search_gui(): remove some spacing to have more useful data displayed commit e321fd62c018267d0734807812dc585d23a78758 Author: Judd Montgomery Date: Sun Nov 27 04:56:33 2005 +0000 Patch from Chris Bryden for double free causing a segfault commit 7ceac3c78152716c0bcc5a1251a12936c0596bc2 Author: Judd Montgomery Date: Sun Nov 27 00:31:26 2005 +0000 Added Ukrainian po translation commit 73a4ff70471956271d6a74e82ac619683aa92e5e Author: Judd Montgomery Date: Sun Nov 27 00:07:23 2005 +0000 Patch from Ludovic: - I tried to update every button to use stock GTK+ buttons when possible - use a button_box (instead of hbox) to align the buttons on the right - dialog_generic() has been greatly improved . do not set the window title as indicated in [1] . do not force the dimensions but let GTK+ select the correct size . use a bold font for the title and normal text for the long error message . do not use a frame but the format specified in [2] . use an icon (char *frame_text argument now replaced by int type argument) - the password entry window has a nice icon - the buttons Delete/Copy/New now have a small space around them so they look like more independent and real buttons. [1] http://developer.gnome.org/projects/gup/hig/2.0/windows-alert.html [2] http://developer.gnome.org/projects/gup/hig/2.0/windows-alert.html#alert-text commit 59841bf191779cf1b6e5f4825610c0d207d94dab Author: Rik Wehbring Date: Fri Nov 25 18:20:09 2005 +0000 Reverse a partially coded patch that slipped in with Ludovic's button patch commit 22b9b358b1f6361f11e9a68b83491bc503d8e9b5 Author: Rik Wehbring Date: Thu Nov 24 23:53:39 2005 +0000 Correct button order issues in plugins commit 59b02f0c15c438d72894841caa1b90b4e792bad9 Author: Rik Wehbring Date: Thu Nov 24 22:19:21 2005 +0000 Apply button order patch from Ludovic commit adf41d7d11f94c0cf70d7d0aa9b58f21e61ffc19 Author: Rik Wehbring Date: Wed Nov 23 18:39:45 2005 +0000 Update dates and version numbers commit 762983ff7806d60d7933fa1f737e1635848ccb67 Author: Rik Wehbring Date: Wed Nov 23 17:50:37 2005 +0000 Update file to reference bugs.jpilot.org commit 457a264dbb1a9f187671c25b4c3a26617bfdd3e1 Author: Rik Wehbring Date: Wed Nov 23 07:59:12 2005 +0000 Add date to man page commit 0ca0ba5af54c3c7196c626f9dbfca23c93cfbe1e Author: Rik Wehbring Date: Wed Nov 23 07:52:45 2005 +0000 Updating documentation for style, content commit a7e2fd0ae8c99b130224aa406a911db926812298 Author: Rik Wehbring Date: Wed Nov 23 07:49:16 2005 +0000 Add date to man page commit 61dca5e438af0025d1c4dc80e372d4148fa0bb8b Author: Rik Wehbring Date: Wed Nov 23 07:37:27 2005 +0000 Update man page and add documentation for rv, lv options commit cdadb89204f31af30c4a2a7eb32ced9f94462e2d Author: Rik Wehbring Date: Tue Nov 22 04:46:57 2005 +0000 Fix residual outline bug in clist. Changing the category of the last line in a clist and applying changes causes the record to be re-filed in the new category but leaves a ghostly black outline. commit b33f867e915dec009cd2f534628d59cefc3e94ac Author: Ludovic Rousseau Date: Thu Nov 17 21:52:27 2005 +0000 update some fuzzy strings commit b1825ec8f6467c805e9bbfb5102efedd7cfe976a Author: Ludovic Rousseau Date: Thu Nov 17 21:49:13 2005 +0000 The "Yes" or "OK" button is on the right. We try to be follow the GNOME Human Interface Guidelines http://developer.gnome.org/projects/gup/hig/2.0/windows-alert.html#alert-button-order commit cf431667a992726de6c2c2e9cd65ded7901b0f0a Author: Ludovic Rousseau Date: Thu Nov 17 21:33:15 2005 +0000 use stock OK and Cancel buttons for the calendar commit 71be9a0ef6f3da98bb633ca1ea6cab8dcc2458ae Author: Ludovic Rousseau Date: Thu Nov 17 21:28:43 2005 +0000 use stock OK and Cancel buttons commit 9df0d831e207ed0c466f1ea55d74dde551a53d51 Author: Ludovic Rousseau Date: Thu Nov 17 19:19:21 2005 +0000 correctly quote AM_PATH_GTK to avoid a: m4/gtk.m4:7: warning: underquoted definition of AM_PATH_GTK commit 24962450dab7e0ebcf4809406a02ef40d7a092b1 Author: Rik Wehbring Date: Thu Nov 10 07:47:25 2005 +0000 Lost first .TP format code during update commit 380938501ce1c06a60927f6b7fa455c61f0d66db Author: Rik Wehbring Date: Tue Nov 8 22:53:17 2005 +0000 upgrade man page to reflect changes in options commit ef1edd581b885cbe3c4b6861c4fede94ce94c463 Author: Rik Wehbring Date: Tue Nov 8 22:29:34 2005 +0000 Heavily re-worked jpilot-dump.c Removed unnecessary includes Changed usage string Indented code according to normal conventions Code is still not very i18n-compliant commit 220131f9461298e333689275e6827d75d95ec6e9 Author: Rik Wehbring Date: Sun Nov 6 05:35:06 2005 +0000 Fix compiler warning on unused variable commit 299158dfbe93ec92c691f0dcb8db9de4937418bd Author: Rik Wehbring Date: Sun Nov 6 05:30:44 2005 +0000 Add undelete routine for plugins commit c1ec4e38e7ba6dd152980148fe6071fe3bf1f80e Author: Rik Wehbring Date: Sun Nov 6 05:30:12 2005 +0000 Re-code large sections for clarity and conformance with the other 4 _gui.c files commit c80ee8aedc35b632377bb78d2ffd5159c445cbd9 Author: Judd Montgomery Date: Sat Nov 5 15:15:06 2005 +0000 Fixed unresolved symbol glob_tooltips when loading plugins from jpilot-sync commit 8e29a7f753d0984df0061884914edfdb083bae6b Author: Ludovic Rousseau Date: Tue Nov 1 20:32:30 2005 +0000 correct 4 fuzzy strings commit 467f362dc8d3a87a7b4c461bc677c1ac68b43d9b Author: Judd Montgomery Date: Mon Oct 31 02:05:03 2005 +0000 removed jpilot.rh7.spec since rpmbuild tried to use it with a -tb build commit da529d48838db55c4dec0d22a653625b1a70f4c3 Author: Judd Montgomery Date: Mon Oct 31 01:12:08 2005 +0000 changed to work for release 0.99.8 commit e8ea0b54b1aa19d9183fad901af46913d32ea4be Author: Judd Montgomery Date: Mon Oct 31 00:41:26 2005 +0000 added rw.gmo commit 3ce64fba9cb0959562126b0e33ce18ab100796f4 Author: Judd Montgomery Date: Sun Oct 30 16:51:31 2005 +0000 updated screenshots commit 4c679716204f1a641681dcfd405e30defe2071c7 Author: Judd Montgomery Date: Sun Oct 30 16:49:12 2005 +0000 updated prefs screenshots commit c6819388321790ef3f142045321fe848739e36fe Author: Judd Montgomery Date: Sun Oct 30 16:44:11 2005 +0000 updated 0.99.8 screen shots commit 1c412217c6dbc1f9b9d3f49fc9457eae0db78acf Author: Judd Montgomery Date: Sun Oct 30 16:42:31 2005 +0000 0.99.8 commit ee7fa63c16a090ef24b05c67047e40598183025f Author: Judd Montgomery Date: Sun Oct 30 16:41:55 2005 +0000 replacing with binary commit c0a80a969a652bd263e667232768b01d43a5bd36 Author: Judd Montgomery Date: Sun Oct 30 16:40:28 2005 +0000 *** empty log message *** commit 706d28fbccd8c07c6b969381a5132529074ac893 Author: Judd Montgomery Date: Sun Oct 30 15:54:23 2005 +0000 regenerated commit cabd30eb52446099bca2454ce676c4f6419cb9ec Author: Judd Montgomery Date: Sun Oct 30 15:52:49 2005 +0000 Changes for 0.99.8 commit 30e5980dc7faba2d29b60fe180483a32849dcee8 Author: Judd Montgomery Date: Fri Oct 28 01:58:24 2005 +0000 Added rw.mo (Rwanda) commit 81c2656fe70e3aa70518927ccc4d3ef5a72ae04d Author: Judd Montgomery Date: Fri Oct 28 01:44:03 2005 +0000 Updated and tested on SuSE 9.3, SuSE 10.0 and Slackware 10.2 commit ecee60be39864d193062e4463e805ce3c5c71659 Author: Judd Montgomery Date: Fri Oct 28 01:20:40 2005 +0000 PANE_CREEP patch, missed this file commit 4741bd60c585f82e2c198d8316896f124e7a891b Author: Judd Montgomery Date: Fri Oct 28 01:16:50 2005 +0000 Made char_set_to_text multithread safe and use less memory. #ifdef'ed out jp_logf DEBUGs which were too much output to log. commit fcbd88857bce82065b257f48e15050ba2dccfd8d Author: Rik Wehbring Date: Wed Oct 26 04:27:22 2005 +0000 Reduce alarm code CPU burden by 10 commit 1c6dbb56be1f83c44fe1edea6bb9a345f324a97b Author: Rik Wehbring Date: Wed Oct 26 01:33:10 2005 +0000 Speed up cb_address_quickfind function commit 1c3b481d98664e8d13df865ad1b443ab0b19bc6d Author: Rik Wehbring Date: Tue Oct 25 06:47:30 2005 +0000 Fix memory leak in search commit c88a4b516a20d7ec53440fdbdcaee11673ad81b8 Author: Rik Wehbring Date: Tue Oct 25 02:15:28 2005 +0000 Edited -h help information to have uniform style, punctuation, and removed a typo commit fee92a8886b485c326bba10ca9f693251af23446 Author: Judd Montgomery Date: Mon Oct 24 19:15:41 2005 +0000 With GTK-1 the pane would creep at each setting because of gtk being off by 2 pixels on either the read or the write. This is fixed with GTK2, so I defined PANE_CREEP to make GTK1 and GTK2 both behave as expected. commit 63ab34548d4e84279150a398cbcbe3c5bd41dc06 Author: Rik Wehbring Date: Mon Oct 24 19:00:10 2005 +0000 Fix highlighting of non-stock buttons commit 4d2f8c1bded7bfb0505fb7e4edd593e2c0a4a7e6 Author: Rik Wehbring Date: Mon Oct 24 18:56:54 2005 +0000 datebook_gui.c commit fac7c66456c98fd8cfabc5bf56407cae15366f98 Author: Rik Wehbring Date: Mon Oct 24 15:27:48 2005 +0000 Correct spelling mistakes in code comments commit c0bb9f949325aa13b69870abea8d5b1c3a7e6029 Author: Judd Montgomery Date: Mon Oct 24 00:24:19 2005 +0000 Made stock buttons disabled by default commit 40b1ad47f1b8387d0e1e39b3c9fe77d4a9f68300 Author: Rik Wehbring Date: Sun Oct 23 18:58:24 2005 +0000 remove unnecessary macro defined elsewhere in .h files commit 8dc06e2c8b9f9763a4eca2e399b0c34e12738401 Author: Rik Wehbring Date: Fri Oct 21 22:27:55 2005 +0000 Fix typo affecting stock_buttons commit 8f03885b5ad9549d466b8904284c8ddaccf88eb3 Author: Rik Wehbring Date: Thu Oct 20 17:09:18 2005 +0000 Fix Bug 1550: duplicate records in keyring clist commit e178d3dba23c8909e0228b0a01f4c5af791a377f Author: Ludovic Rousseau Date: Thu Oct 20 12:45:25 2005 +0000 remove comments at the end of the file. This caused the error "ja.po:2853:14: invalid multibyte sequence" Thanks to Lukas Ruf for the bug report commit d8308aafec2d9e284625422c50dce06653caf478 Author: Ludovic Rousseau Date: Wed Oct 19 20:35:24 2005 +0000 update by Funda Wang commit f1086b06196afd086fec7d2e045fe2e51fc2ec46 Author: Ludovic Rousseau Date: Wed Oct 19 20:32:24 2005 +0000 update by Ey�p Hakan Duran commit b931e3ed31fa283b9077623dd1433c689463c38c Author: Ludovic Rousseau Date: Tue Oct 18 16:34:45 2005 +0000 update from Kazutaka HARADA commit 371b3d4faad496cba5469a5336fde1cbefbeecb0 Author: Ludovic Rousseau Date: Tue Oct 18 16:33:28 2005 +0000 update from Marco Colombo commit 1a42e72060b9084378ba600f38d9acc6629823df Author: Ludovic Rousseau Date: Tue Oct 18 16:30:10 2005 +0000 update from Cristian Othon Martinez Vera commit edd7ca44e3725bcfe7f72133e3f4dea108d26a87 Author: Ludovic Rousseau Date: Sun Oct 16 18:30:39 2005 +0000 correct stock buttons fuzzy strings commit e824330cd06d27a5a589fd31c595512fc982ba10 Author: Ludovic Rousseau Date: Sun Oct 16 18:16:25 2005 +0000 regenerate commit a797a70b60b31ef9c0c45e85a91963437f834720 Author: Ludovic Rousseau Date: Sun Oct 16 10:48:03 2005 +0000 use AC_HELP_STRING() commit 0382d381dc6bbe989127fb0f952bf65b9f5a2d23 Author: Ludovic Rousseau Date: Sun Oct 16 09:42:25 2005 +0000 add GTK2 stock buttons. The feature is disabled if you use GTK1 (of course) or if you use "CFLAGS=-DDISABLE_STOCK_BUTTONS ./configure" or someting equivalent commit ff62cfe0b79e3e31413a5b83bb76bd037b13b769 Author: Ludovic Rousseau Date: Fri Oct 7 20:15:15 2005 +0000 update 3 fuzzy strings commit 73a9109718332055a108f27a08ea2b04846fd047 Author: Ludovic Rousseau Date: Fri Oct 7 20:11:30 2005 +0000 regenerate commit 44d9150cdbc64fb927e903b091f1666fe6117d66 Author: Ludovic Rousseau Date: Fri Oct 7 19:30:59 2005 +0000 add a moving separator in Keyring and Expense plugins. Store the position in the preferences as the other pane separator. commit 2c11b19cfa30465a2815d96f4b3453dda2990f98 Author: Judd Montgomery Date: Mon Sep 26 03:27:59 2005 +0000 fixed typos for #ifdef PILOT_LINK_0_12 commit 075390e0a8599fd3651fdf95a542aa7e92d897c5 Author: Judd Montgomery Date: Sun Sep 25 03:30:03 2005 +0000 Moved mid-code declarations commit 6388c9a185c797fe46b1065cb02244757974149c Author: Judd Montgomery Date: Sat Sep 24 19:45:17 2005 +0000 Added translation Kinyarwanda commit 674c719b9da9155f8fcbeeee4361ea54f8a4cf98 Author: Judd Montgomery Date: Sat Sep 24 19:26:35 2005 +0000 Fixed memory leaks, mostly in usage of pi_buffer commit 57f95fd9dfccc131046f3bcc5e28e15e979acc21 Author: Judd Montgomery Date: Sat Sep 24 19:23:50 2005 +0000 Fixed spelling error commit d7cd7e100a9f897359d3a588f601221643a9a99e Author: Judd Montgomery Date: Sat Sep 24 17:06:21 2005 +0000 Updated for SuSE 9.3 commit 91b29d88e9d66c1c118af60441f1e8078d1f0c8c Author: Judd Montgomery Date: Sat Sep 24 15:23:07 2005 +0000 New translations from the translation project commit d3de00272580c15405c7848d35f3f3c65d617d83 Author: Judd Montgomery Date: Tue Sep 13 02:06:19 2005 +0000 fixed typo commit ead55bb215e90f76b2a83846ed52730f70fce2f7 Author: Judd Montgomery Date: Mon Sep 12 12:44:22 2005 +0000 Added commented out way to change text in gtk1 commit 8eb4c285571f7e8ce5e1a25b29f0e62bfd1c5e9a Author: Judd Montgomery Date: Mon Sep 12 00:59:31 2005 +0000 Updated commit da720c8fa71128ec87a94dc58c2468a7b6d6821f Author: Judd Montgomery Date: Mon Sep 12 00:48:18 2005 +0000 changed rcfile back to jpilotrc commit c15653abe55407452e75e3f95ccbe093e7ad9383 Author: Judd Montgomery Date: Mon Sep 12 00:46:35 2005 +0000 Changed install-user advice to also recomend using install user from the menu commit 67163949ade195e078ce1fdaff5de2caea86d648 Author: Judd Montgomery Date: Mon Sep 12 00:43:51 2005 +0000 Changed to 0.99.8-pre11 commit e2b7b7cac4a22eca24ecd7b95d50ce2c9e26ef16 Author: Judd Montgomery Date: Sun Sep 4 18:37:23 2005 +0000 Added install_user.h commit 830a285f3a656a5777491daf547525f2b94c3cc1 Author: Rik Wehbring Date: Tue Aug 30 19:07:00 2005 +0000 fix compile warnings about oc_free_iconv commit 4dd274fc9d79ba42f38d1aad2edec266cfba74da Author: Rik Wehbring Date: Mon Aug 29 06:50:08 2005 +0000 remove orphan, redundant grab_focus calls in gui creation subroutines commit b73d7bdb0b3c5f8ffa0aa200e64e5e606797baf8 Author: Rik Wehbring Date: Sun Aug 28 20:19:34 2005 +0000 Buttons, not text labels, should be selectable in dialogs commit 4f1d045899d5eeefa9b33209d7bddebe4fb6b520 Author: Ludovic Rousseau Date: Sun Aug 28 12:29:49 2005 +0000 address_gui(): replace "Quick Find" by "Quick Find: " commit 9d51663dfc31cd4277a50e7378dba4792cecae7e Author: Ludovic Rousseau Date: Sun Aug 28 09:58:42 2005 +0000 address_refresh(): gives the focus to the search field when a new list is displayed commit ff047829eac1af8ac52371a4bb3d335288728475 Author: Ludovic Rousseau Date: Sun Aug 28 09:44:19 2005 +0000 dialog_generic_with_text(): use buttons with icons for "OK", "Cancel", "Yes" and "No" commit b4226fb1f65eb55b37f4f34a27d7537489efe286 Author: Ludovic Rousseau Date: Sun Aug 28 09:32:44 2005 +0000 cb_payback(): i18n the "OK" button commit abb902fb801b8939b5ed6f6dad9766567072e3e6 Author: Ludovic Rousseau Date: Sun Aug 28 09:32:03 2005 +0000 dialog_password(): use OK/Cancel buttons with icons if GTK2 is used commit cb60ab110ad46fcb388e8650bbb98d3fae889aa8 Author: Judd Montgomery Date: Fri Aug 26 03:33:39 2005 +0000 Added an item commit 404cb40d5c4c6844f040eaeeae5de928f220446d Author: Judd Montgomery Date: Fri Aug 26 03:28:27 2005 +0000 reverted accidental checkin commit fcdbd2866866fcacd30a531aaa8883c2cb149b4d Author: Judd Montgomery Date: Fri Aug 26 03:19:01 2005 +0000 Removed PalmOS password needs removed warning commit 685f2001d8dc25729b45fa005a81845130c77759 Author: Judd Montgomery Date: Fri Aug 26 03:16:30 2005 +0000 *** empty log message *** commit 5b7d855dbe510668ea46a2c05ed2c2fa8c77acfe Author: Judd Montgomery Date: Fri Aug 26 02:59:26 2005 +0000 Added code for GUI install-user from menu commit 948ce22126a03e7d853a5b762cc8c47518950cf6 Author: Ludovic Rousseau Date: Wed Aug 17 18:13:15 2005 +0000 oc_strnlen(): remove G_INLINE_FUNC since it is the source of many link problems (undefined reference to `oc_strnlen') commit 4bffd1f2aabe92dc3d381722b7dc6b46625e4345 Author: Ludovic Rousseau Date: Fri Aug 12 19:28:48 2005 +0000 other_to_UTF(): correct the return type as "char *" instead of "unsigned char *" commit 0b8c5c377f8cafeef8cb9a4ada2c0e59cf560a3e Author: Ludovic Rousseau Date: Fri Aug 12 19:26:32 2005 +0000 other_to_UTF(): do not transform "inplace" since it may crash. See Debian bug #322701 commit ae5f2e05aa31f1eaa53a155cb7df7a879eef0a3d Author: Ludovic Rousseau Date: Fri Aug 12 17:54:42 2005 +0000 remove useless (unsigned char *) on the first argument of jp_charset_p2j() since this argument is char * commit a3825a6cbb0fa277be7213d284b62d35593b9267 Author: Ludovic Rousseau Date: Fri Aug 12 17:53:35 2005 +0000 cb_delete(): correct signedness for buf[] commit 6c89443498369a5a90a92cfbbb4fe94f6d86e15c Author: Ludovic Rousseau Date: Tue Aug 9 17:46:54 2005 +0000 correct the date of the 0.99.8-pre10 release commit e4d68b90074cd11b698c95353ec0f43c2b6b5ad2 Author: Ludovic Rousseau Date: Tue Aug 9 17:44:50 2005 +0000 version 0.99.8-pre10 commit d76f00fcd8398072d717e89a636176f82af91799 Author: Ludovic Rousseau Date: Sun Aug 7 19:12:20 2005 +0000 dat_get_addresses(): typo, temp_addrlist was used instead of last_addrlist. Closes jpilot bug 1271 commit ab7dd2bc2e1775353266b4be8b35bf2b7c673c12 Author: Ludovic Rousseau Date: Sat Aug 6 22:11:23 2005 +0000 update postal address of the FSF (thoses files comes from gettext 0.14.5) commit e777ffa2a85f69a71a2e03509aa52e6cfcd63b38 Author: Ludovic Rousseau Date: Sat Aug 6 22:10:06 2005 +0000 gettext version 0.14.5 instead of 0.14.4 commit 96752f63cf4a9afaf537cd686886cf354e722a92 Author: Ludovic Rousseau Date: Sat Aug 6 21:57:14 2005 +0000 use -export-dynamic LDFLAGS for jpilot_sync and avoids the "jpilot-sync: relocation error: /usr/lib/jpilot/plugins/libexpense.so: undefined symbol: jp_logf" error commit b156435ee52a2d87e8da2e0cc8e4bb48da977bc1 Author: Ludovic Rousseau Date: Sat Aug 6 21:46:39 2005 +0000 Link the plugins with GTK to avoid "undefined symbol" in the .so files. Run "ldd -r filename.so" to check commit e827d02aa663c876b40fe079c3a0b26d8db0cd3f Author: Judd Montgomery Date: Sat Aug 6 18:17:23 2005 +0000 Ctrl-E conflicts with emacs key bindings commit 6a4a5f24fc2b2fbf1a6ce79e8b488372f9b83b41 Author: Judd Montgomery Date: Sat Aug 6 18:06:26 2005 +0000 Needed for gtk1 on systems that ship without it commit 18ac53dbc684a5b9bc387e5f3f4f027fa9d750ef Author: Ludovic Rousseau Date: Fri Jun 24 14:18:52 2005 +0000 long date format localization commit 34480251750acb3fcc66f4065ddfa6bce87a143d Author: Ludovic Rousseau Date: Fri Jun 24 14:13:47 2005 +0000 update/regenerate commit e4226e417e15a61e3ebc5f0ccc25e7d981c7ce02 Author: Ludovic Rousseau Date: Fri Jun 24 14:04:31 2005 +0000 gettext version 0.14.4 instead of 0.14.1 commit d8df7df1bf781eb1e51281d1e0e7825131d6bf47 Author: Ludovic Rousseau Date: Fri Jun 24 14:03:13 2005 +0000 Gettextize long date format. Patch from Kazutaka HARADA to support localized date formats (for example Japanese) commit d7628c90890019922edc9ff9d2971ca6b8a374b8 Author: Ludovic Rousseau Date: Fri Jun 24 13:16:46 2005 +0000 other_to_UTF(): the last character was truncated using Hebrew encoding see Debian bug #309082 commit fccfad6373eceb8e9988d27102c11d7ddb29a89c Author: Judd Montgomery Date: Thu Jun 16 03:52:01 2005 +0000 int's changed to size_t's. 64-bit Linux warns commit 92d5a96614896624d288366132378c1bc2f07213 Author: Judd Montgomery Date: Fri May 20 03:13:57 2005 +0000 pilot-link buffer patch - bug 1486 commit 77571b1080ba23ef70ebd314a62b12415e42dab0 Author: Judd Montgomery Date: Sun May 8 15:57:31 2005 +0000 missing sizeof commit 11a46a4898a33811c4e1fcb119a69a5b85f8e698 Author: Ludovic Rousseau Date: Tue May 3 20:12:43 2005 +0000 version 0.99.8-pre9 commit 04b21a51d29b931f1e339d3809c0bb2e2b5d3322 Author: Ludovic Rousseau Date: Tue May 3 20:11:26 2005 +0000 version 0.99.8-pre8 commit 4b7cbe23aa2da8fd514514b29da277e8b764fc4d Author: Judd Montgomery Date: Tue May 3 02:25:40 2005 +0000 GTK2 function ifdef'ed out and GTK1 equiv added commit fd562639f70035c2a84829e8bb5c14d7e30dad9c Author: Judd Montgomery Date: Tue May 3 02:19:32 2005 +0000 pilot-link 0.12.0 is missing typedef pi_uid_t commit 24a1b8df83413ad51671386dd2e7f38162933dac Author: Ludovic Rousseau Date: Fri Apr 29 19:49:13 2005 +0000 write_pid(): avoid a possible buffer overflow Thanks to Jason Day for the patch commit 8b7765a2d98faecda51f5003173a6328ce2f8a35 Author: David A. Desrosiers Date: Fri Apr 29 18:39:11 2005 +0000 Removing auto-generated files from the tree, not needed to build J-Pilot. commit b1e0b20a065912f7e889310a5ee8df58a073fd9d Author: Ludovic Rousseau Date: Fri Apr 29 14:54:24 2005 +0000 add remote sync support "jpilot -s" Thanks to Jason Day for the patch commit cbf9ac76c48d061b42279cd4ce4614b6036307f4 Author: Ludovic Rousseau Date: Fri Apr 29 14:52:05 2005 +0000 version from automake 1.9.5 commit 092d53cb0477d90839955e84b2268271025fa262 Author: Judd Montgomery Date: Tue Apr 12 01:35:11 2005 +0000 cut-paste typo commit f837e765544a0631753a096638c49eba3f81bb86 Author: Judd Montgomery Date: Sat Apr 9 02:01:03 2005 +0000 Patch to build with pilot-link-0.12.0-pre3 thanks to Nicholas Piper commit 4f842990a31b1f101f87b63c625986669ca9bee8 Author: Judd Montgomery Date: Sat Apr 9 01:44:49 2005 +0000 check pilot-link patch level and error for 0.12.0-pre2 commit 085c6723feefd1df96fe829f527a3921ed0b2183 Author: Judd Montgomery Date: Sat Apr 9 00:13:29 2005 +0000 Now the pc3 headers in pc3 files should be compatible between 64-bit systems and 32-bit systems. 64-bit was not clean. commit 22fe534cf6d5c14c78e1c676df8559be068ab81d Author: Judd Montgomery Date: Sun Apr 3 18:57:42 2005 +0000 Tab now sets focus from begin time entry to end time entry to first text widget for data entry. The minus key will still cycle between begin/end entries. commit 2963edae4844e491f7277e128ccb17dd000f0db0 Author: Judd Montgomery Date: Sun Apr 3 18:04:27 2005 +0000 removed -Wall for non-gnu compilers commit 1d3f91809de7d00befeb37106bad9b4628c5ebde Author: Judd Montgomery Date: Wed Mar 23 01:31:11 2005 +0000 Log messages meant only for stdout only go to stdout and not the GUI commit 050c2dd64d0c51aadfaefe2a3843954bdd05757e Author: Rik Wehbring Date: Sat Mar 19 23:01:09 2005 +0000 Fix memory leak when category names are translated from UTF to current charset commit f08d32ab85d938ec5a49251d1d74da81f38552fe Author: Judd Montgomery Date: Sat Mar 19 17:25:43 2005 +0000 need to pass info to fetch_extra_DBs2, Nicholas Piper commit 0b6b6ad841ec9a17f3bd3e91862f121ccc84102b Author: Ludovic Rousseau Date: Sat Mar 19 16:53:58 2005 +0000 convert from UTF8 to local encoding since we use printf() and not GTK+ to display the texts commit 0abe59423ae005b373da5d2020b875957a4785f7 Author: Ludovic Rousseau Date: Sat Mar 19 15:43:17 2005 +0000 do not update ABOUT-NLS commit 90e45d029f3138514df031f84564cf0648bfd674 Author: Ludovic Rousseau Date: Sat Mar 19 15:35:52 2005 +0000 The error messages sent to stdout are now also sent to the GUI so the user can see them. commit 48776fa6eb17174459ea70804d63cce206cfada5 Author: Rik Wehbring Date: Sat Mar 12 19:20:33 2005 +0000 Fix compile warning for DES_ecb3_encrypt incompatible pointer type for arg 1 and 2 commit 66e081abcce64733b99648c369aa96673aab782b Author: Ludovic Rousseau Date: Sun Mar 6 19:09:22 2005 +0000 email_contact(): i18n the string "executing command = [%s]\n" commit adbe45daedbde0d5d7540b4cdd00a248d7975cf4 Author: Ludovic Rousseau Date: Sun Mar 6 19:05:49 2005 +0000 correct a translation commit 183d5eb3b5f09006859b86eb220bf37c52b9af42 Author: Ludovic Rousseau Date: Fri Mar 4 20:29:03 2005 +0000 display_records(): do not return a value from a void () function commit af9a0fcce4a36d6f66e91b8feb0a43f2bd721f4c Author: Ludovic Rousseau Date: Fri Mar 4 19:06:23 2005 +0000 check the value returned by jp_read_DB_files() calls and exit the function if jp_read_DB_files() returns -1 commit d032e9f9bd293085341d1bdb9241172920154aa9 Author: Ludovic Rousseau Date: Fri Mar 4 18:58:23 2005 +0000 jp_read_DB_files(): return -1 instead of EXIT_FAILURE (1) to avoid a collision when 1 record is found in a normal return commit 527b00558d48122f036be2a72e833bdbeaffb949 Author: Rik Wehbring Date: Wed Mar 2 01:34:32 2005 +0000 Keyboard usability improvements Add hotkey(return) to shift from clist on left side of jpilot to data window on right Add hotkey(shift-return) to move focus from data window back to clist commit 055d2ce3f2c76e14030f19455958ceb3bc649af0 Author: Rik Wehbring Date: Wed Mar 2 01:31:31 2005 +0000 Return focus to clist after major operations which facilitates usability commit d95367c2da51dd5a6a5343114c96f4413b51f02e Author: Rik Wehbring Date: Wed Mar 2 01:29:19 2005 +0000 Libtoolize is now run from autogen.sh which allows building directly from CVS sources without tweaking commit a2942a51a6224dd6d28c981283a5da20ffc7dbcc Author: Ludovic Rousseau Date: Sun Feb 27 11:31:15 2005 +0000 In some cases (for example if the sync port is not specified and the sync process exits very rapidely) the child may be already dead when the fork() returns. So we need to: - initialise the signal handler _before_ calling fork() - check that the child has not yet returned (signal handler called) when we store its pid for tracking commit e1dd07e778b6668abea9f827395a8961ddd14619 Author: Ludovic Rousseau Date: Sun Feb 27 10:21:33 2005 +0000 correct a translation error commit b60445ab8b69d14b132beba16b66ecc25d5672f8 Author: Rik Wehbring Date: Wed Feb 23 19:29:52 2005 +0000 Fix outline, as opposed to highlight, not always following focus in clist commit 04804700a6e3c2b69fb1245cddf8832f1c9a49b3 Author: Ludovic Rousseau Date: Wed Feb 23 18:57:26 2005 +0000 update by Harada kazutaka commit 0319daeea883582b085d7cb8cb531a80fcc21ed2 Author: Ludovic Rousseau Date: Sun Feb 20 21:35:33 2005 +0000 Update from Marco Colombo commit d3537e53bb3801a942e2aabf22026bdd1b50da4e Author: Ludovic Rousseau Date: Sun Feb 20 20:12:06 2005 +0000 replace keyring.lo by libkeyring_la-keyring.lo commit 665e9c4f44eeb062e5b15e6bc94d638dd835570c Author: Ludovic Rousseau Date: Sun Feb 20 20:11:32 2005 +0000 replace synctime.lo by libsynctime_la-synctime.lo commit f2469cc390820acdc3f72ccddfeb74607f6f24ce Author: Ludovic Rousseau Date: Sun Feb 20 20:08:48 2005 +0000 Add support of X11 clipboard (middle mouse clic) in complement to the GTK+ clipboard (Ctrl-C/Ctrl-V) commit 296df8ae4495f70b2284a7f8d02f1d433fd51c7d Author: Ludovic Rousseau Date: Sun Feb 20 20:06:40 2005 +0000 add_checkbutton(): do not call _() (i.e. gettext) here since it is already done by the caller. commit 40ed41acc8af92e8673b70dc0f0ac5bbc1a159e0 Author: Ludovic Rousseau Date: Sat Feb 19 16:30:43 2005 +0000 version 0.99.8-pre8 commit b74c8ff90860f5ac456da4234105ffda60c45ab3 Author: Ludovic Rousseau Date: Sat Feb 19 16:29:57 2005 +0000 replace expense.lo by libexpense_la-expense.lo commit 5b87d545aae8821b3be23728ebb0d1d0e3d556a5 Author: Ludovic Rousseau Date: Sat Feb 19 16:27:01 2005 +0000 add compile, config.guess, jpilot.spec commit 3cc4f8dd8e20749ea94d56dae9d06f37f1a4fa15 Author: Ludovic Rousseau Date: Sat Feb 19 16:21:53 2005 +0000 translate 3 strings commit 2a7a4faf788d3865a543245f229f21094c4c97ef Author: Ludovic Rousseau Date: Sat Feb 19 16:03:05 2005 +0000 do not use --ccoptions=... any more. You should use CFLAGS=.. instead commit 50b42207cd824e0f06ec33c47cdd6a0a31508b75 Author: Ludovic Rousseau Date: Sat Feb 19 15:48:54 2005 +0000 regenerate with the correct l18n strings in prefs_gui.c commit 745642f531b3dd08852f3179135f2eef56f6c93c Author: Ludovic Rousseau Date: Sat Feb 19 15:45:49 2005 +0000 regenerate and remove the fuzzy strings commit 52b447373d90fab7f5a914f2c71730994953e7db Author: Ludovic Rousseau Date: Sat Feb 19 15:44:29 2005 +0000 Readd the calls to gettext to get i18n again This was mistakenly removed with the "Simplify coding of checkbuttons in preferences" patch commit 9d47e1d5191dfdb27db0af2de0d7a3a240d786f3 Author: Ludovic Rousseau Date: Sat Feb 19 15:14:42 2005 +0000 update/regenerate for 0.99.8-pre8 commit 1b254214c4e19b3e4dc52686c31a3472908a73e3 Author: Ludovic Rousseau Date: Sat Feb 19 14:41:51 2005 +0000 save and restore the local INSTALL file since it has nothing to do with the one provided with autotools commit 7aebf0f3ba1565673477966cb7dd0032a5461f91 Author: Ludovic Rousseau Date: Sat Feb 19 14:39:48 2005 +0000 update from automake 1.9 commit fa21d138e2ab5421f22386cbda942f66c8985d54 Author: Rik Wehbring Date: Thu Feb 3 16:11:31 2005 +0000 Fix TODAY highlighting in weekview gui when week crosses a month boundary commit b91f20b8dfd2dac6e250a38b2f056b75e48ed627 Author: Rik Wehbring Date: Wed Feb 2 05:42:58 2005 +0000 Fix hide/show/mask privacy button. Previously, attempting to show hidden records and cancelling out of password dialog prevented any further unmasking of records using the privacy button. Now, a new password dialog is created if the user attempts to show records. commit a8b4f21ac8b9f65398e30c15ce1362a63f1bc858 Author: Judd Montgomery Date: Sun Jan 30 02:54:37 2005 +0000 Very long words can force the right pane to be wide and force the pane to the left. This is not desirable. commit 017346e104c72b8c9f7ca8d842a76db266c97977 Author: Ludovic Rousseau Date: Sat Jan 29 12:09:01 2005 +0000 When a new weekview or monthview window is resquested we destroy the one previously displayed instead of just raising it. Thanks to Mark Blakeney for the patch commit 41cc7e583ef8d91fc5fda7d5add499f350512b29 Author: Ludovic Rousseau Date: Fri Jan 28 16:54:13 2005 +0000 main(): return a non null value in case of error Thanks to Brian de Alwis for the patch commit 958b258cb7072af531e1fda3cc708414d6f80dd1 Author: Rik Wehbring Date: Fri Jan 28 16:03:04 2005 +0000 Correct return values for get_highlight_day function commit 9576d453c39650910ef0b13f563081b37b89b52f Author: Rik Wehbring Date: Thu Jan 27 22:22:33 2005 +0000 Add ESC accelerator key to cancel operation in GTK1 commit 806604dd96806e06b3e977d21dec92fe96e1c190 Author: Rik Wehbring Date: Thu Jan 27 22:15:17 2005 +0000 Added two preferences and code to 1) Mark current day in monthview and weekview guis by adding "TODAY" to display 2) Display the absolute number of an event which repeats yearly(useful for birthdays and anniversaries Thanks to Mark Blakeney for the patch commit 6092ed135530307188f270d0b3ca94d9be457b7a Author: Rik Wehbring Date: Thu Jan 27 17:49:38 2005 +0000 Simplify coding of checkbuttons in preferences Thanks to Mark Blakeney for patch commit e86c8da7ae8ac3c9c3ced3fb813516e855699773 Author: Rik Wehbring Date: Thu Jan 27 06:56:50 2005 +0000 Add Cancel button with ESC accelerator Thanks to Mark Blakeney for the patch commit 84da0c0939585bfdaf886215b037a6d4aa7756bc Author: Ludovic Rousseau Date: Sun Jan 23 13:02:09 2005 +0000 plugin_gui(): select category All when called to display the result of a search (instead of cycling) commit 2a9c47d03897729a9d38efc4306e59b2d2695f9d Author: Ludovic Rousseau Date: Sat Jan 22 17:43:34 2005 +0000 associate the Ctrl-Y shortcut to the sync pixmap-button commit 4973fe5f4ff5724eb1f591bd376884bf3cc3215b Author: Ludovic Rousseau Date: Fri Jan 21 08:56:49 2005 +0000 jp_vlogf(): do not call fsync() on the pipe file descriptor since it is useless and returns Invalid argument (EINVAL) commit dd53d5be0c9a7639587927311b0959366c6f4357 Author: Ludovic Rousseau Date: Fri Jan 21 08:12:12 2005 +0000 upgrade from Jouston Huang commit 3878376c238f334af93211df668015c6ae0ac87f Author: Ludovic Rousseau Date: Fri Jan 21 08:07:50 2005 +0000 get_pref_possibility(): rename "Chinese" to "Simplified Chinese" for GBK and "Traditional Chinese" BIG-5 commit 064259358fdeed7d419e1293b6f9ce269e7d3e5c Author: Ludovic Rousseau Date: Sun Jan 16 19:04:18 2005 +0000 do not use "--install --force" by default but use command line arguments instead commit 1b6f00b3245f259ba2a5fbdbab9da03aacae2c0f Author: Ludovic Rousseau Date: Sun Jan 16 19:03:03 2005 +0000 check minimal versions of autoconf and automake commit be7430fa1b1c519add8d8cd8903f4ccd93202e6f Author: Ludovic Rousseau Date: Sun Jan 16 18:56:51 2005 +0000 correctly quote arguments to avoid a "warning: underquoted definition of AM_PATH_GTK_2_0" commit d08fe0ccfbbcf00450e95a7030bcba5f47d82964 Author: Rik Wehbring Date: Sun Jan 16 03:46:08 2005 +0000 Fix handling of accelerator keys GTK2 now uses CTRL+Enter consistently to apply changes Removed broken accelerators for GTK1(CTRL+Z, CTRL+R, CTRL+Enter) and modified tooltips to remove references to accelerators which don't work commit e45100f3c7627ae6a4c690447d92609b2424dc26 Author: Ludovic Rousseau Date: Sat Jan 15 17:00:14 2005 +0000 add Chinese BIG-5 to UTF conversion commit d5ba8e66ea29396580893691cd6219d27fa49ac5 Author: Ludovic Rousseau Date: Sat Jan 15 16:21:04 2005 +0000 replace Sync and Backup text buttons by an color icon. Thanks to Kazutaka HARADA for the patch commit 9989ff014c1725103ecd5d8f7e02f02f90b6beb6 Author: Ludovic Rousseau Date: Tue Jan 11 19:58:08 2005 +0000 update from Kazutaka HARADA commit 10fbe5c46a9d26c12407b679088c422c973c0e2d Author: Rik Wehbring Date: Mon Jan 10 06:20:54 2005 +0000 Preserve clipboard to allow cut/paste across all 4 apps in GTK2 commit 23c487334bedb4f9181a4f23949527c8dea32729 Author: Ludovic Rousseau Date: Sat Jan 8 13:26:13 2005 +0000 define desktopdir as $(datadir)/applications instead of $(datadir)/gnome/apps/Applications Bug reported by Debian lintian tool: According to the menu-spec draft on freedesktop.org, those .desktop files that are intended to create a menu should be placed in /usr/share/applications/. commit 278081877b91cc042807f4d220f8fe3ad1b4b098 Author: Ludovic Rousseau Date: Sat Jan 8 13:24:28 2005 +0000 jpilot.spec is generated from jpilot.spec.in commit c093c90b4e6c54a175003315eb431c389027f64f Author: Ludovic Rousseau Date: Sat Jan 8 11:43:02 2005 +0000 version 0.99.8-pre7 commit 6f20d06198be4f96c836d93a0c562af633484ce3 Author: Ludovic Rousseau Date: Sat Jan 8 11:40:45 2005 +0000 add acinclude.m4, aclocal.m4, ChangeLog.cvs commit fd19acc57e2945219d8a0164af07a7ca76128c1a Author: Ludovic Rousseau Date: Sat Jan 8 11:37:20 2005 +0000 files to ignore commit 47d85f6eff5b63854e3130f26024854d8ff88972 Author: Ludovic Rousseau Date: Sat Jan 8 11:36:38 2005 +0000 add @GETTEXT_PACKAGE@.pot commit 408c9e3d0627ce04508c7549a60ae7bddc722d83 Author: Ludovic Rousseau Date: Sat Jan 8 11:35:32 2005 +0000 add config.sub, ltmain.sh, mkinstalldirs commit b1a7709645a75526f89d0298a3160e23434a326f Author: Ludovic Rousseau Date: Sat Jan 8 11:30:48 2005 +0000 version 0.99.8-pre7 commit 143652a3ecb7c8c3bac691c793d121e9a165b50d Author: Ludovic Rousseau Date: Sat Jan 8 11:20:38 2005 +0000 update for 0.99.8-pre7 commit bbfa45e1b8b72d7a8c2b938e84a7b496cf045fb9 Author: Ludovic Rousseau Date: Sat Jan 8 10:57:25 2005 +0000 update/regenerate for 0.99.8-pre7 commit f26e4bee24b6eeef6cf9ecd4250aaa5571e4074d Author: Ludovic Rousseau Date: Wed Jan 5 21:29:55 2005 +0000 update, all the "#, c-format" were missing commit b7e65e1b1905894a0e41bfa092e304491afbab8d Author: Ludovic Rousseau Date: Sun Jan 2 17:02:44 2005 +0000 0.99.8-pre3 translation thanks to Jouston Huang commit cd14817694712e16db2e4c3e08d77deb6145ab6b Author: Ludovic Rousseau Date: Sun Jan 2 16:49:42 2005 +0000 move the "remember the previously used category" code from plugin_gui_cleanup() to cb_category() since during a sync the widgets are destroyed before plugin_gui_cleanup() is called commit c69e974f73b16223dcfe4bfca31401032ee54d45 Author: Judd Montgomery Date: Thu Dec 30 19:40:17 2004 +0000 Changes for pilot-link 0.12.0 commit 378af0d8cc563f3b59c9a93b5d2edf1996c6ece3 Author: Judd Montgomery Date: Thu Dec 30 19:06:20 2004 +0000 Changes for pilot-link 0.12.0 commit 0246581bac05f67dd28f2198bb8021dfb72ea7b5 Author: Judd Montgomery Date: Thu Dec 30 18:55:04 2004 +0000 Changes for 0.12.0 commit 7951027b6a648a290cc04c4ab4abb1d9e84465c8 Author: Rik Wehbring Date: Tue Dec 21 08:01:56 2004 +0000 Fix gtk_clist_select_row instances in Jpilot gtk_clist_select_row does not behave as documented. Fixed it by creating a new function, clist_select_row, in utils.c which does behave as specified. This corrects keyboard focus handling and also prevents annoying outline boxes in clists after using the Jpilot find function. commit 6b671acf1d93680023d50a624f5fd9a8b978afaa Author: Ludovic Rousseau Date: Mon Dec 20 15:58:55 2004 +0000 allow to cycle through the categories by calling the plugin again commit a018160dda8d69dd84150e294541141c088a3ce2 Author: Rik Wehbring Date: Sat Dec 18 00:58:05 2004 +0000 Need to include before using setlocale function commit af1c245665337946a0902627cf7f35d6172f25c2 Author: Rik Wehbring Date: Fri Dec 17 20:28:55 2004 +0000 Correct sorting by due date column which was incorrect when short date format was not YY/MM/DD commit 55c7ad4c5d60e98fd2cdd0d2ae35dddee52cbc37 Author: Rik Wehbring Date: Tue Dec 14 07:41:41 2004 +0000 Replace hard coded upper limit in for loop with one derived from GTK object commit ea51a0fc0a08faad7810aea9e2d2aa037e91eda3 Author: Rik Wehbring Date: Mon Dec 13 02:43:46 2004 +0000 Fix default button handling in dialogs under GTK2 Previously the default button was not selectable with the cursor keys and pressing enter would activate the second button in a dialog rather than the default first one. commit f804ff9f64d03456f4520674759ca137b4d7a4de Author: Rik Wehbring Date: Mon Dec 13 02:25:32 2004 +0000 Add button to UTF8 Charset dialog to go directly to preferences and change values commit 6ce4eaf18f1f38d525ff1f7b4a1165429bc697ed Author: Judd Montgomery Date: Sun Dec 12 22:08:37 2004 +0000 datebook pane un-broken in GTK1 commit b5440cc7971c56674c48d1edbf34fa07bdcb46b4 Author: Ludovic Rousseau Date: Sat Dec 11 17:31:06 2004 +0000 cb_clist_selection(): display the new record if the user uses the key arrows to select it commit 0791d15b5f4e051a1bcd1cfcc0151e8c3e4fb00f Author: Rik Wehbring Date: Fri Dec 10 22:21:04 2004 +0000 Add -Wall to default compile options commit fa4c6a71e7c47334bbcb256d8d0134a0baf30648 Author: Rik Wehbring Date: Fri Dec 10 06:26:56 2004 +0000 Correct spelling ICOM to ICON commit ce7db4080a224818fa3f180a28390efb1297bd99 Author: Rik Wehbring Date: Fri Dec 10 05:06:43 2004 +0000 Simplify cb_app_button to eliminate tearing down GUI twice commit 707fbdeb1fff202e21dbfd535556393fe7151da7 Author: Rik Wehbring Date: Fri Dec 10 02:45:07 2004 +0000 Replace gettext_noop with cleaner smaller N_ macro commit 9929b5fb26dcf5b1a52be4d5cb387287aa61629a Author: Rik Wehbring Date: Fri Dec 10 02:17:51 2004 +0000 Rename clist callback to the same name used in all other c files commit 0ae93bac8b12a6d6ce65da371c0ddc4829aea656 Author: Rik Wehbring Date: Fri Dec 10 02:12:13 2004 +0000 Replace long awkward cast with built-in GTK cast commit d67d68dc738026e991a8b5e363b0d4534e33b932 Author: Rik Wehbring Date: Fri Dec 10 01:58:08 2004 +0000 Overhaul of Expense plugin Improved alignment of widgets on left-hand side Items are now sorted by ascending date as in the Palm Code format now more closely resembles other 4 apps Fixed various memory leaks commit 6a41a559566999fb94bf7518f722175e19f81094 Author: Rik Wehbring Date: Tue Dec 7 20:31:40 2004 +0000 Improve efficiency in clist_find_id by removing unused variable and loop commit c477d48bf7407ff758bcd11a2026ac6d18f94711 Author: Rik Wehbring Date: Tue Dec 7 06:51:09 2004 +0000 Standardize return values from subroutines to EXIT_SUCCESS and EXIT_FAILURE Sort routines (retval=-1,0,1) were not changed Subroutines returning a numerical count were not changed commit 18ec242bf1bd7e4c2b702a3527361f229a0d339f Author: Rik Wehbring Date: Tue Dec 7 06:47:46 2004 +0000 Fix compilation warning about strdup under GTK1 commit deac34bbb44b973ed02cbfd8bfb2e6f7690d912e Author: Rik Wehbring Date: Tue Dec 7 06:31:59 2004 +0000 Fixing CVS Id tag commit c55473f4095b6ab36363a0a8e663718aed0a0573 Author: Ludovic Rousseau Date: Sun Dec 5 20:58:47 2004 +0000 get_main_menu(): add color icons for the 4 applications menu entries Thanks to Rik Wehbring commit bbdb05ad4b10edc7fa627cf5e99077014c377f15 Author: Rik Wehbring Date: Sat Dec 4 15:44:59 2004 +0000 CREDITS file removed. AUTHORS file is preferred by tool chain commit 2de6dc932969c493f222ac06b00140e235e3fbf2 Author: Rik Wehbring Date: Sat Dec 4 04:34:14 2004 +0000 Removed memory leak bug from list since it has been fixed commit 1663b68f15cbf696cf06d1a0a0880a3403ef9ae8 Author: Ludovic Rousseau Date: Fri Dec 3 20:00:08 2004 +0000 cb_delete_event(): remove two unused variables commit 6e7ee33cc8348503e96cee76eaa3bed6af7fc65b Author: Rik Wehbring Date: Fri Dec 3 17:23:59 2004 +0000 Clean up FDOW code to be consistent with the rest of get_pref_possibility commit 367f71a65c44e8c7fb26bb76e81f843f274420b2 Author: Rik Wehbring Date: Fri Dec 3 16:57:24 2004 +0000 Simplify extracting first day of week from locale commit 5c87a3d292ee61461186f45779b20da864372f08 Author: Ludovic Rousseau Date: Thu Dec 2 19:57:07 2004 +0000 cb_add_new_record(): solves a crash in Japanse mode Thanks to Kazutaka HARADA for the patch commit e27bc6e498210e279aaf9113ca9d5ed35219e549 Author: Rik Wehbring Date: Mon Nov 29 06:24:46 2004 +0000 Add GNU public license to untagged files commit 55efee500a3d94d9c2f1cc097416c88ba7d0cd36 Author: Ludovic Rousseau Date: Sun Nov 28 16:20:04 2004 +0000 remove useless trailing space characters commit 728cdf4f9ca8ec3d5eb650c27928d9ec48aecc57 Author: Judd Montgomery Date: Sun Nov 28 15:33:13 2004 +0000 updated from http://www-perso.iro.umontreal.ca/translation/maint/jpilot/ commit a9364791fe18634fbcae37c1ae90314c31931cae Author: Judd Montgomery Date: Sun Nov 28 03:54:09 2004 +0000 Added GPL header commit 58f75e70d6b8d1dc48b8fa5788de4d7cb058f01e Author: Judd Montgomery Date: Sat Nov 27 18:56:15 2004 +0000 from translation project commit 6e553ad6b522f78cdc73f8771d8d3e31784fb961 Author: Rik Wehbring Date: Sat Nov 27 16:14:02 2004 +0000 Remove second unnecessary cast commit fb080e8586b4d6382dcadf28f4cba9a1cc2972ce Author: Ludovic Rousseau Date: Sat Nov 27 13:33:16 2004 +0000 version 0.99.8-pre6 commit b6508f7331bcaa4ccf73640e2237d72220775b7b Author: Ludovic Rousseau Date: Sat Nov 27 13:28:36 2004 +0000 define dummy jpilot_master_pid and output_to_pane() since they are only really used with the GUI commit ff8e9bbd4f87f0431b82f6eb06d4c880c6337b56 Author: Ludovic Rousseau Date: Sat Nov 27 13:27:42 2004 +0000 main(): jpilot_master_pid = getpid() so we know if log.c:jp_vlogf() shall use a direct output_to_pane() or a pipe IPC commit 274d6f4670d29172344e26408cb387b853299572 Author: Ludovic Rousseau Date: Sat Nov 27 13:25:24 2004 +0000 output_to_pane() is not more static since we call it from log.c:jp_vlogf() commit 73534dfe930669040108919da7783d8c38f71ca6 Author: Ludovic Rousseau Date: Sat Nov 27 12:05:00 2004 +0000 jp_vlogf(): do not use the pipe communication channel for intra-process log otherwise we may have a dead lock (jpilot freezes) The jpilot process may be blocked on a write (buffer full) and the _same_ jpilot process will never read the pipe (since it is blocked on the write) commit 76d145b2a5cc4996e39f2bd32509836da86d12b8 Author: Ludovic Rousseau Date: Sat Nov 27 11:57:53 2004 +0000 fast_sync_local_recs(): use %ld instead of %d for header.unique_id The bug occurs only if JPILOT_DEBUG is defined commit 4e3aa0fe4292ce1115ab45bd7c3c5be057179bad Author: Ludovic Rousseau Date: Sat Nov 27 11:54:58 2004 +0000 jp_sync(): remove a pi_buffer_free() since no pi_buffer_new() was called. The bug only occurs if JPILOT_DEBUG is defined commit c8f8380657ae714c7dab0c3fd2f25606d1af2b84 Author: Ludovic Rousseau Date: Sat Nov 27 11:47:41 2004 +0000 setup_sync(): remove useless cast commit 1bad78f98d17f75391006f43192c668c34479c62 Author: Ludovic Rousseau Date: Sat Nov 27 11:41:47 2004 +0000 remove useless "extern int pipe_to_parent, pipe_from_parent;" declaration commit 7df970649ba4a9094742c7f919e1c937a5dd456f Author: Rik Wehbring Date: Sat Nov 27 06:50:35 2004 +0000 Fix sync ID bug introduced in -pre5 commit ec4661593efe98f4063c050ea10d14606bdfd7fd Author: Ludovic Rousseau Date: Fri Nov 26 09:05:44 2004 +0000 version 0.99.8-pre5 commit 506e4b07d93c355187656900ce1add70e1d315a6 Author: Ludovic Rousseau Date: Fri Nov 26 08:49:19 2004 +0000 main(): use the exact same "Character Set " string as in prefs_gui.c to get automatic translation commit 2ef3cde2b18ee7974414fef8b0c88a0ea909e405 Author: Ludovic Rousseau Date: Fri Nov 26 08:46:00 2004 +0000 add missing last char space commit 8f0ec2d18006ce3ea4886ad6a3d84f988f2cf87c Author: Ludovic Rousseau Date: Fri Nov 26 08:35:52 2004 +0000 other_to_UTF(): display a "g_convert_with_iconv error" message only on the first conversion error for each string commit 809322f326da73c5abc80a796548be66c12869bf Author: Ludovic Rousseau Date: Fri Nov 26 08:26:30 2004 +0000 remove "_" from 3 menu entries. Thanks to Kazutaka HARADA commit 358d371a4051963c2632cbc29487506676a408ce Author: Ludovic Rousseau Date: Fri Nov 26 08:21:06 2004 +0000 use GINT_TO_POINTER() to convert from a gpointer to an int commit bde535ca690d76e55f68c1efc48f8f80cf6a86e0 Author: Ludovic Rousseau Date: Fri Nov 26 08:09:49 2004 +0000 cb_private(): initialise r_dialog variable commit bb7990e22aa09301d331211f5fde7374a1e8eeb7 Author: Ludovic Rousseau Date: Fri Nov 26 08:06:04 2004 +0000 display_weeks_appts(): remove two unused variables commit a9d9d926b81299c2309d1b41b487d4641429e8a8 Author: Ludovic Rousseau Date: Fri Nov 26 08:02:49 2004 +0000 add prototypes for print_common_prolog() and print_common_setup() since we use these functions in print.c commit 3ee9f776a36ae3880507d919e5dd3d15959fe370 Author: Ludovic Rousseau Date: Fri Nov 26 08:01:45 2004 +0000 other_to_UTF(): use one g_snprintf("%s\\%02X%s") instead of g_strlcpy/g_sprintf/g_strlcat commit 0bf23bc9de0595b424452ff65f8df3aa0bd4f1a5 Author: Ludovic Rousseau Date: Fri Nov 26 07:56:47 2004 +0000 #include since we use strlen() commit ac1629b3fc00745b2319a4b37832ad200805a3c5 Author: Ludovic Rousseau Date: Fri Nov 26 07:52:13 2004 +0000 get_memo_app_info(): remove two unused variables commit 71010cf3500ec104cec27fa6075aaf37ae4bc88a Author: Rik Wehbring Date: Fri Nov 26 01:14:38 2004 +0000 Re-clicking button for an already existing window causes the window to jump to the front commit 31356bdb01c41fe9c77b3bdb9ade3c02f0a7e35c Author: Rik Wehbring Date: Fri Nov 26 01:01:56 2004 +0000 Cleaned up subroutine calls to get_pref commit 595cbecc8268d33737b509e536b2ce46f237280c Author: Rik Wehbring Date: Thu Nov 25 20:57:05 2004 +0000 Clean implementation of preferences All names use underscores instead of dashes Application-specific prefs are prefixed by the name of the app(todo_hide_completed) Removed obsolete prefs commit 17e15db1bf2117fb02547a061b1ddd283cb71ca3 Author: Rik Wehbring Date: Thu Nov 25 19:20:14 2004 +0000 Pane height in datebook GUI under GTK1 was not modifiable commit 5efde447889d3f9da4788c2e2d6b8063097f8f0b Author: Rik Wehbring Date: Thu Nov 25 19:17:22 2004 +0000 Restore function accidentally purged commit affde3fc8a63dd56c2eab773d1da1455b63871f5 Author: Rik Wehbring Date: Thu Nov 25 18:34:00 2004 +0000 Correct definite article(grammar) in menu title commit 47456f191f9b87331794b1b590e192e044d4dc43 Author: Ludovic Rousseau Date: Wed Nov 24 20:58:31 2004 +0000 version 0.99.8-pre4 commit e76f47b864108b617ff9de46f70fdcd55cac532b Author: Ludovic Rousseau Date: Wed Nov 24 20:42:26 2004 +0000 replace "if (char_set == CHAR_SET_JAPANESE)" by "if (char_set == CHAR_SET_JAPANESE || char_set == CHAR_SET_SJIS_UTF)" to get the japanese special treatments also when using GTK2 and UTF. Thanks to Kazutaka HARADA commit cba6d04d3264e3637cb8df218364d01ad3cc6949 Author: Ludovic Rousseau Date: Wed Nov 24 19:08:39 2004 +0000 Translated. Thanks to Harada kazutaka commit eff647dcb77c073023118e51ffb324118308db85 Author: Rik Wehbring Date: Wed Nov 24 06:04:24 2004 +0000 Compile warning fixed by casting return value of function commit 13da7565b0381769f6af74fac944ba0680d60c73 Author: Rik Wehbring Date: Wed Nov 24 04:19:12 2004 +0000 Fix output height decrease by 2 each time output log window is closed with close button commit b338bab0d8ccdc9ebeb4566c2b9ccb7fed4da0f5 Author: Rik Wehbring Date: Mon Nov 22 06:58:09 2004 +0000 Removing unused functions commit 90901f0523aced6398ebac46ad57ca3dc689deb6 Author: Rik Wehbring Date: Mon Nov 22 02:40:43 2004 +0000 Unused UTF conversion functions deleted commit 515a68ab8ce7b9d511ac6a50a089dcbe040a2199 Author: Rik Wehbring Date: Mon Nov 22 02:39:11 2004 +0000 Conversion functions to and from UTF are now in otherconv commit 4b19e505284ecdc8f3b3d2abbd5d71c2057ea1d6 Author: Rik Wehbring Date: Mon Nov 22 00:52:43 2004 +0000 Add CVS Id tag to code commit 132b98a7c727b8c4900ae392487548e12c118a5b Author: Ludovic Rousseau Date: Sun Nov 21 22:34:33 2004 +0000 translate 6 fuzzy strings commit 0abec6df0222f94497474eff6fb6539447bbb27a Author: Ludovic Rousseau Date: Sun Nov 21 22:33:05 2004 +0000 regeneration commit 7231cbcd42e619b2efa3c1113a9634c7202dd594 Author: Ludovic Rousseau Date: Sun Nov 21 22:07:06 2004 +0000 call otherconv_init()/otherconv_free() since we indirectly will use charset conversion functions commit be76fa2c60369ddca66b161adb96588681e04467 Author: Rik Wehbring Date: Sun Nov 21 22:01:13 2004 +0000 Test Id in header of file commit 407997d1450cec0262830c489b12c129b610502e Author: Ludovic Rousseau Date: Sun Nov 21 21:37:10 2004 +0000 datebook_gui(): add a separator above the "Today is:" label to be homogenous with the 3 other applications. commit 8e4ab79c128e080b2db3a0140fdf4f89a80d63a4 Author: Ludovic Rousseau Date: Sun Nov 21 21:34:06 2004 +0000 main(): remove the separators above and under the lock and replace them by some empty space commit 125d34e886c7e9eece8eef15568ac0fe02088af8 Author: Ludovic Rousseau Date: Sun Nov 21 21:14:27 2004 +0000 use a moving separator between the datebook text and datebook note commit c8792da503d4584cc6a9566fbe79b1d43a8cedbb Author: Ludovic Rousseau Date: Sun Nov 21 20:26:23 2004 +0000 Use a radio item menu for Hide/Show/Mask records so that the state is clearly indicated. commit 7eadb4ab15426c0e0d580a9b032fa558d64eed61 Author: Ludovic Rousseau Date: Sun Nov 21 20:24:44 2004 +0000 show_privates(): simplify the code. The state automata should not be here. commit 6b2d03ab3af640b2962c443e39ed48f4628ab7e2 Author: Ludovic Rousseau Date: Sun Nov 21 14:08:44 2004 +0000 correct a typo commit fdb54df935911367ea6a44e72f28d9b55846f6bc Author: Ludovic Rousseau Date: Sun Nov 21 13:36:07 2004 +0000 use GBK instead of GB2312 charset encoding for Chinese. GBK is a superset of GB2312. Thanks to Carlos Z.F. Liu commit 08d6968fd39b60c5cdab60ba91e1cec90df25a6d Author: Ludovic Rousseau Date: Sat Nov 20 20:45:03 2004 +0000 other_to_UTF(): if only the last char is unknown no error is generated by g_convert_with_iconv() so we must treat this special case commit cbc7dc3199cf66b603ffbae04bf7bab9393355e4 Author: Ludovic Rousseau Date: Sat Nov 20 20:31:39 2004 +0000 other_to_UTF(): replace unknown characters by \xy with xy the hexadecimal value of the character. Thanks to lei Yu commit a96fae70f325c74321c5822d67adbddd200c7a2a Author: Ludovic Rousseau Date: Sat Nov 20 19:40:07 2004 +0000 other_to_UTF(): free allocated head and tail variables Thanks to lei Yu for the patch commit 95fceafb3fb1b8f6a831f40685091274baa595bd Author: Ludovic Rousseau Date: Sat Nov 20 19:38:14 2004 +0000 other_to_UTF(): revert patch of revision 1.5: Use "UTF-8" instead of"UTF-8//IGNORE" commit 82bf979ec122eb0bd5341ceb6e2a333eec9cba4d Author: Ludovic Rousseau Date: Sat Nov 20 19:08:40 2004 +0000 the second argument of get_pref() is (long *) and not (unsigned long *) commit 05ac568fd858d49148610a30977bb8e3882e232a Author: Ludovic Rousseau Date: Sat Nov 20 17:20:40 2004 +0000 cb_edit_button(): cast const char *entry_text in (char *) when used in charset_j2p() commit feda971acef9a4151245fdc426690df2b08029d8 Author: Ludovic Rousseau Date: Sat Nov 20 16:26:37 2004 +0000 jp_charset_p2j() and jp_charset_j2p() now use (char *) instead of (unsigned char *) for text strings. This may give warnings/errors when compiling plugins commit 475d02034aa40044460c3eade88094668ba0cf09 Author: Ludovic Rousseau Date: Sat Nov 20 16:24:50 2004 +0000 strings convertion functions work on normal C strings (char *) not (unsigned char *) We then can remove a lot of type casting commit c4261a96bb9a84338371c24bb715d0f82f2fa688 Author: Ludovic Rousseau Date: Sat Nov 20 11:50:21 2004 +0000 main(): current_locale was declared (after some code!) but never used commit f805858d828a0d6e349a71323fda4d5a24e7e28d Author: Ludovic Rousseau Date: Sat Nov 20 11:48:07 2004 +0000 #include "otherconv.h" if ENABLE_GTK2 so that otherconv_init()/otherconv_free() prototypes are defined commit e2cb6b58508d49c7d03c53cfcaf0a1e7738b499a Author: Ludovic Rousseau Date: Sat Nov 20 11:41:20 2004 +0000 remove 3 unused local variables commit 7087ddadbbf10e51c7dca70d10cbf3463b7b9144 Author: Ludovic Rousseau Date: Sat Nov 20 11:39:22 2004 +0000 #include "otherconv.h" if ENABLE_GTK2 so that otherconv_init() prototype is defined commit 4f9b1be5054686cc337003e46f2378f54ca08904 Author: Ludovic Rousseau Date: Sat Nov 20 11:34:29 2004 +0000 #include "otherconv.h" if ENABLE_GTK2 so that otherconv_init()/otherconv_free() prototypes are defined commit cb7392249897d16be0b8cf776cbf05b25a004878 Author: Ludovic Rousseau Date: Thu Nov 18 20:37:38 2004 +0000 edit_cats(): the max category name length is 15 and not 16 (HOSTCATLTH) since we must also store the \0 commit 55d450e12a2eb3841ccb375a2f2bf33fe948ea24 Author: Ludovic Rousseau Date: Thu Nov 18 20:22:35 2004 +0000 memo.c, get_memo_app_info(): do not modify (convert) the category names memo_gui.c, memo_gui(): convert the category names to jpilot charset for display only commit dcb7db2baf0c24cbffbd46a514b05dbe19c4b35e Author: Ludovic Rousseau Date: Thu Nov 18 20:10:45 2004 +0000 translate 3 strings commit d219f1ad88473db765557969588418c6831808ec Author: Ludovic Rousseau Date: Wed Nov 17 21:16:02 2004 +0000 remove Ctrl-A accelerator (used for "/File/Export") since it collide with a GTK2 accelerator (for "select all") commit 9437ca964f18c3e27696e8a4f7caff669df10005 Author: Rik Wehbring Date: Wed Nov 17 08:08:04 2004 +0000 Search now prioritizes description field over note field. If search pattern appears in both description and note field for a datebook appt or todo item then the search will return the match from the description section. Previously it returned the match from the note field. commit 11956a15ab17b40ed22e1c6bfdf5aa6d42e55f87 Author: Rik Wehbring Date: Wed Nov 17 07:54:18 2004 +0000 Change layout of function declarations to match other jpilot C files commit abdcbe2eda2b78519868c16a2843cd649ca359f5 Author: Rik Wehbring Date: Wed Nov 17 02:04:02 2004 +0000 Fix sort order for appts in datebook. Separate sort comparison functions are now used for the datebook and search GUI. commit 482c0dc8fa2f0cf66108a59252dd056ce4fe2ac6 Author: Ludovic Rousseau Date: Tue Nov 16 17:00:05 2004 +0000 revert patch on DES_ecb3_encrypt() since the casts are mandatory for old OpenSSL (< 0.9.7e) commit ab2db2cb93a556a70cb7e3d93f3ae3585539fade Author: Rik Wehbring Date: Tue Nov 16 07:25:49 2004 +0000 Align datebook items in search gui in a column. Search items returned from datebook are not aligned properly in GTK2 because it uses a proportional rather than fixed font. Using a tab in place of spaces fixes the problem. commit 1b236f056a63bf3c03229f748215e39cf436ee75 Author: Rik Wehbring Date: Tue Nov 16 06:43:42 2004 +0000 Format postscript for calendar printouts(day, week, month) to conform to standards. Divided generated postscript into prolog and setup sections per postscript specifications. Added extra comments and directives(%%Orientation) which format the output for on-screen postscript viewers as opposed to printing. commit 14f48b2124967733931d682e25eea18e1e6686a9 Author: Ludovic Rousseau Date: Sun Nov 14 21:09:17 2004 +0000 version 0.99.8-pre3 commit 54cedf343dbd8a84f46f6b4dd378894bcf06ba67 Author: Ludovic Rousseau Date: Sun Nov 14 21:03:35 2004 +0000 translate two strings commit 1f889a30eb94371febd8a0a800d4d54f65401ce5 Author: Ludovic Rousseau Date: Sun Nov 14 20:50:40 2004 +0000 regenerated commit 0213b4744cf3d6c54faec283e4739dbd618a69ca Author: Ludovic Rousseau Date: Sun Nov 14 20:21:10 2004 +0000 gettext version 0.14.1-6 commit 5027dace3c8ba9ce424d203c38ca5f97b78133b6 Author: Ludovic Rousseau Date: Sun Nov 14 20:19:02 2004 +0000 remove cast for args 1 & 2 of DES_ecb3_encrypt() since they are now useless (with OpenSSL 0.9.7e) commit b026e4fefb6206a654ea998865e7b1dbfb008322 Author: Ludovic Rousseau Date: Sun Nov 14 19:15:41 2004 +0000 run "aclocal -I m4" _after_ gettextize because gettextize asks to: Please run 'aclocal -I m4' to regenerate the aclocal.m4 file. You need aclocal from GNU automake 1.5 (or newer) to do this. Then run 'autoconf' to regenerate the configure file. commit 7da953c883d8e069537c71e32e970be554d9c110 Author: Rik Wehbring Date: Sat Nov 13 05:45:45 2004 +0000 Settle on consistent name for get_details subroutine across all 4 apps commit 155d01a45af11a9e3232339c25447308f205a384 Author: Rik Wehbring Date: Sat Nov 13 05:43:38 2004 +0000 delete_event callback routine needs cb_ prefix for consistency with other callback names commit b9e8764452058e97bf0b43f7ea522146a4c3cf25 Author: Rik Wehbring Date: Fri Nov 12 07:24:55 2004 +0000 Simplify handling of text entry boxes in prefs_gui by creating a single callback routine commit 08e325b6dace8f9324e8bbf49a8b3b6a480b59b2 Author: Rik Wehbring Date: Fri Nov 12 06:40:43 2004 +0000 Synchronize names in coding space Created standard, recognizable variable names for the 4 different apps Datebook: a -> appt Address : a -> addr ToDo : todo unchanged Memo : memo unchanged commit 3f84d36024455a2e50ba944ff391b76486b4dbe5 Author: Rik Wehbring Date: Fri Nov 12 06:30:44 2004 +0000 Addendum to get pref_show_tooltips to work commit ee72f2cab973f36011ee025246af4ff716cda2ff Author: Rik Wehbring Date: Fri Nov 12 04:16:17 2004 +0000 Improve code readability by using variable for frequent GPOINTER_TO_INT casts commit 414ae7ae101594d660f38779c3668d6c4ee2bc87 Author: Rik Wehbring Date: Fri Nov 12 04:06:45 2004 +0000 New preference to show or hide popup tooltips commit 52c106ca012d886873f5c2c68b872a05230a3fd0 Author: Rik Wehbring Date: Fri Nov 12 03:30:01 2004 +0000 Entries returned from datebook app during search were in random order. Sort returned datebook entries by ascending date. commit edfa722b17cd058b616dc5ec785d1ec48af1023d Author: Judd Montgomery Date: Thu Nov 11 23:37:39 2004 +0000 removed declarations from mid-code commit 749f90fb6f3b56718b41a0473e74bb5b77a4c802 Author: Rik Wehbring Date: Thu Nov 11 21:56:52 2004 +0000 Get first day of week from locale in GTK2, no preference setting commit 9e3bea768450e1fe480b6123c089f9619a4dc6a4 Author: Ludovic Rousseau Date: Thu Nov 11 21:16:10 2004 +0000 add a space before 'Utilisateur : ' used to create the window title change some E in � commit 3d9c15516c26a8184db87c4d274c247d1f275288 Author: Judd Montgomery Date: Thu Nov 11 21:11:20 2004 +0000 variable declared mid code commit f6d144906f87f1865fc915b214906a97de58a027 Author: Ludovic Rousseau Date: Thu Nov 11 20:58:10 2004 +0000 complete review and translation. Thanks to lei Yu commit 1c88bbc00f45958dd0672e67b6ace91cef5a22fd Author: Ludovic Rousseau Date: Thu Nov 11 20:55:05 2004 +0000 other_to_UTF(): in case of convertion error we return a duplicate of the input and not the input directly. This bug crashed jpilot when using UTF-8: GB2312 encoding commit 0f00a367493bd275ec4803fb3efbc472fbbb8e85 Author: Ludovic Rousseau Date: Thu Nov 11 20:30:49 2004 +0000 remove the charset conversion (for display only) from import_gui.c/cb_import_record_ask_quit() and instead convert the memo text itself in memo_gui.c/memo_import_callback(). The memo is converted back from J-Pilot to Palm encoding in memo.c/pc_memo_write() so we need to have it in UTF-8 for GTK2 commit f9886cecb4c87cda29d33302622dc0380642a79c Author: Ludovic Rousseau Date: Thu Nov 11 19:22:04 2004 +0000 cb_import_record_ask_quit(): convert the imported text to UTF-8 for GTK2. The source charset is the one used on the Palm. commit 7a6f1e7ad61d3e3218e78e0a47d748af32baf4ea Author: Ludovic Rousseau Date: Thu Nov 11 14:56:08 2004 +0000 create_time_menu(): use jp_strftime() to generate a valid UTF-8 time string. thanks to lei Yu for the patch commit d4b6bbd8a7681c3258e255a52db329ee6c4c344a Author: Ludovic Rousseau Date: Thu Nov 11 14:54:38 2004 +0000 set_begin_end_labels(): use jp_strftime() instead of strftime() to generate a valid UTF-8 time string for GTK2 commit 90dcce0c7abfc7aa0010fe3791e02eeb0cd04dbb Author: Ludovic Rousseau Date: Thu Nov 11 13:16:36 2004 +0000 jp_pilot_connect(): give a more explicit error message when pi_bind() fails. We now have "permission denied" or "file not found" instead of "Illegal seek". Also display the device name we are trying to use. Thanks to Edgar Bonet for the patch commit caa2efbda71bdf62d297a1448d356cb3879ef633 Author: Rik Wehbring Date: Mon Nov 8 17:12:35 2004 +0000 Save default output pane height if it has not been set previously commit 87bccc3ef861525cf8956484107e5a570e60f848 Author: Ludovic Rousseau Date: Sun Nov 7 17:08:23 2004 +0000 other_to_UTF(): use "UTF-8//IGNORE" as tocode to greatly simplify the error case management. http://www.gnu.org/software/libiconv/documentation/libiconv/iconv_open.3.html commit 2eb1ca2ab915fe29eadd0b95172433a481c8d368 Author: Ludovic Rousseau Date: Sat Nov 6 13:48:47 2004 +0000 print_months_appts(): reset LC_NUMERIC locale and not LC_ALL before returning commit 1f372b53aea011328a6e98110391ff2c2bb9411d Author: Ludovic Rousseau Date: Sat Nov 6 13:27:47 2004 +0000 address_update_clist() and memo_update_clist(): disconnect cb_clist_selection function from the clist object only for the main window and not for the export window. This avoids a "Gtk-WARNING **: unable to find signal handler for object(GtkCList:0x821f1a8) with func(0x80837b0) and data((nil))" commit 8fff7d5bdb04425bce2eca736ee2c9a01f586d3a Author: Ludovic Rousseau Date: Sat Nov 6 13:17:02 2004 +0000 address_update_clist(): do not use the global variable address_category but the function argument category. The category selection was not working from the Export window. commit 4db949ec6a462eac0b9b9d68b426edafec47eaf3 Author: Ludovic Rousseau Date: Fri Nov 5 15:15:41 2004 +0000 lstrncpy_remove_cr_lfs(): truncate the string on an UTF-8 character boundary. Thanks to lei Yu for the patch commit 406cb7ac8df2becd1df2e7befd2e1e9f1d467375 Author: Ludovic Rousseau Date: Fri Nov 5 09:00:49 2004 +0000 close bugs 1292 and 1138: add support for Cyrillic (CP1251) commit 11dc65807e891c092f772970f7472aa5d6566556 Author: Ludovic Rousseau Date: Thu Nov 4 21:03:42 2004 +0000 close bug 1346: add support for Hebrew (CP1255) commit bc0046e302b248a0043639eca9c256e47ff68d09 Author: Ludovic Rousseau Date: Thu Nov 4 21:02:02 2004 +0000 charset_p2newj() and charset_j2p(): default charset is considered to be UTF-8 since we may add a long list of them commit 5c18314cd3eeb5db7b439f8749bb6dfced5b139f Author: Ludovic Rousseau Date: Thu Nov 4 20:33:51 2004 +0000 other_to_UTF(): cast (unsigned char*)strdup() since that's the return type commit 6da21d56e24ced1101c2c7bf41b6c8145b69c157 Author: Ludovic Rousseau Date: Thu Nov 4 20:29:51 2004 +0000 display_weeks_appts(): convert the week day in UTF-8 commit a149bccfd73d60e02347ad68b5f54fbbf9d73358 Author: Ludovic Rousseau Date: Thu Nov 4 20:26:16 2004 +0000 jp_strftime(): the "format" string argument is UTF-8 encoded since it comes from a po/ file. So convert it to local encoding before using it in strftime(). commit a800a3fbb0ddbc7f6a50b17d8b03f3665d361912 Author: Ludovic Rousseau Date: Thu Nov 4 20:23:23 2004 +0000 add a leading / to the translated "/File/_Find" entry commit dfd0137a5fa91039141e80828262c92710d9c87f Author: Ludovic Rousseau Date: Thu Nov 4 20:19:21 2004 +0000 remove fuzzy for "/_File""/_File" entry translate "/Help/PayBack program" and "/Help/J-Pilot" This will avoid having duplicate File and Help menu entries commit 9b27b7049e94cd6da0b8e17e559e282fde97f4f4 Author: Rik Wehbring Date: Sat Oct 30 04:47:04 2004 +0000 Center 4 app buttons with pixpmaps to match sync and backup buttons commit a5de9bcfcba3370d990d4fb00d9145df0d22c16f Author: Ludovic Rousseau Date: Fri Oct 29 20:21:48 2004 +0000 remove config.status before starting autoreconf commit 8d86e051c586aa38148422eea220ae08015faace Author: Ludovic Rousseau Date: Fri Oct 29 20:20:56 2004 +0000 use iconv to convert from the Palm charset to UTF-8. Many thanks to Amit Aronovitch for the idea and a large part of the code. commit 150b0660643c57eaadae8e8aad4e52c1a72aab8f Author: Judd Montgomery Date: Fri Oct 29 01:12:48 2004 +0000 Fixed bug with setting todos forward days the first time the calendar widget is used commit cfcd8783209ba2ead5f57ea651de0a8065f28f50 Author: Ludovic Rousseau Date: Thu Oct 28 20:29:19 2004 +0000 output_to_pane(): with GTK2, insert the text at the end and not at the cursor position since the user may have clicked on the text and moved the cursor to the clicked position. Thanks to Ari Pollak for the patch commit 0c5ec4768f272fb5125ad90c09ff06b5e978bd49 Author: Rik Wehbring Date: Mon Oct 25 01:23:28 2004 +0000 Warn users when modification of deleted record is attempted commit de062a422bbeee94289c4bd7e491b1e9bd2c9be6 Author: Rik Wehbring Date: Mon Oct 25 00:34:37 2004 +0000 Same size mail and dial buttons in address book looks much cleaner commit 533eeb3ab5ae1d1cf5985593f7e0af62d72aefb2 Author: Rik Wehbring Date: Mon Oct 25 00:31:56 2004 +0000 Make sure selected row is visible after any CLIST update commit be1ce0d0dd5ae87c9b8696a5babb5095e0fbc9c4 Author: Rik Wehbring Date: Sun Oct 24 23:49:13 2004 +0000 Fixed unpredictable bug in repeating events caused by unitialized variable commit 0e90b7bb4830a19b1fad03c859b7eac9a8084298 Author: Rik Wehbring Date: Sun Oct 24 23:39:09 2004 +0000 datebook_gui.c commit 11a88991b91ddb9fce9b2da5783f179ea2afd08b Author: Judd Montgomery Date: Fri Oct 22 20:02:15 2004 +0000 removed variable declared in middle of code commit 9d93ce14bff005a601e57d9685d2ba0ad3c024a7 Author: Rik Wehbring Date: Fri Oct 22 06:58:44 2004 +0000 Fix cursor behavior in clists. Bug introduced when recoding update_clist() which prevented the right-hand side of jpilot from being updated on a cursor movement. commit f42e0be8beca07d55aa71b57a9b7b70805bfc49a Author: Rik Wehbring Date: Fri Oct 22 06:54:03 2004 +0000 datebook_gui.c commit a1e12d9807d3167415080d194ecded57d566cd9c Author: Judd Montgomery Date: Thu Oct 21 23:49:04 2004 +0000 Patch to make email buttons always call the email exe commit a538a6fd215dfab62c8697496509c2787c0412c1 Author: Ludovic Rousseau Date: Wed Oct 20 21:26:00 2004 +0000 version 0.99.8-pre2 commit a5f8f0dd548ac54f78aba684241ecdff7fe96905 Author: Ludovic Rousseau Date: Wed Oct 20 21:00:37 2004 +0000 version 0.99.8-pre2 commit 5390904ae6c35e0a0d14d22d4aac5538ff991728 Author: Rik Wehbring Date: Wed Oct 20 04:34:54 2004 +0000 Simplified code for e-mailing from address book. External mail program to use is now set as a preference. commit d408ee95e5b72f124d7027f9a616559c3f3f2a94 Author: Rik Wehbring Date: Tue Oct 19 18:39:36 2004 +0000 Removed printf apparently left over from debugging new feature commit 7502c04ba3c9dc67552b919a21bb69f81d064ed7 Author: Judd Montgomery Date: Tue Oct 19 17:21:31 2004 +0000 fixed default commit 03b6cdd5aa9af999c7f596cb2f9b98f6d1009050 Author: Judd Montgomery Date: Tue Oct 19 17:06:30 2004 +0000 Created option for specifying whether a ToDo should default to a due date, and what date commit f10c957e4e4249f1a7d46316f248479b6b574de4 Author: Judd Montgomery Date: Mon Oct 18 17:29:45 2004 +0000 keep output pane minimized until output is displayed commit db2534d6bbe341b0f668955e4b9f5ee8accb026c Author: Ludovic Rousseau Date: Sun Oct 17 14:51:01 2004 +0000 remove fuzzy tag for "/File/_Quit" (the _ was recently added) to avoid the creation of a "File" menu with "_Quit" as the only entry in addition to the translated "File" menu commit 6346c4c9a2c89775b50ada469fc165d97c247305 Author: Ludovic Rousseau Date: Sun Oct 17 14:26:34 2004 +0000 translate the new strings (hot-keys tooltips + some others) commit 43054df8bc8c5c9b4ad15b16a356dce0687b3c56 Author: Ludovic Rousseau Date: Sun Oct 17 14:12:51 2004 +0000 regenerated commit a095fa79bc71d7f9775f9fa22babb8f39075d012 Author: Ludovic Rousseau Date: Sun Oct 17 14:06:23 2004 +0000 regenerated to include the new texts for hot-keys and some others commit 6616c17bb0ce056c25f3cc60b7e8ac721ea40d02 Author: Ludovic Rousseau Date: Sun Oct 17 14:04:10 2004 +0000 - re-add intltool-extract.in intltool-merge.in intltool-update.in (my previous patch revision 1.28 was wrong) - add DISTCLEANFILES = intltool-extract intltool-merge intltool-update so that make distcheck is happy commit e1af7b5bcde4a7a1d9ddc733f394d75b858b9288 Author: Ludovic Rousseau Date: Sun Oct 17 13:55:13 2004 +0000 add mailer.h to jpilot_SOURCES commit 816ad65b7c7288f9c5a18aa742d48d5f99da2d60 Author: Ludovic Rousseau Date: Sun Oct 17 12:08:32 2004 +0000 add MSGID_BUGS_ADDRESS definition commit 393916578d9b40c7b8ef2692ed17651564d12c51 Author: Ludovic Rousseau Date: Sun Oct 17 12:00:39 2004 +0000 distribute ChangeLog.cvs commit ef4f0496a099116206293a0ceed338bf570d6367 Author: Ludovic Rousseau Date: Sun Oct 17 11:57:28 2004 +0000 generate ChangeLog.cvs and convert the login into real names commit ec52847e84c552829afe1d575c39ad2afe6ca7cc Author: Ludovic Rousseau Date: Sat Oct 16 18:54:56 2004 +0000 add the same keyboards accelerators for the 4 applications: Ctrl-D: Delete Ctrl-O: Copy Ctrl-N: New Record Ctrl-R: Add Record Ctrl-Return: Apply Changes commit 0cd3f285bb7b7a3acf38f2b0fb88d660ede29ace Author: Ludovic Rousseau Date: Sat Oct 16 18:32:36 2004 +0000 add Ctrl-Y accelerator for Sync commit 58d2828013b9053eea28f58d45b3c7b2ccfbe6c7 Author: Ludovic Rousseau Date: Sat Oct 16 17:42:51 2004 +0000 cb_add_new_record(): duplicate (strdup) the name/account/password strings since we get them using gtk_entry_get_text() which returns "a pointer to the contents of the widget as a string. This string points to internally allocated storage in the widget and must not be freed, modified or stored." http://developer.gnome.org/doc/API/2.0/gtk/GtkEntry.html#gtk-entry-get-text This bug crashes jpilot if you use a strings (like an non-ASCII character) that is modified by an UTF-8 conversion function commit 7de49c02ae6cd91f5f9d96108f5844451c7e75d9 Author: Rik Wehbring Date: Sat Oct 16 05:39:37 2004 +0000 Change repeatWeekly events to mirror Palm behavior commit 553a21ac6a6925676529026746cd84780a5f5374 Author: Judd Montgomery Date: Sat Oct 16 01:23:21 2004 +0000 Changes required to work with pilot-link 0.12.0 commit ff83269330e44055dad97c768a3cbe6760f5c546 Author: Judd Montgomery Date: Sat Oct 16 00:55:46 2004 +0000 minor cleanup of unused vars commit e0b358cc47c94696e1576fdb018c1c86d2de6cd9 Author: Judd Montgomery Date: Fri Oct 15 21:49:53 2004 +0000 Added check for pilot-link 0.12 and rewrote version checks commit f144ca69d4dcfa35e15bb1d021c5e44301059000 Author: Ludovic Rousseau Date: Fri Oct 15 20:28:48 2004 +0000 rename CHAR_SET_LATINUTF in CHAR_SET_1252UTF since the Palm does not use ISO Latin1 encoding but CP 1252 encoding. See http://www.microsoft.com/typography/unicode/1252.htm commit 766224a16b4625d356196e69092317cb1334e41c Author: Ludovic Rousseau Date: Fri Oct 15 19:06:46 2004 +0000 multibyte_safe_memccpy(): the searched character may also be just after a multi-byte character commit 750c0a7f5e833cdb44269d19cff826e978e4ef3a Author: Ludovic Rousseau Date: Fri Oct 15 19:01:38 2004 +0000 small re-indentation for a better readability commit 5b1e68d5dac54e4b9f64b6339fcb7a18d1c8f655 Author: Ludovic Rousseau Date: Fri Oct 15 10:52:09 2004 +0000 charset_p2j(): call charset_p2newj() to avoid code duplication commit e5d6bd7e4ee0f39fa6c9c8cf17cfff13b2831bc9 Author: Ludovic Rousseau Date: Wed Oct 13 20:03:26 2004 +0000 populate_clist_sub(): sort the list of file filenames to restore commit 5fae925741d0c6d968c4a347aba6b6c325dbf975 Author: Ludovic Rousseau Date: Wed Oct 13 19:36:27 2004 +0000 If ENABLE_GTK2, convert the file names to restore in UTF-8 since they may contain non ASCII characters commit 15f617ba4668b52b9f167a0b287c108b8f765d2c Author: Rik Wehbring Date: Sat Oct 9 17:51:48 2004 +0000 Change checkbox string to more grammatically correct singular noun commit ffd4e09b4a3754d0b83707c95eb31314ef393255 Author: Rik Wehbring Date: Sat Oct 9 06:32:04 2004 +0000 Fix highlighting error in events which repeat by day commit e2645c1f5062376cee4df09d8990e521ec3309d1 Author: Ludovic Rousseau Date: Fri Oct 8 22:09:43 2004 +0000 Add: "Ask confirmation for files installation (J-Pilot -> PDA)" configuration option commit 0c2fbf236c2578a5d0adc4d98b43ffc9bc170602 Author: Ludovic Rousseau Date: Fri Oct 8 21:42:08 2004 +0000 install_gui(): rename the "Done" button in "Close" commit c5ae09a510689681deed2c6da8c8aa102c16b52f Author: Ludovic Rousseau Date: Thu Oct 7 21:56:50 2004 +0000 main(): (re)set the output pane to size used when jpilot exited commit 60cd3653c13988e1e071b9965e6dba3118026fb4 Author: Ludovic Rousseau Date: Thu Oct 7 21:26:33 2004 +0000 updated commit fdb08143cfe7fdff694b4b38732b032b19293895 Author: Ludovic Rousseau Date: Thu Oct 7 21:25:49 2004 +0000 regenerated commit 184fb22aa95a595951479ad647042845fea08afe Author: Ludovic Rousseau Date: Thu Oct 7 21:24:45 2004 +0000 undelete_pc_record(): initialize ret variable commit cb1e46f9a1d51fc95fa49d9d2798e6e101ca08c0 Author: Ludovic Rousseau Date: Thu Oct 7 21:23:57 2004 +0000 undelete_pc_record(): remove declatations of 4 unused variables commit 8314e3ff6e52207c270a96a5b182b012cedb2496 Author: Ludovic Rousseau Date: Thu Oct 7 21:22:09 2004 +0000 todo_gui(): remove 7 declarations of now unused variables commit ba6249450e619d94f5c9083f047276ab6f046927 Author: Ludovic Rousseau Date: Thu Oct 7 21:20:43 2004 +0000 memo_update_clist(): remove unused int i variable commit a5f0c4cfe5cec5912b359e9621cfcf5e2740fea8 Author: Ludovic Rousseau Date: Thu Oct 7 21:20:01 2004 +0000 main(): remove unused char utf8_locale[] variable commit 8eb758f8c89988810d0ad2e0c6095f1e5c7bd38e Author: Ludovic Rousseau Date: Thu Oct 7 21:18:09 2004 +0000 #include "mailer.h" commit 47d96369e2c7f397c19ec60f5033cac4973632e8 Author: Ludovic Rousseau Date: Thu Oct 7 21:17:40 2004 +0000 new file with dialog_email() prototype commit 22b34a9fd69226adce4a0c62fae1ecabff8dc55e Author: Ludovic Rousseau Date: Thu Oct 7 21:02:01 2004 +0000 rename clist_find_id() in expense_clist_find_id() to avoid a name collision with a clist_find_id() in utils.c commit 786071b275ab32e1352b492c5889cb94a5bc88f4 Author: Ludovic Rousseau Date: Thu Oct 7 20:49:34 2004 +0000 add undelete_pc_record() prototype commit 341d210026811039ed1f242e70a320faa34d0231 Author: Rik Wehbring Date: Thu Oct 7 19:19:01 2004 +0000 Add ability to quit by simply typing q from File menu commit 87f67fb3de9f5b70f2462796f770aab649584360 Author: Rik Wehbring Date: Thu Oct 7 19:11:09 2004 +0000 Remove Quit button from left column of main window commit ff2e08d0116ce8bd783610c5c70c35f4a77b1863 Author: Rik Wehbring Date: Thu Oct 7 04:17:59 2004 +0000 Simplify code to use a single callback for all preference checkboxes commit cf835ae7a20352e14635a7ed7a3fc610db3bddad Author: Rik Wehbring Date: Thu Oct 7 03:51:58 2004 +0000 ToDo and Memo preferences moved from application window to preferences window commit 97f01d57e29726046dc8f10422a5ed539f10a76a Author: Ludovic Rousseau Date: Wed Oct 6 21:29:12 2004 +0000 cb_search_gui(): add a keyboard accelerator (Escape key) for the "Close" button commit 485d3d717bbe1f64522796e19a041646b9693026 Author: Ludovic Rousseau Date: Wed Oct 6 21:23:02 2004 +0000 cb_search_gui(): rename the button from "Done" to "Close" commit 62e34fb487fbbce6a7b5fd58e85508c1c86b3ee7 Author: Ludovic Rousseau Date: Tue Oct 5 20:19:04 2004 +0000 install the manual files in a manual/ directory commit 521e45f974326447d4ad61d2f8f52b2bdc6eabfa Author: Rik Wehbring Date: Mon Oct 4 05:04:59 2004 +0000 Improve efficiency of cb_clist_update across all 4 apps. Eliminate double calls to cb_clist_selection. Pull constants out of loops. Datebook update clist now follows same style as other 3 apps. commit 9931665ff40223e2783f9acf811d90254b6eecdc Author: Ludovic Rousseau Date: Sun Oct 3 21:53:55 2004 +0000 dialog_generic_with_text(): the first button get the focus so you can close the dialog with the Enter key commit cb62be3404bbb6d98d0be67d14e95d567c619741 Author: Ludovic Rousseau Date: Sun Oct 3 20:11:32 2004 +0000 change the Import and Export icons. Thanks to David A. Desrosiers for the suggestion. commit 66b5e518a4035cee2c6d48552c64ae2f3341afe2 Author: Ludovic Rousseau Date: Sun Oct 3 18:58:59 2004 +0000 dialog_generic_with_text(): use the correct type for text_widget and avoid some GTK casts commit 8b9b4b2f4c8d074c348922d1ecea442232cabe74 Author: Ludovic Rousseau Date: Sun Oct 3 18:54:06 2004 +0000 dialog_generic_with_text(): hide the cursor so that you do not see a blinking bar commit 04bdf029c4c0e4f52f77b86e94b147c34c8c8ecb Author: Ludovic Rousseau Date: Sun Oct 3 18:48:23 2004 +0000 dialog_generic_with_text(): remove a useless double GTK cast commit 6013a8c825c4e3249fb8672b776ff730290ed074 Author: Ludovic Rousseau Date: Sun Oct 3 18:31:54 2004 +0000 let GTK2 calculate the correct height of the J-Pilot and PayBack about boxes commit 5583cdb328335c689b9ccd0bc1d42fe7e4652108 Author: Ludovic Rousseau Date: Sun Oct 3 18:15:17 2004 +0000 use "About %s" instead of a complete "About plugin_foo" so that every plugin can use the already translated "About %s" string commit d3b865a637efcb55e2a0e7fe894396066d387c73 Author: Ludovic Rousseau Date: Sun Oct 3 17:44:42 2004 +0000 add nice colorful GTK2 icons in the main menu :-) commit cd09d32a2887a3d341f5cd9937591ff0f2645ab1 Author: Ludovic Rousseau Date: Sat Oct 2 20:31:01 2004 +0000 use --install instead of --foreign for autoreconf commit b8405d7048e67290ce52555ffb473115c505f4df Author: Ludovic Rousseau Date: Sat Oct 2 20:30:28 2004 +0000 update J-Pilot version commit 9cadcfe00b4278fa5d61984abfae8dbabef1f50b Author: Ludovic Rousseau Date: Sat Oct 2 20:13:29 2004 +0000 include jpilot.xpm in the archive commit 5814b34c65e27fff303f6f790aefdfebd116b70e Author: Ludovic Rousseau Date: Sat Oct 2 20:08:55 2004 +0000 add jpilot.xpm so it can be used by jpilot.desktop or another menu system commit f08621c5bbc94574c08507ce6df11334fb546d44 Author: Ludovic Rousseau Date: Sat Oct 2 20:04:42 2004 +0000 do not distribute jpilot-upgrade-99.1 manpage since the binary is no more provided commit 0aa1e3045365e401f958e9411ead8d551e70ff92 Author: Ludovic Rousseau Date: Sat Oct 2 13:56:49 2004 +0000 I forgot two GTK cast for g_output_text commit 2342d5182ad2a3abf732837e543e67367e4ecfda Author: Ludovic Rousseau Date: Sat Oct 2 13:44:11 2004 +0000 use correct type for g_output_text to avoid inelegant GTK cast commit 46330d6ddec1700631ad2dc11844b0e56b9f0349 Author: Ludovic Rousseau Date: Sat Oct 2 10:58:12 2004 +0000 use the correct type for g_output_text_buffer so we can remove all the inelegant and dangerous type cast. commit 013f7de455871450aac1ae773aa8e62785a5770c Author: Ludovic Rousseau Date: Sat Oct 2 10:54:10 2004 +0000 output_to_pane(): use the right function and the right buffer when inserting valid UTF-8 text commit 64d5baca456fc38427b9b0970931b0b318f61f1f Author: Ludovic Rousseau Date: Sat Oct 2 07:45:52 2004 +0000 do not use autoreconf in autogen.sh (revert back to previous version) autoreconf is used in reconf commit 50cd15fdb4fa1679748ae33ae61315b2cf7007e3 Author: Ludovic Rousseau Date: Fri Oct 1 22:38:23 2004 +0000 Version 0.99.8-pre1 commit edb185e177aed543a76dec26ba3b4b3399d9afd6 Author: Ludovic Rousseau Date: Fri Oct 1 22:37:26 2004 +0000 do not generate intl/Makefile commit 8cdc859bb6a3f102d6bfde1fb2c40d6eb01d380b Author: Ludovic Rousseau Date: Fri Oct 1 22:06:00 2004 +0000 refreshed (regenerated) commit cf1f722274a73b59be169a824d996ded72ff6e9f Author: Ludovic Rousseau Date: Fri Oct 1 22:01:57 2004 +0000 translate jpilot-dump.c strings commit 8a234eae575a6e28be05e61b228338a9db20e80e Author: Ludovic Rousseau Date: Fri Oct 1 22:01:09 2004 +0000 include jpilot-dump.c strings commit 98d2f243cdde354bdb616de6858b516c6c675741 Author: Ludovic Rousseau Date: Fri Oct 1 22:00:13 2004 +0000 use i18n to benefit from l10n commit 347f8c72dc6aacb2e87b68a46bc25c893ba2798e Author: Ludovic Rousseau Date: Fri Oct 1 21:59:07 2004 +0000 add ../jpilot-dump.c commit 11b1e8ab3c23aaea42c60115a617e9bcda077b88 Author: Ludovic Rousseau Date: Fri Oct 1 21:50:05 2004 +0000 add jpilot-dump.c commit 461a9d656f38d8e3905f37b911e075822bfa32a3 Author: Ludovic Rousseau Date: Fri Oct 1 21:12:18 2004 +0000 use i18n to benefit from l10n commit eb17826e64cb65bc67bf09ee4433df80ae97cb9e Author: Ludovic Rousseau Date: Fri Oct 1 21:10:57 2004 +0000 big update commit 082367f5c7c85f51a16a6261a30745225d705528 Author: Rik Wehbring Date: Thu Sep 30 05:51:56 2004 +0000 Fix colors in GTK2.x when focus is shifted from text widget which has a highlighted section of text commit e86df44a6c38728650501137fa02a3b2dd6e4ef8 Author: Ludovic Rousseau Date: Wed Sep 29 18:35:56 2004 +0000 intltool-extract.in intltool-merge.in intltool-update.in are not useful/needed in the generated archive commit 16339890b0a65f779bcc724246a6533c64261fad Author: Ludovic Rousseau Date: Wed Sep 29 18:31:08 2004 +0000 use autoreconf commit 2355fe7cb84d328ed900ad250c46c2bbd985eca1 Author: Ludovic Rousseau Date: Sat Sep 25 18:15:05 2004 +0000 reorganise and add missing .m4 files commit 2b2513827385628c139ea9022057372c21eec5cc Author: Ludovic Rousseau Date: Sat Sep 25 18:11:40 2004 +0000 refreshed (regenerated) commit 53fc5d569ce34e62c162ad03d184078d173a8ec2 Author: Ludovic Rousseau Date: Sat Sep 25 18:03:07 2004 +0000 update commit 0946c8bb32c4bdfc8dca5bc0301f158bb6f00120 Author: Ludovic Rousseau Date: Sat Sep 25 17:59:18 2004 +0000 add version (0.14.1) to AM_GNU_GETTEXT_VERSION commit cb3076a27044789613f74027136c383144ba7b70 Author: Ludovic Rousseau Date: Sat Sep 25 17:54:33 2004 +0000 change "19yy" in "year" commit 9b3d1da84114372ef670ab5516eab78180c794de Author: Ludovic Rousseau Date: Sat Sep 25 17:01:14 2004 +0000 jp_vlogf(): try to convert to UTF-8 only if GTK2 is used commit dfd3f0cc77946d37c46c6a4202d6f6fa70da90c4 Author: Ludovic Rousseau Date: Sat Sep 25 16:40:41 2004 +0000 display a dialog box if GTK2 is used and the selected charset is not UTF-8 (usefull for user upgrades) commit 7bc92c7e03223806818d00cb8f372d72e273a321 Author: Ludovic Rousseau Date: Sat Sep 25 16:38:31 2004 +0000 add PREF_UTF_ENCODING (prefs.h) and utf-encoding (prefs.c) commit 1a4961f6527c18c24f5dda9fd0e92213dc57f58a Author: Ludovic Rousseau Date: Sat Sep 25 14:31:09 2004 +0000 glob_prefs[]: use CHAR_SET_LATINUTF by default (instead of CHAR_SET_LATIN1) when GTK2 is used commit fdd4b58a4bda6483a29d2003896a0b86b8d1a009 Author: Ludovic Rousseau Date: Sat Sep 25 14:28:14 2004 +0000 jp_pref_read_rc_file: use sizeof(line) instead of a constant commit 255920a2c03446c8e8434b9283947d0ce61e9a63 Author: Ludovic Rousseau Date: Sat Sep 25 14:23:06 2004 +0000 close bug 1330: invalid postscript when printing the todo list contains ( or ) commit 7e2f1beb9429e094f215a2a94ff3bea32f343c52 Author: Ludovic Rousseau Date: Sat Sep 25 13:58:19 2004 +0000 list of CVS ignored (generated) files commit 7ec599028109741589399ead31130c011f4381c4 Author: Ludovic Rousseau Date: Fri Sep 24 21:50:46 2004 +0000 list of CVS ignored (generated) files commit d396bd439e18b82f09f81712ef4c5654e6712e3e Author: Ludovic Rousseau Date: Fri Sep 24 21:44:09 2004 +0000 removed from CVS since they are (re)generated by autogen.sh commit 8d66f0ac909f83dcffe05040d80f61f22de79b5c Author: Ludovic Rousseau Date: Fri Sep 24 21:36:52 2004 +0000 display_months_appts(), monthview_gui(): use jp_strftime() instead of strftime() commit 6bc6a636d9e16066b0a37033d486909d771a6fbe Author: Ludovic Rousseau Date: Fri Sep 24 21:28:58 2004 +0000 make_pref_menu(): use jp_strftime() instead of strftime() for the "Long date format" menu commit 88303692c629e8ed9acd158c4b227d379a05a197 Author: Ludovic Rousseau Date: Fri Sep 24 21:26:11 2004 +0000 timeout_date(): use jp_strftime() instead of strftime() for the "Today is ..." display commit 40d40bc731b855116ae4e1eb894c2e2504521846 Author: Ludovic Rousseau Date: Fri Sep 24 21:24:46 2004 +0000 add declaration of jp_strftime() commit 59e4c647510cc31e053b28af09667bf1b52b8061 Author: Ludovic Rousseau Date: Fri Sep 24 21:20:01 2004 +0000 set_date_labels(): use jp_strftime() insead of strftime() commit a4f9beb0fc109ea853a78bb5d30ea1580883995c Author: Ludovic Rousseau Date: Fri Sep 24 21:10:33 2004 +0000 add jp_strftime() to convert the result of strftime() in UTF-8 when needed commit 6856e0bc9f14bb9bf5fbd1fa88aeb3c8f73551b5 Author: Ludovic Rousseau Date: Fri Sep 24 21:01:08 2004 +0000 solve bug 1306: Keyring plugin truncates passwords commit 61a307a0646f8ea58f8dce9b6404c1d852c57fb4 Author: Ludovic Rousseau Date: Fri Sep 24 20:56:53 2004 +0000 output_to_pane(): simplify the locale to UTF-8 text conversion commit fe7aa8877cdbfbc2a1dd511a743366857fa91b93 Author: Ludovic Rousseau Date: Fri Sep 24 20:43:44 2004 +0000 convert from UTF-8 to local encoding before printing to stdout commit 2df2410f9b7a50c9a4cdcb09b54d5decbb18ddee Author: Ludovic Rousseau Date: Fri Sep 24 20:42:36 2004 +0000 do not force setlocale() to a UTF-8 locale. It is a user choice. commit 4eda41dd907b061b3aff209262397ee5ecdcc0ac Author: Rik Wehbring Date: Thu Sep 23 14:53:17 2004 +0000 Removed one redundant line accidentally included while adding sort to todo columns commit dcddfaaebb1e210a860ec0317b8c491d7251f469 Author: Rik Wehbring Date: Thu Sep 23 05:36:34 2004 +0000 Add new feature to sort todo list by clicking on column title commit dbfbcb4cb4cfaf4e615c6ed9a3c845580f579315 Author: Ludovic Rousseau Date: Sat Sep 18 17:19:59 2004 +0000 UTF-8: correctly convert categories names commit 92a853229f75fe4a3434f44dcb600ef69f50b141 Author: David A. Desrosiers Date: Sat Sep 18 06:11:08 2004 +0000 Testing a commit, to further test the revert of the server-side commit scripts. commit db53a7d8a8e9913a45b83991a9d30b37aa851155 Author: Rik Wehbring Date: Sat Sep 18 04:30:02 2004 +0000 Final version of column width patch commit e0833597f58a605070610b1a605c524ae87f763a Author: Rik Wehbring Date: Sat Sep 18 04:12:51 2004 +0000 Better patch to autosize column width in search clist commit 4237a6b559df63ae6512975fd78576d3132a6838 Author: Rik Wehbring Date: Sat Sep 18 01:32:27 2004 +0000 clist width bumped up to fully display datebook text commit 19522e4eff7ba32294cad690bffdd1771d0a20f5 Author: Ludovic Rousseau Date: Fri Sep 17 20:07:24 2004 +0000 translate Help menu to avoid a menu duplication commit 92e7e15dbb3bc5899fa06ba54677f6f809c3b011 Author: Ludovic Rousseau Date: Fri Sep 17 20:01:18 2004 +0000 typo: ECrit -> Ecrit commit 75d5c2a8bcaa3891967f7098be87fbe80f0c8d58 Author: Rik Wehbring Date: Fri Sep 17 05:53:58 2004 +0000 Change clist to behave like the other 3 apps and also reduce flicker commit e388e62383818f901674bdb0d369957e88fcc27c Author: Rik Wehbring Date: Fri Sep 17 05:20:07 2004 +0000 Fix selected row so it is always 0 after changing category commit 6f57566790691def5e946a54385c4e4de00a7893 Author: Rik Wehbring Date: Fri Sep 17 02:20:02 2004 +0000 Bug 1056: Undelete feature desired commit 5a13156ebc5265cd1086020920ac7d75f220d49d Author: Rik Wehbring Date: Wed Sep 15 18:31:48 2004 +0000 Bug 1338: Some repeating appointments do not show in monthview gui commit e15bffed2ee77fb941665702ef00ca4c534b1183 Author: Judd Montgomery Date: Mon Sep 13 02:13:44 2004 +0000 Testing cvs auto emailer commit e65405a978f8386aa4388992591c753dcc7ad80f Author: David A. Desrosiers Date: Mon Sep 13 02:11:47 2004 +0000 Just testing a commit, so we can see if emails + diffs are working right. commit 741f790be8bd77911c69aff45208faa6602f1219 Author: Judd Montgomery Date: Mon Sep 13 01:53:42 2004 +0000 Testing cvs auto emailer commit 91d41edd86bae7429b078b0d442165da787e1fb0 Author: Rik Wehbring Date: Mon Sep 6 02:27:15 2004 +0000 Bug 1176: Adding ability to e-mail directly from address book commit f08a61fa7059ab3db45d3b293896b1d3ce7adcd4 Author: Rik Wehbring Date: Mon Sep 6 02:06:15 2004 +0000 Bug 1182: Search screen needs a button. Patch supplied by Ludovic Rousseau commit 48e69f72c90d738be5b506495218114d60e3705a Author: Rik Wehbring Date: Mon Sep 6 01:48:47 2004 +0000 Bug 1322: GTK2.4 libraries require changes to jpilotrc files to preserve colors commit d8082a6e1dfe3cd5ff14065e43f5c42816a751c3 Author: Rik Wehbring Date: Mon Sep 6 01:45:12 2004 +0000 Bug 1178: patch for 1 byte memory leak in datebook commit a8e685a73ee3d9aa37f048dd03acb05561efc91a Author: Rik Wehbring Date: Mon Sep 6 01:41:52 2004 +0000 Bug 1116: Word wrap provided when printing monthly calendar commit 9f4f3f7e5a3944935eff204c6781ed5c2fa083ca Author: Rik Wehbring Date: Mon Sep 6 01:36:58 2004 +0000 Bug 1154: resorting in address book should leave selection bar on same entry commit 1a7f128467ccbdc2405a4fbf1523f7ecd97bedbe Author: Rik Wehbring Date: Mon Sep 6 01:32:52 2004 +0000 Bug 1107: show completed todos found through search regardless of show completed checkbox status commit 2d22ee51c1598080caa74118c514a3ca75fac14a Author: Rik Wehbring Date: Mon Sep 6 01:25:44 2004 +0000 Bug 1153: Patch reduces flicker when deleting records commit 8e814d97b45cbe59b13f60a7e070e4df2cf031b8 Author: Rik Wehbring Date: Mon Sep 6 01:16:17 2004 +0000 Bug 1131: ALT key for accelerator instead of control commit 7ca05a8e0ba0e928e4ee8bde5c24b05b1a533c3b Author: Judd Montgomery Date: Sat Jul 24 19:29:20 2004 +0000 patch for locale - Rik Wehbring commit 2e4bcd70767b33c94d3490d1e82ac2f5fe83756b Author: Judd Montgomery Date: Sat Jul 24 19:26:02 2004 +0000 patch xlib warning - Rik Wehbring commit 372c6d12440814eb1f10d1c4333ff9dbf2e2c0a8 Author: Judd Montgomery Date: Sat Jul 24 19:19:31 2004 +0000 changed usage string and tagged for translate commit 6549fcb27b735f45721109486bbe6677a918b35e Author: Judd Montgomery Date: Sat Jul 24 18:18:26 2004 +0000 translation string patch - Rik Wehbring commit 59abd46f6bb2937fac9831d3d035bb03efc01de8 Author: Judd Montgomery Date: Sat Jul 24 17:54:07 2004 +0000 translation string patch commit 7e534d50b230332d5d134d5936408975d30da376 Author: Judd Montgomery Date: Sat Jul 24 17:50:58 2004 +0000 translation string patch - Rik Wehbring commit eef1fd874336b1c2092989c3a570b60976484464 Author: Judd Montgomery Date: Sat Jul 24 17:43:28 2004 +0000 translation string patch - Rik Wehbring commit 3c9ab02f1bc71b601d7f3a9c5f6787eaed03cef7 Author: Judd Montgomery Date: Sat Jul 24 17:32:26 2004 +0000 translation string patch - Rik Wehbring commit 2f9fcc6036e3a3214569864c2bfac420c337cf7c Author: Judd Montgomery Date: Sat Jul 24 17:24:44 2004 +0000 translation string patch - Rik Wehbring commit 04a915e55b79f001ff5ecf9248094e00d31539d7 Author: Judd Montgomery Date: Sat Jul 24 17:15:09 2004 +0000 translation string patch - Rik Wehbring commit c5817479d012e260170eac71dde9f1e2b3788cfb Author: Judd Montgomery Date: Sun Jul 18 18:32:47 2004 +0000 patch for utf8 error messages from Ludovic commit f15947ac1dde6c62dc750fce21ff31ecfeec7bd1 Author: Judd Montgomery Date: Thu May 27 22:27:28 2004 +0000 patch for bug 1178 commit 43fb122e3602fd011e7d124db013fe82df7b3ef0 Author: Judd Montgomery Date: Mon May 3 00:53:00 2004 +0000 Ludovic 1 liner for sizeof typo/bug commit 188a25abc1c5885e640b6faf73d93c501d7373a2 Author: Judd Montgomery Date: Mon May 3 00:49:54 2004 +0000 Ludovic patch for setlocale commit 945ef6fe22ea0c54c4d1722f7b7df9ba1a327d9e Author: Judd Montgomery Date: Wed Apr 21 02:49:49 2004 +0000 updated commit 5d5b11c62b5ee8bc8c49075105c64a783104c4c6 Author: Judd Montgomery Date: Wed Apr 21 02:14:43 2004 +0000 records not passing binary check failed to get deleted commit a4b00273ea08396890325a556e411d32c2756df1 Author: Judd Montgomery Date: Wed Apr 21 01:58:55 2004 +0000 patch 1184 for truncating buffers with non ASCII charsets commit 9c32d152fe9bae871facd75851ecde18ea91281c Author: Judd Montgomery Date: Fri Apr 16 01:30:02 2004 +0000 updated for 0.99.7 commit 3bcb944978c4c71f44ed72ad2c88d6593fe75255 Author: Judd Montgomery Date: Thu Apr 15 02:55:45 2004 +0000 updated for 0.99.7 commit 6d424e503663b6f9678f9ed2d23288e538e76266 Author: Judd Montgomery Date: Thu Apr 15 01:50:55 2004 +0000 updated commit 004d2bf46370afc9992544d3006fed8db3250318 Author: Judd Montgomery Date: Thu Apr 8 01:33:42 2004 +0000 DateBk5 patch for completed events (tag is 'C' and 'c' now) commit 6a9ddb921fb426b7f41a48554ac1acddeea4fc79 Author: Judd Montgomery Date: Thu Mar 25 02:45:52 2004 +0000 help menu fix commit 9eca077b1108e14018df991671505b2cdff2e821 Author: Judd Montgomery Date: Thu Mar 25 02:16:43 2004 +0000 keep time menu pull downs more in sync with keyed entries commit 7b7fde8c44bcb4884a328f117e20903e973ba15e Author: Judd Montgomery Date: Tue Mar 23 02:38:55 2004 +0000 make export not clear the right side commit 73694d7a32ba52efb6a1a635785b148f95a85f26 Author: Judd Montgomery Date: Tue Mar 23 02:34:22 2004 +0000 bug 1160 - move highlighted line to modified record commit 0ff9a5bc04330beb2ae20bb3873ed753850deea2 Author: Judd Montgomery Date: Tue Mar 23 02:30:07 2004 +0000 Improved dayview code changes commit 42b1afe595ba87148c3dd321e61784cfe191e1d2 Author: Judd Montgomery Date: Sat Mar 20 16:16:15 2004 +0000 F for floating appt as well as f commit 5f5a44e2ba2d9358bf885d9af760b267aa5a8df9 Author: Judd Montgomery Date: Sun Mar 7 02:56:22 2004 +0000 fixed memory leak commit ff6aec3d726f4fb3de3a0e8764d9f9ba93644308 Author: Judd Montgomery Date: Thu Mar 4 03:21:06 2004 +0000 paste error commit 5af7def6454f1d6d3bc8251dc9fdd87ab2bad7df Author: Judd Montgomery Date: Wed Mar 3 01:30:10 2004 +0000 added Panayotis Katsaloulis for greek code commit ed0d9fdd8affffe3bc40bccbabe7eaf2d0003dee Author: Judd Montgomery Date: Mon Mar 1 14:22:52 2004 +0000 testing cvs commit ad7fcd585f110d3b253dc86fe7541cf02a4dc9e6 Author: Judd Montgomery Date: Mon Mar 1 14:10:55 2004 +0000 removed -Wall commit 2ac4d2d5fe4249d46216db0a9aa44f8d45f870aa Author: Judd Montgomery Date: Mon Mar 1 14:09:53 2004 +0000 fixes for Solaris commit 35795a74fc3ccd48a416de9e9dd01219cc4c9b6a Author: Judd Montgomery Date: Mon Mar 1 13:53:53 2004 +0000 minor change, declaration of vars after code commit cf593dce4d16cf31ca442a7d4b938c9d1b7dfac0 Author: Judd Montgomery Date: Mon Mar 1 00:20:54 2004 +0000 minor changes commit 0ba5a83ed8983e22ae048682897382bb0f640f07 Author: Judd Montgomery Date: Sun Feb 29 23:16:31 2004 +0000 took out offending chars which were unused commit 520ab843a7efae98e64042f1a231e49835f52087 Author: Judd Montgomery Date: Sun Feb 29 23:09:44 2004 +0000 updated commit 7b16795d993d4d9910dc6ba0c5eb02e4c9898803 Author: Judd Montgomery Date: Sun Feb 29 23:09:23 2004 +0000 include stdlib commit d52cf9ce8bdc29be7ba1a4b5b0b4701888cba0e8 Author: Judd Montgomery Date: Sun Feb 29 23:08:59 2004 +0000 turn off gettextize for now commit 78e5a340bf19cd514228476c47f8ab0d98ecf98a Author: Judd Montgomery Date: Sun Feb 29 23:07:13 2004 +0000 added description-pak commit 15635a6de7fb15514d0d0225625106356536896a Author: Judd Montgomery Date: Sun Feb 29 23:04:57 2004 +0000 updated for 0.99.7 commit 403fe7e6f871ea6d3650f3a66233be6fb60733b3 Author: Judd Montgomery Date: Sun Feb 29 23:04:31 2004 +0000 added missing man pages commit bb9a9c38bcaec49a1606965fafbd97b1cfb6bba0 Author: Judd Montgomery Date: Sun Feb 29 23:04:21 2004 +0000 *** empty log message *** commit 7b890f692df3e962d534eae5a2898cbca54d66a6 Author: Judd Montgomery Date: Sun Feb 29 19:41:06 2004 +0000 updated commit 688580a159965bb0165e26977dbb6b630b5c1fb2 Author: Judd Montgomery Date: Sun Feb 29 19:36:36 2004 +0000 rpmbuild command added commit 0d7cda5536e4bfce5aebb5b9d34c2c0eea398c74 Author: Judd Montgomery Date: Sun Feb 29 18:49:59 2004 +0000 Added patch fpor getting phone label tags commit 7b8c3fa26f3e9eb7f1c00d62e1b9aa21409a5318 Author: Judd Montgomery Date: Sun Feb 29 18:49:19 2004 +0000 Added version checking commit a9d09f7409d7c4b7feab7f903fa27e750169e0bd Author: Judd Montgomery Date: Sun Feb 29 18:46:14 2004 +0000 temporary patch for aclocal 1.8.2 problems commit 592ff33052fc710177023028ea5299b2801492a8 Author: Judd Montgomery Date: Thu Feb 26 03:06:15 2004 +0000 update commit 4c484f2155df99546336e22981f7be221d3f2488 Author: Judd Montgomery Date: Wed Feb 25 03:49:12 2004 +0000 File menu problem commit 9e68d074a4da312700609a3f00cfd3eb9165fd0f Author: Judd Montgomery Date: Sun Feb 22 21:47:49 2004 +0000 initial import commit 142c102acab44bc4d842a20157d5311b1e9e95c6 Author: Judd Montgomery Date: Sun Feb 22 20:34:29 2004 +0000 updated commit 5f573e8882e24c73822c20b7c80e1d3ff0d4656e Author: Judd Montgomery Date: Sun Feb 22 20:26:20 2004 +0000 gettext version 0.14.1 commit 01144cdfd5afacdc3fecf83e41208b1440d5ccd0 Author: Judd Montgomery Date: Sun Feb 22 20:01:13 2004 +0000 updated commit 3ca32341a116397aa8882a58be5cf9b18aae4c56 Author: Judd Montgomery Date: Sun Feb 22 20:00:16 2004 +0000 aclocal version 1.8.2 commit d32a2d9da7f347a5cd1443dff60f560c7b04d6ca Author: Judd Montgomery Date: Sun Feb 22 19:56:05 2004 +0000 gettext version 0.14.1 commit 38b861934707744b8a591443345abeee505a6b70 Author: Judd Montgomery Date: Sun Feb 22 19:45:38 2004 +0000 upgrade gettext 0.14.1 commit 5c5d039ed46688a167ea2f88ecb464d504d19a14 Author: Judd Montgomery Date: Sun Feb 22 19:41:33 2004 +0000 comments commit 07396976b901aed50d4906b59c8e9a4acaa3859e Author: Judd Montgomery Date: Sun Feb 22 19:30:23 2004 +0000 updated commit 4a7adcf1b808cf7980876c107964b93a7733b21f Author: Judd Montgomery Date: Sun Feb 22 19:30:07 2004 +0000 upgrade gettext 0.14.1 commit 04244d9970fdd5f97839bdbf083fef4df1604cd2 Author: Judd Montgomery Date: Sun Feb 22 19:25:47 2004 +0000 gettext version 0.14.1 commit 30167e3290fc6781d1c9296bffae20b737d3afee Author: Judd Montgomery Date: Sun Feb 22 02:05:46 2004 +0000 Added creator IDs to skip with OS 5.x commit 7e99b2435ecefeb120fef717313f3cc93ddef102 Author: Judd Montgomery Date: Sat Feb 21 22:54:34 2004 +0000 buffer too small commit 0587e57269b50ee349d4a3003d6a560968b80dbe Author: Judd Montgomery Date: Sat Feb 21 05:51:13 2004 +0000 *** empty log message *** commit 2bfc44312229e111bf829d77a64a4347d80ef2cc Author: Judd Montgomery Date: Sat Feb 21 05:38:31 2004 +0000 1.7.3 to 1.7.7 commit 3851860b710a9f887fb3321e8849f0f828a158ef Author: Judd Montgomery Date: Sat Feb 21 05:30:48 2004 +0000 put help->jpilot text in a textview commit 4e48bcfa1353466aa7549df1837e57b8c482c5cf Author: Judd Montgomery Date: Sat Feb 21 05:29:56 2004 +0000 added dialog_generic_with_text commit a5efbaf8d516b2ff011b634b794def3156c95aee Author: Judd Montgomery Date: Sat Feb 21 01:39:23 2004 +0000 cp1253.c, h commit 28848b375b9778b08b2c7f0903f60ca6898ac74d Author: Judd Montgomery Date: Wed Feb 18 05:17:43 2004 +0000 --help typo commit a30430fee05f81653c2203b8d31999b3eedeb2c4 Author: Judd Montgomery Date: Wed Feb 18 05:16:50 2004 +0000 bug (feature) 1052 - Highlight overdue todos commit 1dacb6b84d3197e21bd332588aedff1372e8959a Author: Judd Montgomery Date: Wed Feb 18 04:53:52 2004 +0000 bug (feature) 1052 - Highlight overdue todos commit d8a860c91bfa2e4ea074b936d3b3c6703119aee1 Author: Judd Montgomery Date: Wed Feb 18 04:37:50 2004 +0000 -i option added commit 4778a805893a6859660b44791da2a1c090a62d0f Author: Judd Montgomery Date: Wed Feb 18 02:57:55 2004 +0000 patch 1054 - remember last categories commit 3586e9e843cc8116f70c08f8c935ca91ee80489f Author: Judd Montgomery Date: Wed Feb 18 02:47:59 2004 +0000 bug 1050 - memory leak commit 5ae90416d63ac621926c69abae6f5f31484bfe69 Author: Judd Montgomery Date: Wed Feb 18 01:30:27 2004 +0000 added Rik Wehbring commit 9dfa3b23a1669354c836c37b5860df10aa594803 Author: Judd Montgomery Date: Wed Feb 18 01:23:33 2004 +0000 bug 1119 - ask twice to save record when changing categories commit 919eb83ba0bb41210c5e8ea11cf8f42672acb6a6 Author: Judd Montgomery Date: Wed Feb 18 01:09:03 2004 +0000 bug 1120 - can use cursor keys in edit category window now commit 9b591b84c6ff5258d8870ff5b1e5c66301d3be53 Author: Judd Montgomery Date: Wed Feb 18 01:05:46 2004 +0000 bug 1117 - typing in an empty todo now assumes new todo is wanted commit 40f520854224e433fd3f4c0481dd2046e27b2ed6 Author: Judd Montgomery Date: Wed Feb 18 01:03:03 2004 +0000 possible memory problem commit 7e8cfdc8d83bc788bd7de38c040b48c1d7748d71 Author: Judd Montgomery Date: Wed Feb 18 00:54:10 2004 +0000 bug 1118 bug fix for cycling categories not asking to save record commit 53e28f8ecca31a9db396741fa3ed15831098f6b2 Author: Judd Montgomery Date: Tue Feb 17 05:01:50 2004 +0000 Made menu code a little simpler commit b504008238d98dffa338fb0162a38e36382d1319 Author: Judd Montgomery Date: Mon Feb 16 05:20:47 2004 +0000 Small GTK patch for file type guess commit 3343b24a6ebe41a8955af1255aeafba190620a16 Author: Judd Montgomery Date: Mon Feb 16 05:17:14 2004 +0000 copy/paste error bad pointer commit a620b7596b091ece7228bbf5e6429d9e64ffda2e Author: Judd Montgomery Date: Mon Feb 16 01:47:44 2004 +0000 some compilers don't like declared variables inline with code commit f74a98ce9744373a762031aa9fe6a66bba4bba2d Author: Judd Montgomery Date: Thu Feb 12 04:39:29 2004 +0000 GTK2 patches accelerators - Rik commit d868b79deed4bfa3031d8b63bfc282e4777fe207 Author: Judd Montgomery Date: Wed Feb 11 02:28:47 2004 +0000 accelerators for GTK2, Ludovic Rouseau commit afd2b80b38860c3213e57af869e0a9d4efe7619c Author: Judd Montgomery Date: Sun Feb 8 22:55:08 2004 +0000 CP1253<-->utf8, Greek character conversion added commit 50fe55b61ba4b596d2678e5af2f3ff63b56ff352 Author: Judd Montgomery Date: Sun Feb 8 22:31:02 2004 +0000 Backout previous vcard fix commit a095fddd9bdc1ddc9e1670cc927f298a3b10754f Author: Judd Montgomery Date: Sun Feb 8 15:56:49 2004 +0000 vcard export fix commit ecff307efb6df3833d70cc8ad4d33407677c1947 Author: Judd Montgomery Date: Sun Feb 1 01:30:54 2004 +0000 updated for GTK2 commit 59b7020e5d7771721c190e6ff1c82ba9bfb80328 Author: Judd Montgomery Date: Mon Jan 5 06:41:56 2004 +0000 Iconify at startup commit 26e3f750116fee187801b10831817bfed1464133 Author: Judd Montgomery Date: Sun Jan 4 23:55:38 2004 +0000 todo prefs shown when shouldn't - bug 1031 commit bf067c2978fe856eda490950f4c24e7b4bd56593 Author: Judd Montgomery Date: Sun Jan 4 03:02:57 2004 +0000 added LC_ALL C commit fab2a3bfeddc24e741ccba4fcac1ad30e0efe24d Author: Judd Montgomery Date: Sun Jan 4 02:40:13 2004 +0000 cp1252 patches commit 16c08217639c379a8bfaffbf7d6109d720b557a1 Author: Judd Montgomery Date: Fri Jan 2 21:25:16 2004 +0000 gtk2 textview code for expense and keyring - bug 1016 commit 1a00d7122e3b3d897eba66faeec2bf38cddb96b9 Author: Judd Montgomery Date: Fri Jan 2 21:06:39 2004 +0000 added tooltips to month, week buttons - bug 1015 commit 3dc7b46385cf2fa44f4730171a9fb96fb2a6da26 Author: Judd Montgomery Date: Fri Jan 2 20:16:46 2004 +0000 window focus patches - bug 1012 commit 29cf97ad6a7eeec28525ebf44d08dd59f18dd747 Author: Judd Montgomery Date: Fri Jan 2 20:09:41 2004 +0000 Added a few menu accelerators - bug 1011 commit bb12fb3a162e0c5c3cadb559282f0f3580df1c0a Author: Judd Montgomery Date: Fri Jan 2 20:04:35 2004 +0000 some configure enable options broken - bug 1010 commit 818eee212db8777f9c1d8f34622eacb458fc69c1 Author: Judd Montgomery Date: Fri Jan 2 19:59:20 2004 +0000 commented clist hack better commit 783c5c893a604f8bb0446f5e00ef87ede370ed67 Author: Judd Montgomery Date: Fri Jan 2 19:58:35 2004 +0000 selecting a new date in calendar wouldn't ask to save changes - bug 1006 commit 49f90e0e06df7a5a6ed4063732bbc3ffca836526 Author: Judd Montgomery Date: Fri Jan 2 19:40:59 2004 +0000 1 liner for ALT-F key binding - bug 1002 commit 6b0a252118a79e685bc0507fb736759160f96f3c Author: Judd Montgomery Date: Fri Jan 2 19:37:40 2004 +0000 deleting every entry left the last showing - bug 1019 commit dbfb298626db0fccbc31c591174d68f92a6c8123 Author: Judd Montgomery Date: Fri Jan 2 18:54:42 2004 +0000 category cycle with only 2 cats did not work - bug 1018 commit 911e2da82d608ca4ed20081b459838bb05f4d5fe Author: Judd Montgomery Date: Fri Jan 2 18:51:06 2004 +0000 category corruption in memo - bug 1017 commit cc898b9499742dcf002f504ffe2eade8276ba59e Author: Judd Montgomery Date: Fri Jan 2 18:41:54 2004 +0000 fixed leading space in no time appts - bug 1004 commit 1e9418fd8d8424056a80137885013e035d154457 Author: Judd Montgomery Date: Fri Jan 2 18:40:17 2004 +0000 fixed name repeated in second field - bug 1005 commit 6ff961630243bd22e79df322bda413a38b094ab8 Author: Judd Montgomery Date: Fri Jan 2 06:52:45 2004 +0000 null pointer fix commit 376d27e2e0e8e6ad332931e0cd571e8a3ccdcf40 Author: Judd Montgomery Date: Fri Jan 2 06:44:01 2004 +0000 GtkTextView for GTK2 commit d3793582d84d06a6254ad9ed97cc6c60782103e7 Author: Judd Montgomery Date: Fri Jan 2 01:25:57 2004 +0000 GTK2 support for monthview commit a89b88ef3206a1d4e2731a73716e107162f21c9b Author: Judd Montgomery Date: Fri Jan 2 01:22:43 2004 +0000 GTK2 support for weekview commit 02b099cf26a0a4f952763d5e2ced67304c0ddc3b Author: Judd Montgomery Date: Thu Jan 1 17:13:08 2004 +0000 New character set routine commit 79087b8d19e60bd0a62c806b748f8c6632a1a369 Author: Judd Montgomery Date: Thu Jan 1 16:58:25 2004 +0000 minor text change commit 0c1962b3008079b7eb5e9b06995b511194a84403 Author: Judd Montgomery Date: Thu Jan 1 16:55:16 2004 +0000 changed charset_j2p to a function commit 910576ac0c365226ec015bf2346285952f17b2be Author: Judd Montgomery Date: Thu Jan 1 16:43:22 2004 +0000 New character set routine commit 3a7a9327476c2630817f6491412e31f5655838ef Author: Judd Montgomery Date: Thu Jan 1 16:22:42 2004 +0000 half rewritten, much faster drawing and less lines commit 66769da8220f167870527c8455e283f369e26fde Author: Judd Montgomery Date: Thu Jan 1 00:50:02 2004 +0000 cleanup commit 69d1d6990a349f996eb80c73f684e3e7360fcf8c Author: Judd Montgomery Date: Thu Jan 1 00:49:41 2004 +0000 made weekview resizeable and remember its size commit 1b04595f1c205ca85ac7306bfe5c1f57217104f8 Author: Judd Montgomery Date: Wed Dec 31 22:16:51 2003 +0000 made monthview resizeable and remember its size commit 2775fe81fb0fa334bf32533e84b8c050bb74a661 Author: Judd Montgomery Date: Mon Dec 29 04:49:59 2003 +0000 fixed calendar flicker on pgup/pgdn commit 6cef4c8a4340babc598e96617b6d3c54a34569d9 Author: Judd Montgomery Date: Wed Dec 24 01:04:53 2003 +0000 fixed endless for loop commit c2e58bf0e8546853f06cd8293be75d01d5207887 Author: Judd Montgomery Date: Mon Dec 8 02:30:10 2003 +0000 day now highlighted if private record and masked records on commit 0853d6fe71d595854f2540c655a7c840d4751768 Author: Judd Montgomery Date: Mon Dec 8 01:21:45 2003 +0000 minor misc bugs commit 3838b335a31accf7b3c74c1536116c86274ded4c Author: Judd Montgomery Date: Sat Dec 6 04:28:57 2003 +0000 Japanese patch for tabbing between kana address fields, was broken commit 09eed4be8220275390c053ef94abc75aaf5cb396 Author: Judd Montgomery Date: Sun Nov 16 22:19:49 2003 +0000 Not allow delete, copy when modifying a rec commit 29fbcd4bf1b340fcc1237e615ba81af587390612 Author: Judd Montgomery Date: Thu Nov 13 02:28:45 2003 +0000 log message improvement commit ce0c8e1dab2283b8d7278d057d633a6720273c98 Author: Judd Montgomery Date: Thu Nov 13 02:28:22 2003 +0000 possible left open file handle commit 532fc8adde998455abd69447319bc2962af0de99 Author: Judd Montgomery Date: Thu Nov 13 02:20:10 2003 +0000 1 liner calendar select GUI problem commit 144e92656eca21989fdc1f6d9d03c79f26523f1c Author: Judd Montgomery Date: Sat Oct 18 14:37:22 2003 +0000 small patch adding min macro commit 702a13c26ba6de705c0302358c45694924ac62c1 Author: Judd Montgomery Date: Sat Oct 18 14:34:17 2003 +0000 small patch for output not printing commit 28fb7f7574805a5f21c914c2432e1bea0983c7b0 Author: Judd Montgomery Date: Sat Oct 18 14:31:53 2003 +0000 Ludovics search/find code commit ab6543a2d71e4f655c40afe5d6ea9d0d099125f7 Author: Judd Montgomery Date: Sat Oct 18 02:31:19 2003 +0000 Can now hide memo preferences commit 5df4f073c4f5d2d6a2cb40a3382780c91e1ba472 Author: Judd Montgomery Date: Thu Oct 16 01:16:57 2003 +0000 highlighting changed recs was broken commit c90364c35828a05322a278e29bcd260d0279261a Author: Judd Montgomery Date: Fri Oct 10 02:08:14 2003 +0000 Backed out ugly hack to accept invalid datebook.dat files (dat files fixed) commit 9444d1ba45b16fef10d05adc53a8b288cd12f04e Author: Judd Montgomery Date: Fri Oct 3 00:34:35 2003 +0000 Buffer too large, app block couldn't be read commit 082d09b496fe53cb91295c1669db3c5bc5ce7dc9 Author: Judd Montgomery Date: Sun Sep 14 06:46:18 2003 +0000 Added DAT_TYPE_BITFLAG commit 22fa3eab781fda8d1064cbf2529f43430f37bc19 Author: Judd Montgomery Date: Sun Sep 14 06:44:46 2003 +0000 Ugly hack to accept certain invalid dba files commit 4dbf457b8084f9b59846688bd76e5411c25b484f Author: Judd Montgomery Date: Sun Sep 14 05:23:49 2003 +0000 Better error messages commit e5cc365156d974938c457e92ca196707ab625d43 Author: Judd Montgomery Date: Sun Sep 14 04:49:38 2003 +0000 Fail gracefully on import of corrupt dat file commit 95d64ff0ff301aeea16ae038513b22d327cccfdd Author: Judd Montgomery Date: Mon Sep 1 06:44:12 2003 +0000 Added new country currency codes including the Euro commit 1884a24edf8e2e9eba9020ab8571ed6e77c97fdc Author: Judd Montgomery Date: Mon Sep 1 04:12:56 2003 +0000 Ludovic Rousseau patch for more informative fail to open file on install message commit 79abb4413bb58ce9b3c3acbe42555aa6f0c9c268 Author: Judd Montgomery Date: Mon Sep 1 03:56:28 2003 +0000 Ludovic Rousseau patch to sort plugin names in the menu commit 8c0c7aa2f701f8de8ad33cf6a5d796f98dc9dc77 Author: Judd Montgomery Date: Sun Aug 31 20:50:19 2003 +0000 Ludovic Rousseau cleanup patch commit ac927a2783b2faec494a71531baa50ec2bb9067b Author: Judd Montgomery Date: Sun Aug 31 19:10:14 2003 +0000 Expense buffer overflows commit c9813dccd86300203bd033a9c4fbe1f39184a82f Author: Judd Montgomery Date: Sun Aug 31 18:39:29 2003 +0000 Expense buffer overflow on euros commit 8ac9784d19e95ad058f2c573f33023848f6fe349 Author: Judd Montgomery Date: Thu Jul 31 19:00:30 2003 +0000 empty and color files were not installed commit 250ad84859e43557a5233089e3f31682d7d285e9 Author: Judd Montgomery Date: Sun Jul 13 07:14:42 2003 +0000 regenerated commit 350784ac4c7afb4ab24579a689caedebfed3ddb9 Author: Judd Montgomery Date: Sun Jul 13 05:20:06 2003 +0000 Added README commit fa68f40b94f39ad6faf2b64747a866b7e80c3bf7 Author: Judd Montgomery Date: Sun Jul 13 05:19:45 2003 +0000 *** empty log message *** commit 6f79121b2c59af190a32278dc9262c3ad98a5285 Author: Judd Montgomery Date: Sun Jul 13 04:48:07 2003 +0000 missing files commit 59c41ac91ed13c197beeb4f9d7e4cfca7497c5fc Author: Judd Montgomery Date: Sat Jul 12 21:47:10 2003 +0000 removed translation that fails with gettext 0.11.5 on BSD commit 679b91cf862ab3e0807fce3aa321b70c8dabd4f1 Author: Judd Montgomery Date: Sat Jul 12 21:27:54 2003 +0000 *** empty log message *** commit b1c466a83e65d85938b3710916c170a7b734a347 Author: Judd Montgomery Date: Sat Jul 12 21:25:04 2003 +0000 Generated by automake/autoconf commit d154b49fd1278b206fc1e4b0907b22b5a86c6e8f Author: Judd Montgomery Date: Sat Jul 12 21:23:16 2003 +0000 updated commit 45c6fc2034bed1ec882a4e9c0c0c55a26c6c98e7 Author: Judd Montgomery Date: Sat Jul 12 21:21:23 2003 +0000 fixed jpilotrc.* and empty/* file not being included commit 50f8965fd803b9182ff6ebad47a81d2e4d7c3780 Author: Judd Montgomery Date: Sat Jul 12 21:19:45 2003 +0000 updated version commit 23abbbc0f9ae04811493c78192fb96af410719fe Author: Judd Montgomery Date: Sat Jul 12 21:19:14 2003 +0000 removed jpilot-col.spec commit a5efdee6456ef6dc0dc36710896c576bb1c0d595 Author: Judd Montgomery Date: Thu Jul 10 22:34:16 2003 +0000 misc changes and backwards API compatible fixes commit 9e9e6cf5c59379d85c8e4e49561a3660df6ada00 Author: Judd Montgomery Date: Sat Jul 5 23:16:23 2003 +0000 patch typo in date format from Ludovic Rousseau commit cdb4911fec0993a8a4b0e5ed8ef99924f14ff27f Author: Judd Montgomery Date: Sat Jul 5 23:15:14 2003 +0000 updated auto* commands to update files commit 83f80bc01f8197ffbfb9a7e1bf55871625623964 Author: Judd Montgomery Date: Sat Jul 5 23:12:18 2003 +0000 added man page jpilot-dial.1 commit 40b00d9006f3b6b98fac7deee401a2e27e131b00 Author: Judd Montgomery Date: Sat Jul 5 23:10:37 2003 +0000 patch to fix jpilot.desktop from Ludovic Rouseau commit b110b52417a356ef5f448564b0e2a0e68f48d608 Author: Judd Montgomery Date: Sat Jul 5 23:10:11 2003 +0000 patch to remove NUM_FACTORY_ITEMS Ludovic Rouseau commit 1dabd5195d815b7e8c688968c9401240378365d6 Author: Judd Montgomery Date: Sat Jul 5 23:09:27 2003 +0000 patch for jpilot-dial.1 man page from Ludovic Rouseau commit 7105ef800d95d94c63978a14db9076a1d5a01b4d Author: Judd Montgomery Date: Sat Jul 5 18:28:40 2003 +0000 experimental font code commit 2e98368e67839ea4dd63a7cffeb7f69bb3468055 Author: Judd Montgomery Date: Sat Jul 5 18:28:32 2003 +0000 updated commit 0cca0bbe4116b8c254c70e3052c96f6e5b23b4d3 Author: Judd Montgomery Date: Sat Jul 5 18:27:47 2003 +0000 pre 0.99.6 commit 868f3849def3d5e4b46b1d27c5c4fa41772681d7 Author: Judd Montgomery Date: Mon Jun 30 15:58:05 2003 +0000 Fix for broken installing of Net Prefs.prc, Graffitti Shortcuts.prc commit 0fa01754b6275aa4dc7f7ca53a84c2597ebbe880 Author: Judd Montgomery Date: Mon Jun 30 02:50:00 2003 +0000 obsolete distro? commit 9ea83142f516f60279dedc617b8a6715940bd5fe Author: Judd Montgomery Date: Mon Jun 30 02:01:06 2003 +0000 changed get_appointments() parameters to display number of appointments tooltip commit afde8e3180af3c8b628b9d9fa204559d8fcb312c Author: Judd Montgomery Date: Sat Jun 28 06:34:59 2003 +0000 Fixed clist first, last/company listing commit 8ed8fe548ee4377a1acf77c9bb3f4879eae80553 Author: Judd Montgomery Date: Sat Jun 28 06:33:41 2003 +0000 added set_bg_rbg_clist commit 7ba5cb24dab2bcafab55e195ff597a34f44fb19a Author: Judd Montgomery Date: Sat Jun 28 06:32:44 2003 +0000 shrunk some code commit d9457bf033f781ad1eae670a3f62f9b4f95a5f3a Author: Judd Montgomery Date: Tue Jun 24 20:55:28 2003 +0000 truncate appointment descriptions longer than 256 commit f4c55dc48b3fb25f279564a61e89e8a88446aeaa Author: Judd Montgomery Date: Tue Jun 24 16:10:11 2003 +0000 fixed alarms going off an hour late in DST timezones during DST commit 1d697c192bfbfc6c6eb6b2bc39b6cd870887fa01 Author: Judd Montgomery Date: Tue Jun 24 15:38:44 2003 +0000 export datebook as text (unknown type) fixed commit f2e366044ce23ea79162bae9463b183e19eefe6c Author: Judd Montgomery Date: Thu Jun 12 14:23:40 2003 +0000 datebook - goto today not working fix commit 135374722be214cb74a17e0dfeaa2120373dbc31 Author: Judd Montgomery Date: Thu Jun 12 05:46:40 2003 +0000 updated commit 8273b7d611cfe383aa6ddc3ef8152265e93c41a6 Author: Judd Montgomery Date: Tue Jun 10 04:56:58 2003 +0000 Made install remember its last path commit 4aea0fe807a270ba62223a9a58e69b0170c20bee Author: Judd Montgomery Date: Tue Jun 10 01:04:40 2003 +0000 updated commit b04e6740adbbe240fa016bd48dc46d98f203c2f4 Author: Judd Montgomery Date: Tue Jun 10 01:02:42 2003 +0000 empty translated string - error commit 5c0db30a11a20665a3d56751ebf7bd2479fc348b Author: Judd Montgomery Date: Tue Jun 10 01:00:02 2003 +0000 new file commit a0c39cc97bd3698c2cbd1cac1d9ee4bd0e97533b Author: Judd Montgomery Date: Thu Jun 5 04:30:59 2003 +0000 patch from Ludovic Rousseau for automake commit 915c7d9e058b1a7c4f9812d8bf6d096637fd2386 Author: Judd Montgomery Date: Tue Jun 3 04:53:11 2003 +0000 Added plugin_pre_sync_pre_connect calls commit 1ad8bd8c61e9ccc551435713c48f9a2a16d38ea0 Author: Judd Montgomery Date: Mon Jun 2 01:34:51 2003 +0000 updated commit 430a8bb809b4733cd04bd242a4ddc344ae77b2d8 Author: Judd Montgomery Date: Mon Jun 2 01:31:23 2003 +0000 removed categories and set renamed bits to 0 commit 562e814869e15881ecee595c920c3a1fc42a3bc4 Author: Judd Montgomery Date: Mon Jun 2 01:27:58 2003 +0000 preserve .pc3 file times (fixes slow sync not fetching commit 0436b36750f9ab007ee467db2472d29fedaef423 Author: Judd Montgomery Date: Mon Jun 2 01:27:12 2003 +0000 Latin1 -> Latin1/No conversion commit c1813c0873e4f75d92e8603bdd8ca82c9c94ded1 Author: Judd Montgomery Date: Mon Jun 2 01:26:13 2003 +0000 added a i18n tag commit b694ad98206c926d339f7982c417299da71d4acf Author: Judd Montgomery Date: Mon Jun 2 01:25:43 2003 +0000 preserve .pc3 file times commit fe802bfe66fb5e00b3efef2a90ead0a0fb9442bb Author: Judd Montgomery Date: Mon Jun 2 01:24:04 2003 +0000 remove all CVS directories on make dist commit 62e4f6c47d271d7746c8e18152a8feab5d358064 Author: Judd Montgomery Date: Sat May 31 19:53:36 2003 +0000 added todo Record Completion Date commit aad3cc22c7dc4a9ccbbeb906a232e948c78ce0af Author: Judd Montgomery Date: Sat May 31 18:39:38 2003 +0000 option to hide todos that are not yet due commit 1594d06011b131e52f683b4a41feaac0106fa1e3 Author: Judd Montgomery Date: Sat May 31 05:51:46 2003 +0000 bug 637 fix couldn't select start/end times in GTK2 commit 6be29480e2830d5f3b9251109082b79c9fc4b3c4 Author: Judd Montgomery Date: Sat May 31 03:11:17 2003 +0000 added datebook/todo pane prefs commit 1eb25519afb6a97d01563a1452929a1b97b5d26d Author: Judd Montgomery Date: Sat May 31 03:10:58 2003 +0000 added a pane for todos commit 404214c842d51452b859a78044a380e382ac2c18 Author: Judd Montgomery Date: Thu May 29 20:50:59 2003 +0000 Fixed bug 610, record dups when pressing page-up/down keys, and removed home key commit c1a9035d207cb8b760a790febbe4f4ac970afc11 Author: Judd Montgomery Date: Wed May 21 18:32:54 2003 +0000 AM/PM being cut off commit cb8768ed3b1010cbfd5ab0096093ca246e1891f6 Author: Judd Montgomery Date: Wed May 21 18:32:39 2003 +0000 auto-generated commit 9dbbdab2e60e2ae9d43d2c0da1ae56b02f4b1b6e Author: Judd Montgomery Date: Wed May 21 18:31:37 2003 +0000 newer gettext commit 2c847d5943715330efa0ff5dc15d2ea72352e2b7 Author: Judd Montgomery Date: Wed May 21 18:29:23 2003 +0000 Updated commit 7cc396e41e3ccda364ec26964970fc0d91041cd3 Author: Judd Montgomery Date: Wed May 21 18:29:11 2003 +0000 minor log fixes commit 9748795bf4d719138ee585063a88a6b5780502dc Author: Judd Montgomery Date: Wed May 21 18:27:37 2003 +0000 fixes for fontsel dialog commit ada86fbf84c6c8e88002aaf80e81895399b28e38 Author: Judd Montgomery Date: Wed May 21 18:26:56 2003 +0000 fixes commit 03f2a311ed822c7fa4bf732226825ab0014cf8d1 Author: Judd Montgomery Date: Wed May 21 18:26:21 2003 +0000 empty files not installed commit d6915eb5ba703b9f978bd3759b56f5a07545c2c8 Author: Judd Montgomery Date: Wed May 21 18:25:45 2003 +0000 Put todos in datebook commit e4061216f5b3c69fdc04df2cdf800b21a1cd9493 Author: Judd Montgomery Date: Thu May 8 06:13:42 2003 +0000 typo commit c5670b47218eab833d141242436a615ff6fa866d Author: Judd Montgomery Date: Thu May 8 01:28:23 2003 +0000 Fix DST on import commit 472efea2d3459e541f34b316337cbc406a31fdf7 Author: Judd Montgomery Date: Fri May 2 05:10:28 2003 +0000 New file, from gettext-0.11.5 commit 37d8f9e5f5c12f24afcabac8a4e917a4ba586506 Author: Judd Montgomery Date: Fri May 2 05:05:17 2003 +0000 updated commit caca2310eec7b7428a28c2273d5f8a0f85f51b9b Author: Judd Montgomery Date: Fri May 2 04:47:27 2003 +0000 update commit 6447dcb109d70a94dc775d2fd0574df065507ada Author: Judd Montgomery Date: Fri May 2 04:42:31 2003 +0000 CFLAGS->AM_CFLAGS commit 675ad93f6e63c56b39dc091c2bd9d54ce5cca33b Author: Judd Montgomery Date: Fri May 2 04:36:14 2003 +0000 required for automake/autoreconf commit f475b0f1990d3a19b8224ffa4176bdf1f455697d Author: Judd Montgomery Date: Fri May 2 03:29:54 2003 +0000 required for automake/autoreconf commit ec16f094119d5281d51b75c20a8c27047d150c10 Author: Judd Montgomery Date: Mon Apr 28 15:39:18 2003 +0000 initial import commit a65aaec21794ba516d476c3aaaecd26098f2d627 Author: Judd Montgomery Date: Tue Apr 22 22:26:43 2003 +0000 Updated for automake 1.7.3 commit eb6b9972d81440a1e03690f532795d87565d4fa4 Author: Judd Montgomery Date: Tue Apr 22 22:25:16 2003 +0000 missing line commit 95a8995655a754127519b12e3421a8526beae751 Author: Judd Montgomery Date: Tue Apr 22 22:24:43 2003 +0000 fix dst alarm problem - needs tested commit 755935385053c1367d529aa7e307151df1c5a786 Author: Judd Montgomery Date: Tue Apr 22 22:24:24 2003 +0000 don't call signal if no fork commit 25ebf5caf4878309880f6d1b0d282bc18596662e Author: Judd Montgomery Date: Tue Apr 22 22:16:56 2003 +0000 added missing files to install commit bc150617ed0832ec3fce920e52b7f2d1daf58ab7 Author: Judd Montgomery Date: Tue Apr 22 04:38:37 2003 +0000 updated commit 66e94fd77c7b2b3f4d69d9ffda8e3862a484d206 Author: Judd Montgomery Date: Tue Apr 22 04:37:56 2003 +0000 upgraded to gettext 0.11.5 commit 4135c050e3af6b470e6bcaa62b33ac9eedb3bad3 Author: Judd Montgomery Date: Tue Apr 22 04:31:44 2003 +0000 upgraded to libtool 1.4.3 commit aa532a045bf6283d2ba25858a88c3c5bc8ac38c3 Author: Judd Montgomery Date: Tue Apr 22 04:30:44 2003 +0000 Fixed crash on export without choosing a type commit 71d59035203023aa6adfa4618308bb2cdb6087bf Author: Judd Montgomery Date: Tue Apr 22 04:30:10 2003 +0000 upgraded to automake-1.7 commit 578a2de091d9b3f8505c29086c7bc59b54012cc0 Author: Judd Montgomery Date: Tue Apr 22 04:28:48 2003 +0000 made buttons grayscale commit e0af4570180c392c57a565f362c70082bf6c176f Author: Judd Montgomery Date: Tue Apr 22 04:28:02 2003 +0000 upgraded to aclocal 1.7.3 commit 20a3acd5654330f8c7e90b406efdf5ddad2aebc8 Author: Judd Montgomery Date: Wed Apr 2 01:39:29 2003 +0000 New Translation commit 1591cdd8f72cde8c3dc14e0a72e97a2a98920ff7 Author: Judd Montgomery Date: Tue Mar 25 05:24:53 2003 +0000 take out printing of generated password commit 3b7b20b8d9d2ad5251e03839f52dc148c6ff4383 Author: Judd Montgomery Date: Tue Mar 25 05:09:01 2003 +0000 null pointer fix commit 57e95c4f2689a5f9a05f9c38a69a255f65974d1f Author: Judd Montgomery Date: Sun Mar 23 21:33:53 2003 +0000 updated commit 172c77c34b9b74d13d0003c4e7687a88fd4cc5ef Author: Judd Montgomery Date: Fri Mar 14 07:00:23 2003 +0000 minor fix commit dc085638a37a24d16462c6e7a12405ad7422a214 Author: Judd Montgomery Date: Thu Mar 13 22:56:36 2003 +0000 fixed null pointer commit d9d93bf9bfabe1f7816444a6a82b91e92dca4d62 Author: Judd Montgomery Date: Wed Feb 26 18:45:51 2003 +0000 ldif export crash, fix commit bcd65d615213f6f18622f8084a140ce735a3026e Author: Judd Montgomery Date: Sun Feb 23 00:53:34 2003 +0000 added category.c commit a136a5ed492555f9e011f5988f54fcbc6d85d3e3 Author: Judd Montgomery Date: Sun Feb 23 00:49:24 2003 +0000 charset reverse translation commit 2ab1131d394897827d14b6a3895cab971eae0f2c Author: Judd Montgomery Date: Sat Feb 22 20:50:10 2003 +0000 print memo now ignores lines after the end of the memo text commit 4b88dffe900b06019bf22f7d98097ad9e4192c89 Author: Judd Montgomery Date: Sat Feb 22 15:25:12 2003 +0000 updated commit ff296ddb468c1c061c76d765afc211e739f3f8f2 Author: Judd Montgomery Date: Sat Feb 22 15:14:37 2003 +0000 rebuilt commit 6b46d46c59ae5dd9d7749712475da51d60f55e85 Author: Judd Montgomery Date: Sat Feb 22 15:14:03 2003 +0000 typo commit 192863d48229172e3b505f6204e05332dcbe65b9 Author: Judd Montgomery Date: Sat Feb 22 15:13:47 2003 +0000 updated version commit dae31db42e16b0f81c06ee36a638d27fe8a6c63a Author: Judd Montgomery Date: Sat Feb 22 00:31:02 2003 +0000 *** empty log message *** commit 9ac73dd3f639ba8e1e7a640ec51904f5b5c35bf3 Author: Judd Montgomery Date: Fri Feb 21 00:13:51 2003 +0000 updated commit aeccef1cc681f9cf3140b8859edaf01f3479c18e Author: Judd Montgomery Date: Fri Feb 21 00:13:01 2003 +0000 can select tags in GTK2 in dialogs commit 2ed2109487e9eab37cef20417c14da3376f58d02 Author: Judd Montgomery Date: Thu Feb 20 23:13:32 2003 +0000 opening of browser windows commit fea7e60109b1d6aa968961ce52aea9fc4140ab9b Author: Judd Montgomery Date: Thu Feb 20 23:13:07 2003 +0000 -export-dynamic commit 802e128127b9479e570476cd855a8661b73750f2 Author: Judd Montgomery Date: Sun Feb 16 09:11:49 2003 +0000 home key documented in datebook commit 7998bee7fa13196366b779269ef835481182ee5e Author: Judd Montgomery Date: Sun Feb 16 09:11:23 2003 +0000 fixed restore always using backup files commit 496bc6aef90b9f73514da122c041bb61ccd57ddd Author: Judd Montgomery Date: Sun Feb 16 09:09:57 2003 +0000 fixed minor bug commit aca1a284b024c58e6d9461f438f75062ce4b818c Author: Judd Montgomery Date: Sat Feb 15 20:31:11 2003 +0000 home key goes to today commit 9d420c52fb9d161ac9c7ee8fb934ea032f3fe7e7 Author: Judd Montgomery Date: Sat Feb 15 04:58:21 2003 +0000 *** empty log message *** commit b66aaaa855687c2eb3fedea7a50945fdbdbae218 Author: Judd Montgomery Date: Sat Feb 15 03:30:37 2003 +0000 received patch for ldif missing fields commit e0f6b3ace850db108fb2b03fc5565cfd696d9b13 Author: Judd Montgomery Date: Thu Feb 13 22:58:56 2003 +0000 more debug commit c35e3d56b1f4ae3f0afc4c4bd7b7f134de10b435 Author: Judd Montgomery Date: Thu Feb 13 22:57:45 2003 +0000 updated commit 07eeced168107cbdb6d1a825419a7266befc4812 Author: Judd Montgomery Date: Thu Feb 13 22:57:23 2003 +0000 Add LDFLAGS commit 318d58eeb321d35d2ceec213abbf2cd8987ed087 Author: Judd Montgomery Date: Thu Feb 13 22:57:03 2003 +0000 Typo commit d9ba4193f5e24cf1ddc762a1a6a84bd217b4753f Author: Judd Montgomery Date: Thu Feb 13 22:56:46 2003 +0000 maybe a fix commit f9c28d38f3dd10e435d49ea851863372ae37920c Author: Judd Montgomery Date: Thu Feb 13 22:46:58 2003 +0000 more debug commit df99694f45dd1ae8e69a7a3ad49feb65a31e9bf1 Author: Judd Montgomery Date: Tue Feb 11 07:40:00 2003 +0000 updated commit ab828040c7dfe36b1aa3e3dfe868a48a3cdb0574 Author: Judd Montgomery Date: Tue Feb 11 07:33:25 2003 +0000 Add --enable-maintainer-mode commit 0af5c0038a08cd5bd92e524410131b140dfc3998 Author: Judd Montgomery Date: Tue Feb 11 07:31:18 2003 +0000 updated commit 8018c2539026b067ea5b80984ee8f8db243f6f9a Author: Judd Montgomery Date: Tue Feb 11 07:30:46 2003 +0000 cycle categories when app button pressed commit 1d6017959d3f111ccf6af970664855f5894f76a4 Author: Judd Montgomery Date: Tue Feb 11 07:30:00 2003 +0000 changed commit 87706c510b98c59142b3dd3cb4402c8b4964c6c6 Author: Judd Montgomery Date: Tue Feb 11 04:25:16 2003 +0000 Fixed future repeat appts from alarming early commit 32c8bc60f50c706ebffdbfe978e61bcd72f32d37 Author: Judd Montgomery Date: Mon Feb 10 22:48:34 2003 +0000 added some appt validation commit 6d6e87707aed5367501e980a0e7a924a012ad297 Author: Judd Montgomery Date: Mon Feb 10 08:38:18 2003 +0000 changed comments commit afbb363ea9caa5c43b927ec7dfd355dac3a97d49 Author: Judd Montgomery Date: Mon Feb 10 08:01:13 2003 +0000 Fixed mysterious deleting appts commit e94ac11ec7062abcf7d9b58a284c3f2fd4a2eb51 Author: Judd Montgomery Date: Mon Feb 10 08:00:18 2003 +0000 next_id calc'ed wrong for REPLACEMENT_REC commit cb8d4ae9d3d9a287d087389727ca03df53b134e8 Author: Judd Montgomery Date: Mon Feb 10 07:14:36 2003 +0000 gtk_widget_get_toplevel commit 68fefe146d272195c8a5741cc674cba7d05ef4c5 Author: Judd Montgomery Date: Wed Feb 5 22:59:12 2003 +0000 add dialog errors commit 97bb9908a5692b5838842ac5500ebacaa0eddaae Author: Judd Montgomery Date: Wed Feb 5 21:55:52 2003 +0000 Delete repeating appt then cancel was broken - Ludovic commit f0dd9dda30c3766d6a40c756f01580cb730edcfa Author: Judd Montgomery Date: Tue Feb 4 18:43:36 2003 +0000 Add CP1250-UTF8 conversion commit 1c3dc8ff7b3a72841c3287a8653468be3288f028 Author: Judd Montgomery Date: Fri Jan 31 00:34:51 2003 +0000 minor --disable-private fix commit 818406d95c1dfa910d4c4162ab40c6b0b2d4062f Author: Judd Montgomery Date: Fri Jan 24 17:55:44 2003 +0000 Fixed pi-version.h not found problem commit 4d61d2c287cf4c02b9f4d521475931994f36968c Author: Judd Montgomery Date: Tue Jan 14 17:52:44 2003 +0000 added jpilot.desktop commit d1b7e855ce3aba03dd6396c43d9ed43e6d5229a0 Author: Judd Montgomery Date: Tue Jan 14 17:52:35 2003 +0000 initial import commit a9de6b2967bbe8a38906900bc0dec9b3480f9aec Author: Judd Montgomery Date: Tue Jan 14 00:33:02 2003 +0000 removed commit c9790b6c798fb604e536bf82db06041b34956dc4 Author: Judd Montgomery Date: Tue Jan 14 00:32:01 2003 +0000 *** empty log message *** commit 96e6544030a51f028ca617755f438cac24156b83 Author: Judd Montgomery Date: Tue Jan 14 00:25:36 2003 +0000 removed commit a38a4f94e7723f39b7061a8040198c3e559a2cc4 Author: Judd Montgomery Date: Mon Jan 13 23:48:47 2003 +0000 *** empty log message *** commit 508a6acee95a083c03e814def405b1e624c6e259 Author: Judd Montgomery Date: Mon Jan 13 19:21:05 2003 +0000 *** empty log message *** commit cc42a8843533ab601e332403d4cd43fbc687a91c Author: Judd Montgomery Date: Mon Jan 13 07:03:29 2003 +0000 updated commit 1b6005bb82555a1b98240d5fa52e7b33ca139fee Author: Judd Montgomery Date: Mon Jan 13 07:00:21 2003 +0000 Made fit into 640x480 commit 174d6f88c72ca27d8aeee6ff73e7528ffaf7ca5c Author: Judd Montgomery Date: Sat Jan 11 02:36:30 2003 +0000 put lock in a button commit 6c49ce9fb5f46bbca333bd66c119e05cb520dcc4 Author: Judd Montgomery Date: Sat Jan 11 02:11:54 2003 +0000 date commit ee472f2ac7e32d2e23788d05f678ba86d7d33edc Author: Judd Montgomery Date: Sat Jan 11 02:04:01 2003 +0000 changed button xpms commit 62d6385a11d3b478f0e36258383f4c92b69bed61 Author: Judd Montgomery Date: Sat Jan 11 02:03:51 2003 +0000 removed a global commit b14f9321bd6846ad6ca2fdbdb04506c952080eb7 Author: Judd Montgomery Date: Sat Jan 11 02:02:06 2003 +0000 removed ncc xpms commit 7ead3cdb68c95360cbdc549d61c6b68b36435fc2 Author: Judd Montgomery Date: Sat Jan 11 01:50:06 2003 +0000 removed commit df90307b456578b67e58ed87c796b7a9cd23e599 Author: Judd Montgomery Date: Fri Jan 10 04:01:15 2003 +0000 fixed usb config check commit 5794e57e4ed7d387ad2a9839203a95be50977698 Author: Judd Montgomery Date: Fri Jan 10 03:30:04 2003 +0000 removed jpilot-99-upgrade commit 21110e9742e4784d3d372645978ea24788104e2f Author: Judd Montgomery Date: Fri Jan 10 03:14:25 2003 +0000 update commit 37fdd16d55e15da88ef5262ea145240dba960a2f Author: Judd Montgomery Date: Fri Jan 10 03:13:56 2003 +0000 changed initial window size commit 110dcc877d5038a5acaa98b8ddaddbe2385af8b3 Author: Judd Montgomery Date: Wed Jan 8 06:54:51 2003 +0000 regnerated commit c521ee7753ef55dd9836d9da949cec654d02212b Author: Judd Montgomery Date: Wed Jan 8 06:52:14 2003 +0000 fixed conditional building of plugins commit c08b20cbfdd8b3dca360c840c9435466130d0f33 Author: Judd Montgomery Date: Wed Jan 8 06:49:06 2003 +0000 spelling error commit 259d85dee7c8a52f604080dad6531a98b4370b69 Author: Judd Montgomery Date: Wed Jan 8 06:47:32 2003 +0000 order of sundirs commit 86c88e2547642af59b38097af6de6b7b1d09d444 Author: Judd Montgomery Date: Wed Jan 8 06:46:52 2003 +0000 change commit f527742b7809681c2c6a522d8bc504c76ec0298b Author: Judd Montgomery Date: Sun Dec 29 23:59:49 2002 +0000 updated commit 331bdd924386e8aada777de5012d2747ea81360b Author: Judd Montgomery Date: Fri Dec 27 23:23:41 2002 +0000 *** empty log message *** commit 515bcc7ac75358352b41f61a2fd24342a9c54c5f Author: Judd Montgomery Date: Fri Dec 27 23:20:42 2002 +0000 updated commit 5f62d57c528dd7d5ddf9ca662a8058e4c4d2fb98 Author: Judd Montgomery Date: Fri Dec 27 23:20:41 2002 +0000 updated commit 311c18a3a6a185934e938971cc23657a7685130a Author: Judd Montgomery Date: Wed Dec 25 08:04:36 2002 +0000 updated commit a51628faf1a267f7a39c2ff84ef8c14f19a369ed Author: Judd Montgomery Date: Wed Dec 25 07:14:14 2002 +0000 Initial import commit d2ed9e26548313da24958c8d50264cbe0d1fb210 Author: Judd Montgomery Date: Wed Dec 25 06:47:55 2002 +0000 *** empty log message *** commit 9f9a69f378ff00bda7241c0965e3f752da1aa8ba Author: Judd Montgomery Date: Wed Dec 25 06:47:28 2002 +0000 Port to GTK2 commit 15036b9f2a511c4eb571af92ff2dfa81c41406e9 Author: Judd Montgomery Date: Wed Dec 25 06:46:42 2002 +0000 Changes commit 53b4a4919e1cd5037e718e7d067179348d776a26 Author: Judd Montgomery Date: Wed Dec 25 06:12:22 2002 +0000 Added ENABLE_USB commit 1a82a15e513205fe9f8dc474d0c18b31336b7142 Author: Judd Montgomery Date: Wed Dec 25 06:08:33 2002 +0000 Added ldif export to addresses commit c79f98e3fafb21aa236d681b234165dc5c507b88 Author: Judd Montgomery Date: Sat Dec 21 06:15:25 2002 +0000 Detection of p-l version without try_run commit 928bdefe8f76161c7d48d0912e50afae432ead01 Author: Judd Montgomery Date: Fri Dec 20 20:06:52 2002 +0000 version commit 5ef57c6d5f395092114b765da6854c6efd480ecc Author: Judd Montgomery Date: Fri Dec 20 20:04:57 2002 +0000 updated commit 479969c39eaf760b63a6cda5272fda526280a2b5 Author: Judd Montgomery Date: Fri Dec 20 20:02:09 2002 +0000 cleanup commit 82673286cc34b23b9c9e5e085ef504c716aad926 Author: Judd Montgomery Date: Fri Dec 20 20:01:29 2002 +0000 minor changes commit 23c848ca81d5eb6f99c9af9577f7a8643e70c8ad Author: Judd Montgomery Date: Fri Dec 20 19:59:05 2002 +0000 Changes commit c41fcc411a56af23c1909a586f4a74f0d6f7e653 Author: Judd Montgomery Date: Fri Dec 20 18:16:31 2002 +0000 update commit eb3ecebb83c08df78dce2ffd765582bc241cf1a0 Author: Judd Montgomery Date: Fri Dec 20 18:14:23 2002 +0000 category cleanup commit 62409224b918c0cd4a747044f8eabb425e910280 Author: Judd Montgomery Date: Fri Dec 20 18:11:58 2002 +0000 *** empty log message *** commit 5be928be8b9f0224a62747bf36963f22ce1be740 Author: Judd Montgomery Date: Sat Dec 14 23:51:45 2002 +0000 Fixed debug on crash problem commit df6376fc8a664c4818b0ac55ec6f4b664a62d563 Author: Judd Montgomery Date: Sat Dec 14 23:40:52 2002 +0000 Fixed debug on crash problem commit 4f3ddc7bd47fab727550bd33786947adf1958282 Author: Judd Montgomery Date: Sat Dec 14 20:37:30 2002 +0000 build options reporting commit e13345e0c162b0ef148759141f5dba011b165571 Author: Judd Montgomery Date: Sat Dec 14 20:36:11 2002 +0000 minor passwd gen change commit 64bef77f93bead2b782f794049c52b0f62b37d5f Author: Judd Montgomery Date: Sat Dec 14 20:35:09 2002 +0000 more code for sync of cats commit 083a47eaf7f1994631859fbc0557c7b327e7a8a1 Author: Judd Montgomery Date: Sat Dec 14 20:33:50 2002 +0000 update commit 6ba1d7fe8cea74ed175181fb024edb862360eb2b Author: Judd Montgomery Date: Thu Dec 12 18:56:52 2002 +0000 More fixing of pipe logging code commit cafc0906dafdeebe8e9164bfc0c99db71271d7bf Author: Judd Montgomery Date: Wed Dec 11 22:15:35 2002 +0000 Report build option in help window commit 6fc6c46ae4a170a005a8ea32c454e6bf808a2331 Author: Judd Montgomery Date: Wed Dec 11 22:14:43 2002 +0000 now pass configure options to configure commit c99ce719dc446886ec4714c62e1b58a82848afd6 Author: Judd Montgomery Date: Wed Dec 11 22:07:01 2002 +0000 Added vCard, iCalendar export commit a17f3961868b814e510abf6ec3abf85d188e37a6 Author: Judd Montgomery Date: Wed Dec 11 21:57:18 2002 +0000 changes for pendantic biuld commit 42af011799099521efbef956e25de3e5e58dfc94 Author: Judd Montgomery Date: Wed Dec 11 21:53:53 2002 +0000 *** empty log message *** commit dd9e455804d39222902b0f73873af8e7c3a0f8bd Author: Judd Montgomery Date: Wed Dec 11 21:49:08 2002 +0000 Initial password generate code and pendantic changes commit 2b4a4426d94a009a2a7163f893412f40cef0f937 Author: Judd Montgomery Date: Tue Dec 3 19:17:07 2002 +0000 Typo commit 69eecf19ef90dc90d190a325d8f9f10052ebaafa Author: Judd Montgomery Date: Tue Dec 3 19:11:57 2002 +0000 Fixed cflags reporting commit 8349d9bbe14874fa87851257a6342615b7b2b8f8 Author: Judd Montgomery Date: Tue Dec 3 18:32:54 2002 +0000 Not needed with automake commit 823d9316c17e4e11ad2940c16777ea8a6352ae4b Author: Judd Montgomery Date: Tue Dec 3 06:13:38 2002 +0000 *** empty log message *** commit b0c21eb739f6512ca2c7efc65ead3dc491c4c064 Author: Judd Montgomery Date: Tue Dec 3 06:12:43 2002 +0000 dialer changes commit 665c9144c5bc2518491b8c114eeeb619fd6218bf Author: Judd Montgomery Date: Sun Dec 1 19:27:42 2002 +0000 Initial import commit eb8ac27edad91df0f1948a925f03c9451352cc9a Author: Judd Montgomery Date: Sun Dec 1 19:26:50 2002 +0000 russian patches commit ab858240dd5d0fcdbc4f3da56be7191c4f8fd44f Author: Judd Montgomery Date: Sun Dec 1 18:55:02 2002 +0000 *** empty log message *** commit 2fd8222dfc98a5cbcd7cbf54c11cb3a2860b9bd8 Author: Judd Montgomery Date: Sat Nov 30 22:01:18 2002 +0000 Added prefix to LOG because of name conflict commit cc6dca4fd63721479f8957d3bec951afc7042669 Author: Judd Montgomery Date: Sat Nov 30 21:24:36 2002 +0000 Now automake generated commit 7155904baa85c878bc37898c98507dad687ae602 Author: Judd Montgomery Date: Sat Nov 30 21:23:22 2002 +0000 Generic Makefile commit 3fd06a4e2a9a6f0327ef52393ae4b404fb0802fe Author: Judd Montgomery Date: Sat Nov 30 21:22:11 2002 +0000 Changes for dialer commit b2e781658b93ba4ee1afeaf6e7264be2d041f4c9 Author: Judd Montgomery Date: Sat Nov 30 21:19:07 2002 +0000 Updated commit fbc47ab1c848c18ded9ccaedc4f597671cc350a4 Author: Judd Montgomery Date: Sat Nov 30 21:16:28 2002 +0000 Added prefix to LOG because of name conflict commit 25e5193267bac89270c496cc4ecc2d5da7460abf Author: Judd Montgomery Date: Sat Nov 30 20:46:46 2002 +0000 log fixes commit 4bbcfdc4d9d34d095d649ba0575d07e36b4a6a2e Author: Judd Montgomery Date: Fri Nov 15 05:32:37 2002 +0000 minor log change commit dfb34c813a0b17dd924f9052b91e14a1cfc812e5 Author: Judd Montgomery Date: Fri Nov 15 05:32:22 2002 +0000 Fixing pipe logging commit 456991aeec11b2440f814b47a134e1a27c22483b Author: Judd Montgomery Date: Thu Nov 14 03:29:44 2002 +0000 Initial import commit 61ce2180b45b8e49c98af193db10d4e33bd13c03 Author: Judd Montgomery Date: Thu Nov 14 03:10:05 2002 +0000 comment commit 9348ed15d005c894a461a4e33ba1d665e96113e6 Author: Judd Montgomery Date: Thu Nov 14 03:04:05 2002 +0000 Updated commit 8dd6dabdbcb4bdd0caba9f18147653b6a3a65230 Author: Judd Montgomery Date: Thu Nov 14 03:03:42 2002 +0000 *** empty log message *** commit 3d755043c12078bf8a77fdd0ed5f3734d0eed5b8 Author: Judd Montgomery Date: Thu Nov 14 03:02:17 2002 +0000 removed move_scrolled_window added some file mod routines commit 0e7837714ccbab88463b68632d444685ee28acc1 Author: Judd Montgomery Date: Thu Nov 14 02:55:59 2002 +0000 Changes to sync categories commit 575bebb51a2ad08d290e553f06daf3005cd5ef92 Author: Judd Montgomery Date: Thu Nov 14 02:55:31 2002 +0000 Added patch for i18n commit ac5a4d849445dad24d51619f8b1e5038b39a05d1 Author: Judd Montgomery Date: Thu Nov 14 02:54:44 2002 +0000 Added more functions commit 3784f4f3a771b54496af95c699449cf4d580ef28 Author: Judd Montgomery Date: Thu Nov 14 02:53:47 2002 +0000 changed to clist_moveto commit 9741894ec6cc2d2ee4799bcc366ce726614cab97 Author: Judd Montgomery Date: Thu Nov 14 02:53:16 2002 +0000 fixed midnight appt being above float in sort order commit bfa6c048a51136fa682905e28f4e1fa4c55484b1 Author: Judd Montgomery Date: Thu Nov 14 02:52:48 2002 +0000 added PROGNAME commit 0ae3478367d6e2d94d4245b3f8df7cc85f57d691 Author: Judd Montgomery Date: Thu Nov 14 02:52:10 2002 +0000 prefix change and cut --with-db3 commit 1acd1fef0b7219f31a2b5777cce889b440806c9c Author: Judd Montgomery Date: Thu Nov 14 02:51:32 2002 +0000 added category.c commit b92e79a05d9788e3a0b07dfbe5312d3ba2972cf1 Author: Judd Montgomery Date: Thu Nov 14 02:48:21 2002 +0000 updated copyright commit a8d971de3e279d6b0da0390b10d789732355e0d0 Author: Judd Montgomery Date: Thu Nov 14 02:34:36 2002 +0000 Added comments commit 3525d7534bbc0c4e5474e836e5575cf3628395c3 Author: Judd Montgomery Date: Thu Nov 14 02:33:48 2002 +0000 Changes to sync categories commit f1d93d33bcda4e99210e108de38f7b53a227ba8e Author: Judd Montgomery Date: Thu Nov 14 02:33:10 2002 +0000 updated copyright commit 520833e796b3fc2dbc09f31bdd1b9def3570e20e Author: Judd Montgomery Date: Thu Nov 14 02:32:30 2002 +0000 removed jpilot-upgrade-99 commit 8f333f7d123e01bbbc9fce54c371be4cca61e6ec Author: Judd Montgomery Date: Thu Nov 14 02:31:59 2002 +0000 added category.c commit b6b05e26b2dfa0b92e3c9c55c5c0149dfeafdf1e Author: Judd Montgomery Date: Thu Nov 14 02:31:26 2002 +0000 Too old to be useful commit 214e765dede90e226dd37a03957e8f63b1c11116 Author: Judd Montgomery Date: Thu Nov 14 02:27:03 2002 +0000 Changes to sync categories commit 753e7c55c579884884f5a47e3b1089e37f22ea91 Author: Judd Montgomery Date: Thu Nov 14 02:25:30 2002 +0000 Initial write commit dc0f384af3fd925a18d874bacee6748c7a0252b7 Author: Judd Montgomery Date: Sat Nov 9 23:50:38 2002 +0000 minor change commit 633787f423d17e897fff279a5bde17af5aa0c6f6 Author: Judd Montgomery Date: Tue Nov 5 00:28:42 2002 +0000 updated commit effafd70887e5877878591ebfef81d14467f0ba1 Author: Judd Montgomery Date: Wed Oct 30 20:36:23 2002 +0000 jpilot_logf -> jp_logf commit 92de44e98b1f6855a9c356eaa068f2d59e73240f Author: Judd Montgomery Date: Wed Oct 30 20:31:27 2002 +0000 updated commit 85bddf85696a7f207867f1ad8c428bf5755ae674 Author: Judd Montgomery Date: Fri Oct 25 01:28:14 2002 +0000 bug in phone ext parsing commit 160e81c2e7c74320cd44c3a997d6f4902c4e408e Author: Judd Montgomery Date: Fri Oct 25 01:08:35 2002 +0000 initial release commit c4c6fa678cfdfe6441bc3922e50b3033c7c5cff8 Author: Judd Montgomery Date: Fri Oct 25 01:05:40 2002 +0000 no even alarms not alarming commit 4d88a94e92f32c3aaa97fd187b281123c6050199 Author: Judd Montgomery Date: Fri Oct 25 01:05:08 2002 +0000 typo labels in wrong box commit 7a9d7a55adc25cce90c0b95b9982c94a1ee3d3da Author: Judd Montgomery Date: Fri Oct 25 01:04:35 2002 +0000 Added dialer.c commit fff484c3c1a098b9a336d6e5d24b3a80871e93eb Author: Judd Montgomery Date: Sat Oct 19 17:07:35 2002 +0000 Update commit cc9d821ee117974130519a7a2c145d94e9640cfa Author: Judd Montgomery Date: Tue Oct 15 19:06:28 2002 +0000 Japanese fixes commit 9e3c7d846bcaa4cc7fdd94adaf21c472ed649ef3 Author: Judd Montgomery Date: Tue Oct 15 05:25:44 2002 +0000 Typo commit e1057835f50d44601e56f3a5915c128ae38e3974 Author: Judd Montgomery Date: Tue Oct 15 05:24:30 2002 +0000 Currency support commit 1bc276c97da0741c771f5017b80cd1a4401d7791 Author: Judd Montgomery Date: Tue Oct 15 05:23:55 2002 +0000 Japanese patches commit 908c00f4c653a34cfad2a5322a0d9452532a6465 Author: Judd Montgomery Date: Mon Oct 14 04:18:06 2002 +0000 Removed stupid tilde ns commit d2c9c9ff0100166d1831edb9f60b0acefdf2f85a Author: Judd Montgomery Date: Sun Oct 13 18:47:54 2002 +0000 Updated commit 7777056f9e0f2739a08c07bf603a9dac8f26329c Author: Judd Montgomery Date: Fri Oct 11 15:39:11 2002 +0000 Fixed the ignoring of exceptions for alarms commit c8f0b73ce97d366771fab3e7d1cf950197b55335 Author: Judd Montgomery Date: Wed Oct 9 04:38:39 2002 +0000 updated commit 4008df6a16b57f685bf05664ec9c9ba2b34b33c1 Author: Judd Montgomery Date: Wed Oct 9 04:20:56 2002 +0000 Changed doc directory commit f80d4fb010c52cfb6dd99d5c97570a080038e9f7 Author: Judd Montgomery Date: Wed Oct 9 02:34:20 2002 +0000 Updated commit 9fa1174a5d6cae5b8fd74e6566da1b5de6934e75 Author: Judd Montgomery Date: Wed Oct 9 02:19:24 2002 +0000 Updated commit 22fc696fc8a3cc11f8b5604e5a9abf4e9bd8c05f Author: Judd Montgomery Date: Wed Oct 9 02:12:12 2002 +0000 Updated commit 0579e924b836323c98806163158212363871dcca Author: Judd Montgomery Date: Wed Oct 9 02:07:30 2002 +0000 fixes for automake commit 4dc3295af3d4f194868477fb0e1f84b6e5b48473 Author: Judd Montgomery Date: Wed Oct 9 01:55:23 2002 +0000 Updated commit 18919c6cfe1c9c1994b3191f7e887d7c3e7d3009 Author: Judd Montgomery Date: Wed Oct 9 01:55:05 2002 +0000 fixes for automake commit bc7dc4ee9b912213ed75078ea8e57c46e93b668a Author: Judd Montgomery Date: Wed Oct 9 01:51:08 2002 +0000 updated commit 52d65cbee75f91d6542dcc2987405ede0fd013df Author: Judd Montgomery Date: Wed Oct 9 01:49:26 2002 +0000 Changes for automake commit a3cc03280e0aac7c68d8594960579c917405d512 Author: Judd Montgomery Date: Thu Oct 3 15:58:08 2002 +0000 Added Chinese translation commit 37a6bd982033a53af5055bf0aab83cc30a933637 Author: Judd Montgomery Date: Thu Oct 3 15:53:48 2002 +0000 Chinese translations commit b75705df19336163f246318696d52d742509722d Author: Judd Montgomery Date: Wed Oct 2 04:49:37 2002 +0000 Made dialogs transient commit 77e1779c9f754c44a0f1c811255fdacaece8e613 Author: Judd Montgomery Date: Wed Oct 2 04:48:02 2002 +0000 Fixed date label not showing up initially commit b79e580ddad497b66742cdd130fedc6f8f35176b Author: Judd Montgomery Date: Tue Oct 1 18:53:27 2002 +0000 explain log levels commit 55e6bf9b46c918f337c2742654ff7b058475f95e Author: Judd Montgomery Date: Tue Oct 1 18:53:14 2002 +0000 comment commit 621e614554ff154f8a5add3e4601b6df7806a4f3 Author: Judd Montgomery Date: Tue Oct 1 16:41:43 2002 +0000 moved the alt database checkboxes commit 75ffabe9001512548a1662f444294d639949ce90 Author: Judd Montgomery Date: Tue Oct 1 16:41:01 2002 +0000 fixed logging levels commit 5684ef335d7a6c1f0f79121fd6a7f153636df77d Author: Judd Montgomery Date: Tue Oct 1 00:52:33 2002 +0000 Moved plugin_pre_sync to after connection to palm occurs commit 28174beef6b28157d150c8ba5d1eedae77c8314c Author: Judd Montgomery Date: Mon Sep 30 18:32:26 2002 +0000 Change to export_gui params commit 1db02688227f058460042fb764a56147d35dfd03 Author: Judd Montgomery Date: Mon Sep 30 18:24:59 2002 +0000 prep for 0.99.3 commit e628aca966b10cadfffe338aea67f2df8b2f803e Author: Judd Montgomery Date: Mon Sep 30 06:08:08 2002 +0000 Typo commit 7cd8fdff14a148f25c96b29f1432e321db2c1abc Author: Judd Montgomery Date: Mon Sep 30 06:06:48 2002 +0000 Retain Unique IDs, Password reprompt, Fixed clist colors commit 972bc85c31b63e9afd84c8f7755d7a5f6146886e Author: Judd Montgomery Date: Mon Sep 30 06:05:46 2002 +0000 Fixed clist colors commit dd8a5eaa872eecdee65f923ce40a5f60fff66976 Author: Judd Montgomery Date: Mon Sep 30 04:34:53 2002 +0000 Changes for retaining unique IDs commit fb93561d844066bb0f00320c734f9c28e452c310 Author: Judd Montgomery Date: Mon Sep 30 04:31:43 2002 +0000 Changes for REPLACEMENT_PALM_REC commit 4ec5caa03418de3b15ed2094f27e259f5ca3f054 Author: Judd Montgomery Date: Fri Sep 27 05:15:06 2002 +0000 Fix for clist_select_all commit ce4951df38edbceee49d29c744cf93cd00b72c6a Author: Judd Montgomery Date: Fri Sep 27 03:31:45 2002 +0000 Changed dialogs to be transient commit 803aedf16b0159c5afba71cc20956f76c753a9e9 Author: Judd Montgomery Date: Thu Sep 26 21:03:02 2002 +0000 LC_ALL changed to LC_NUMERIC commit af781a6feed118e48aafbc9d0fa74fc8ce473437 Author: Judd Montgomery Date: Thu Sep 26 20:52:16 2002 +0000 change to re-prompt for incorrect passwords commit 5f767896ea752d9fd0c67eca9f20df0417c7a5b1 Author: Judd Montgomery Date: Thu Sep 26 06:59:24 2002 +0000 *** empty log message *** commit 776fea20a4e1fa01885687e822500557d33dc7f8 Author: Judd Montgomery Date: Thu Sep 26 06:57:19 2002 +0000 Changed WITH_PROMETHEON to ENABLE_PROMETHEON commit 5f4e485cf8c713c541118bdc2c91ccf1e4e7e56c Author: Judd Montgomery Date: Thu Sep 26 06:55:51 2002 +0000 Changed USE_DB3 to ENABLE_DATEBK commit 02b5194a7d1b466c94b37a62b1eb403588685b98 Author: Judd Montgomery Date: Thu Sep 26 06:54:58 2002 +0000 Added Manana support commit 955f432e32510194c97721d7aa8456567648b842 Author: Judd Montgomery Date: Thu Sep 26 06:52:42 2002 +0000 Fixed --disable-password commit 4163bf0ab317e2e55e552371c168fb9716f9c811 Author: Judd Montgomery Date: Thu Sep 26 06:50:50 2002 +0000 minor typo commit 29c876b249a4194f420f9b5410e31e4927e53b2a Author: Judd Montgomery Date: Thu Sep 26 06:50:31 2002 +0000 Changes to fix enable features commit ced81d4031f382aca10ff6a1902695ae7f687aff Author: Judd Montgomery Date: Thu Sep 26 06:48:31 2002 +0000 ifdef name change commit 3e9908a75e6c6e1ee06e040b96601a56f0ecda15 Author: Judd Montgomery Date: Wed Sep 25 03:13:31 2002 +0000 Changed English to Latin1 commit 25ad7d241b900f34cde4370f485bc8e060ec7a88 Author: Judd Montgomery Date: Mon Sep 23 20:01:04 2002 +0000 *** empty log message *** commit 8d70a0315a345de257969545e795a3b3e12e6da3 Author: Judd Montgomery Date: Mon Sep 23 19:49:44 2002 +0000 *** empty log message *** commit e4c37cef1b114e90e248f6a8c58e0329cdc518e3 Author: Judd Montgomery Date: Mon Sep 23 19:43:17 2002 +0000 Keeping unique IDs unique commit 6b5a6fea44e716128a9e01b3b4df009d0654f091 Author: Judd Montgomery Date: Mon Sep 23 19:41:38 2002 +0000 set_prefs no save change for jpilot-sync not saving port commit 1c878c809a937323dc9555bdd815fba70e319514 Author: Judd Montgomery Date: Mon Sep 23 19:34:13 2002 +0000 Keeping unique IDs unique commit 985011f9663cfccfbc5a34f5e41f905a56e8ee67 Author: Judd Montgomery Date: Mon Sep 23 00:57:51 2002 +0000 initial add commit e459f6d770aa2ae9c0f32838af8a3d1770325bd9 Author: Judd Montgomery Date: Mon Sep 9 14:54:03 2002 +0000 Use autogen.sh, or autoconf commit 1d2a45f202fc6dc1d3ba0c29790f937e664dd630 Author: Judd Montgomery Date: Fri Aug 30 02:45:33 2002 +0000 Changes commit 6f046a3912c636b1365a95f1914e42982017ed05 Author: Judd Montgomery Date: Fri Aug 30 02:21:29 2002 +0000 check for broken pilot-link versions commit 5951fae59254fc4af195731b8239d7ff37cf84e6 Author: Judd Montgomery Date: Wed Aug 28 19:49:54 2002 +0000 automake commit d63c05d08b9c5059b9aa5205d38e7db47ac2206f Author: Judd Montgomery Date: Wed Aug 28 19:40:35 2002 +0000 automake commit 8f7456f223eb82fc32253f96d207e98c787a6168 Author: Judd Montgomery Date: Wed Aug 28 19:40:11 2002 +0000 automakecat-compat.c commit a95d77b43414215401b8f0f62646033353eb66db Author: Judd Montgomery Date: Wed Aug 28 19:25:01 2002 +0000 automake commit ab42141bd71ca597e7a7b22c78331c911691f2d7 Author: Judd Montgomery Date: Wed Aug 28 17:24:56 2002 +0000 automake commit 9adb9952bf01d9d5b2e894417dc52f9c7479e975 Author: Judd Montgomery Date: Wed Aug 28 17:00:01 2002 +0000 *** empty log message *** commit 9f2e89c1c6d1dead940c6fd55530208ff64abc5e Author: Judd Montgomery Date: Wed Aug 28 16:45:24 2002 +0000 Now its ChangeLog commit 6619443faa6643e6eb6fca98734ab3bc032dadc6 Author: Judd Montgomery Date: Wed Aug 28 16:43:43 2002 +0000 *** empty log message *** commit 3314f61957e072c02300f96b9a25e87ee67e70f0 Author: Judd Montgomery Date: Wed Aug 28 16:40:47 2002 +0000 automake support commit 8f6be4cfcf05a8306d89b7eced7b1c644f650ebc Author: Judd Montgomery Date: Wed Aug 28 16:40:07 2002 +0000 *** empty log message *** commit 24cb59b4c5856d156a21053bc1d58d10955a0cfb Author: Judd Montgomery Date: Wed Aug 28 16:34:45 2002 +0000 *** empty log message *** commit e10b3a8fde61da601a003179287d0bd1b3f37340 Author: Judd Montgomery Date: Mon Aug 26 23:04:06 2002 +0000 Version 0.99.2 commit be4452b764e7cd0a75ee8d7a2b63d44be2ea4393 Author: Judd Montgomery Date: Mon Aug 26 22:52:42 2002 +0000 Version 0.99.1 commit 8d3d272906a2ac60dc8539beca90e5d591d310d9 Author: Judd Montgomery Date: Mon Aug 26 22:36:57 2002 +0000 Version 0.99 commit 3972de59ddc28052e7271e1795c4d2bfab96740c Author: Judd Montgomery Date: Mon Aug 26 22:17:14 2002 +0000 Version 0.99 commit 3e5e67367df5a3625829ea33c3f038fd20ac635f Author: Judd Montgomery Date: Mon Aug 26 22:14:33 2002 +0000 *** empty log message *** commit aee93e0937959032389b60ceb5f56c80ca7da86e Author: Judd Montgomery Date: Mon Aug 26 22:10:11 2002 +0000 Version 0.98 commit fbbd2160e59a4235e82f0ce1238e6fe0e9ab29cc Author: Judd Montgomery Date: Mon Aug 26 22:01:25 2002 +0000 Version 0.97 commit 652f1da477b0e47adfa71af8d20f53d9a646214f Author: Judd Montgomery Date: Mon Aug 26 21:54:29 2002 +0000 Version 0.96 commit fb2fcb2d60d1c9fb86999bc07b26efe93b95942b Author: Judd Montgomery Date: Mon Aug 26 21:50:16 2002 +0000 *** empty log message *** commit 61d8772db76116552acdabcc02fe839713415fd8 Author: Judd Montgomery Date: Mon Aug 26 21:45:51 2002 +0000 Was not added as binary commit 4b34165a6d05ac6b9bfc18e38b1a4855778577a8 Author: Judd Montgomery Date: Mon Aug 26 21:39:32 2002 +0000 Version 0.95 commit f18caad5acfd691d4b6e9f18f2e94eeed0566fda Author: Judd Montgomery Date: Mon Aug 26 21:34:32 2002 +0000 Version 0.94 commit 48032ec48a803c901881a9a4ec22879fcefccd79 Author: Judd Montgomery Date: Mon Aug 26 21:23:35 2002 +0000 Version 0.93.1 commit d111177c7c38022dce68551bc5a81d0f8a30092f Author: Judd Montgomery Date: Mon Aug 26 21:20:19 2002 +0000 *** empty log message *** commit 04b4d19feb503adee37583918585b03441c4f619 Author: Judd Montgomery Date: Mon Aug 26 21:19:37 2002 +0000 Generated by configure now commit 2a38af36863a3ec0c041b464800636a84f326fe3 Author: Judd Montgomery Date: Mon Aug 26 21:14:19 2002 +0000 version 0.93 commit 43a9da5311bec8f3b39d9aeb20d696c99ba022e3 Author: Judd Montgomery Date: Mon Aug 26 21:11:57 2002 +0000 Initial release commit 7edee33eb47fb974b0441c1a984ceab74a1ae63e Author: Judd Montgomery Date: Mon Aug 26 20:56:51 2002 +0000 version 0.92 commit 7aada36822ae3514aae181edc90108d215af262c Author: Judd Montgomery Date: Mon Aug 26 20:45:38 2002 +0000 Initial release commit b70d1c34e357a40cb289dec4ed897feb09864628 Author: Judd Montgomery Date: Mon Aug 26 20:34:37 2002 +0000 version 0.91 commit 04dc345b23596c57ff3ceab09074446b49cd8fa4 Author: Judd Montgomery Date: Mon Aug 26 20:30:49 2002 +0000 J-Pilot Desktop jpilot-1.8.2/install_gui.c0000664000175000017500000003237312340261240012426 00000000000000/******************************************************************************* * install_gui.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include "i18n.h" #include "utils.h" #include "prefs.h" #include "log.h" /********************************* Constants **********************************/ #define INST_SDCARD_COLUMN 0 #define INST_FNAME_COLUMN 1 /******************************* Global vars **********************************/ static GtkWidget *filew=NULL; static GtkWidget *clist; static int clist_row_selected; /****************************** Prototypes ************************************/ static int install_update_clist(void); /****************************** Main Code *************************************/ static int install_remove_line(int deleted_line_num) { FILE *in; FILE *out; char line[1002]; char *Pc; int r, line_count; in = jp_open_home_file(EPN".install", "r"); if (!in) { jp_logf(JP_LOG_DEBUG, "failed opening install_file\n"); return EXIT_FAILURE; } out = jp_open_home_file(EPN".install.tmp", "w"); if (!out) { fclose(in); jp_logf(JP_LOG_DEBUG, "failed opening install_file.tmp\n"); return EXIT_FAILURE; } /* Delete line by copying file and skipping over line to delete */ for (line_count=0; !feof(in); line_count++) { line[0]='\0'; Pc = fgets(line, 1000, in); if (!Pc) { break; } if (line_count == deleted_line_num) { continue; } r = fprintf(out, "%s", line); if (r==EOF) { break; } } fclose(in); fclose(out); rename_file(EPN".install.tmp", EPN".install"); return EXIT_SUCCESS; } int install_append_line(const char *line) { FILE *out; int r; out = jp_open_home_file(EPN".install", "a"); if (!out) { return EXIT_FAILURE; } r = fprintf(out, "%s\n", line); if (r==EOF) { fclose(out); return EXIT_FAILURE; } fclose(out); return EXIT_SUCCESS; } static int install_modify_line(int modified_line_num, const char *modified_line) { FILE *in; FILE *out; char line[1002]; char *Pc; int r, line_count; in = jp_open_home_file(EPN".install", "r"); if (!in) { jp_logf(JP_LOG_DEBUG, "failed opening install_file\n"); return EXIT_FAILURE; } out = jp_open_home_file(EPN".install.tmp", "w"); if (!out) { fclose(in); jp_logf(JP_LOG_DEBUG, "failed opening install_file.tmp\n"); return EXIT_FAILURE; } /* Delete line by copying file and skipping over line to delete */ for (line_count=0; !feof(in); line_count++) { line[0]='\0'; Pc = fgets(line, 1000, in); if (!Pc) { break; } if (line_count == modified_line_num) { r = fprintf(out, "%s\n", modified_line); } else { r = fprintf(out, "%s", line); } if (r==EOF) { break; } } fclose(in); fclose(out); rename_file(EPN".install.tmp", EPN".install"); return EXIT_SUCCESS; } static gboolean cb_destroy(GtkWidget *widget) { filew = NULL; gtk_main_quit(); return TRUE; } /* Save working directory for future installs */ static void cb_quit(GtkWidget *widget, gpointer data) { const char *sel; char dir[MAX_PREF_LEN+2]; struct stat statb; int i; jp_logf(JP_LOG_DEBUG, "Quit\n"); sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data)); g_strlcpy(dir, sel, MAX_PREF_LEN); if (stat(sel, &statb)) { jp_logf(JP_LOG_WARN, "File selected was not stat-able\n"); } if (S_ISDIR(statb.st_mode)) { /* For directory, add '/' indicator to path */ i = strlen(dir); dir[i]='/', dir[i+1]='\0'; } else { /* Otherwise, strip off filename to find actual directory */ for (i=strlen(dir); i>=0; i--) { if (dir[i]=='/') { dir[i+1]='\0'; break; } } } set_pref(PREF_INSTALL_PATH, 0, dir, TRUE); filew = NULL; gtk_widget_destroy(data); } static void cb_add(GtkWidget *widget, gpointer data) { const char *sel; struct stat statb; jp_logf(JP_LOG_DEBUG, "install: cb_add\n"); sel = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data)); jp_logf(JP_LOG_DEBUG, "file selected [%s]\n", sel); /* Check to see if its a regular file */ if (stat(sel, &statb)) { jp_logf(JP_LOG_DEBUG, "File selected was not stat-able\n"); return; } if (!S_ISREG(statb.st_mode)) { jp_logf(JP_LOG_DEBUG, "File selected was not a regular file\n"); return; } install_append_line(sel); install_update_clist(); } static void cb_remove(GtkWidget *widget, gpointer data) { if (clist_row_selected < 0) { return; } jp_logf(JP_LOG_DEBUG, "Remove line %d\n", clist_row_selected); install_remove_line(clist_row_selected); install_update_clist(); } static void cb_clist_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { char fname[1000]; char *gtk_str; clist_row_selected = row; if (column == INST_SDCARD_COLUMN) { /* Toggle display of SDCARD pixmap */ if (gtk_clist_get_text(GTK_CLIST(clist), row, column, NULL)) { GdkPixmap *pixmap; GdkBitmap *mask; get_pixmaps(clist, PIXMAP_SDCARD, &pixmap, &mask); gtk_clist_set_pixmap(GTK_CLIST(clist), row, column, pixmap, mask); gtk_clist_get_text(GTK_CLIST(clist), row, INST_FNAME_COLUMN, >k_str); fname[0] = '\001'; g_strlcpy(&fname[1], gtk_str, sizeof(fname)-1); install_modify_line(row, fname); } else { gtk_clist_set_text(GTK_CLIST(clist), row, column, ""); gtk_clist_get_text(GTK_CLIST(clist), row, INST_FNAME_COLUMN, >k_str); g_strlcpy(&fname[0], gtk_str, sizeof(fname)); install_modify_line(row, fname); } } return; } static int install_update_clist(void) { FILE *in; char line[1002]; char *Pc; char *new_line[3]; int last_row_selected; int count; int len; int sdcard_install; new_line[0]=""; new_line[1]=line; new_line[2]=NULL; last_row_selected = clist_row_selected; in = jp_open_home_file(EPN".install", "r"); if (!in) { return EXIT_FAILURE; } gtk_signal_disconnect_by_func(GTK_OBJECT(clist), GTK_SIGNAL_FUNC(cb_clist_selection), NULL); gtk_clist_freeze(GTK_CLIST(clist)); gtk_clist_clear(GTK_CLIST(clist)); #ifdef __APPLE__ gtk_clist_thaw(GTK_CLIST(clist)); gtk_widget_hide(clist); gtk_widget_show_all(clist); gtk_clist_freeze(GTK_CLIST(clist)); #endif for (count=0; !feof(in); count++) { line[0]='\0'; Pc = fgets(line, 1000, in); if (!Pc) { break; } /* Strip newline characters from end of string */ len=strlen(line); if ((line[len-1]=='\n') || (line[len-1]=='\r')) line[len-1]='\0'; if ((line[len-2]=='\n') || (line[len-2]=='\r')) line[len-2]='\0'; sdcard_install = (line[0] == '\001'); /* Strip char indicating SDCARD install from start of string */ if (sdcard_install) { new_line[1] = &line[1]; } else { new_line[1] = &line[0]; } gtk_clist_append(GTK_CLIST(clist), new_line); /* Add SDCARD icon for files to be installed on SDCARD */ if (sdcard_install) { GdkPixmap *pixmap; GdkBitmap *mask; get_pixmaps(clist, PIXMAP_SDCARD, &pixmap, &mask); gtk_clist_set_pixmap(GTK_CLIST(clist), count, INST_SDCARD_COLUMN, pixmap, mask); } } fclose(in); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); if (last_row_selected > count-1) { last_row_selected = count - 1; } if (last_row_selected >= 0) { clist_select_row(GTK_CLIST(clist), last_row_selected, INST_FNAME_COLUMN); } gtk_clist_thaw(GTK_CLIST(clist)); return EXIT_SUCCESS; } int install_gui(GtkWidget *main_window, int w, int h, int x, int y) { GtkWidget *scrolled_window; GtkWidget *button; GtkWidget *label; GtkWidget *pixmapwid; GdkPixmap *pixmap; GdkBitmap *mask; char temp_str[256]; const char *svalue; gchar *titles[] = {"", _("Files to install")}; if (filew) { return EXIT_SUCCESS; } clist_row_selected = 0; g_snprintf(temp_str, sizeof(temp_str), "%s %s", PN, _("Install")); filew = gtk_widget_new(GTK_TYPE_FILE_SELECTION, "type", GTK_WINDOW_TOPLEVEL, "title", temp_str, NULL); gtk_window_set_default_size(GTK_WINDOW(filew), w, h); gtk_widget_set_uposition(filew, x, y); gtk_window_set_modal(GTK_WINDOW(filew), TRUE); gtk_window_set_transient_for(GTK_WINDOW(filew), GTK_WINDOW(main_window)); get_pref(PREF_INSTALL_PATH, NULL, &svalue); if (svalue && svalue[0]) { gtk_file_selection_set_filename(GTK_FILE_SELECTION(filew), svalue); } gtk_file_selection_hide_fileop_buttons((gpointer) filew); gtk_widget_hide((GTK_FILE_SELECTION(filew)->cancel_button)); gtk_signal_connect(GTK_OBJECT(filew), "destroy", GTK_SIGNAL_FUNC(cb_destroy), filew); /* Even though I hide the ok button I still want to connect its signal */ /* because a double click on the file name also calls this callback */ gtk_widget_hide(GTK_WIDGET(GTK_FILE_SELECTION(filew)->ok_button)); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filew)->ok_button), "clicked", GTK_SIGNAL_FUNC(cb_add), filew); clist = gtk_clist_new_with_titles(2, titles); gtk_widget_set_usize(GTK_WIDGET(clist), 0, 166); gtk_clist_column_titles_passive(GTK_CLIST(clist)); gtk_clist_set_column_auto_resize(GTK_CLIST(clist), INST_SDCARD_COLUMN, TRUE); gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_BROWSE); get_pixmaps(clist, PIXMAP_SDCARD, &pixmap, &mask); #ifdef __APPLE__ mask = NULL; #endif pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_clist_set_column_widget(GTK_CLIST(clist), INST_SDCARD_COLUMN, pixmapwid); gtk_clist_set_column_justification(GTK_CLIST(clist), INST_SDCARD_COLUMN, GTK_JUSTIFY_CENTER); gtk_signal_connect(GTK_OBJECT(clist), "select_row", GTK_SIGNAL_FUNC(cb_clist_selection), NULL); /* Scrolled Window for file list */ scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(clist)); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 5); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->action_area), scrolled_window, TRUE, TRUE, 0); label = gtk_label_new(_("To change to a hidden directory type it below and hit TAB")); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->main_vbox), label, FALSE, FALSE, 0); /* Add/Remove/Quit buttons */ button = gtk_button_new_from_stock(GTK_STOCK_ADD); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->ok_button->parent), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_add), filew); button = gtk_button_new_from_stock(GTK_STOCK_REMOVE); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->ok_button->parent), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_remove), filew); button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(filew)->ok_button->parent), button, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cb_quit), filew); /**********************************************************************/ gtk_widget_show_all(filew); /* Hide default buttons not used by Jpilot file selector */ gtk_widget_hide(GTK_FILE_SELECTION(filew)->cancel_button); gtk_widget_hide(GTK_FILE_SELECTION(filew)->ok_button); install_update_clist(); gtk_main(); return EXIT_SUCCESS; } jpilot-1.8.2/Makefile.in0000664000175000017500000013110412336026321012011 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = jpilot$(EXEEXT) jpilot-dump$(EXEEXT) \ jpilot-sync$(EXEEXT) jpilot-merge$(EXEEXT) subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in mkinstalldirs $(srcdir)/jpilot.spec.in \ $(srcdir)/SlackBuild.in depcomp ABOUT-NLS AUTHORS COPYING \ ChangeLog INSTALL NEWS README TODO compile config.guess \ config.rpath config.sub install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-2.0.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = jpilot.spec SlackBuild CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(colordir)" \ "$(DESTDIR)$(desktopdir)" PROGRAMS = $(bin_PROGRAMS) am_jpilot_OBJECTS = address.$(OBJEXT) address_gui.$(OBJEXT) \ alarms.$(OBJEXT) category.$(OBJEXT) calendar.$(OBJEXT) \ contact.$(OBJEXT) cp1250.$(OBJEXT) dat.$(OBJEXT) \ datebook.$(OBJEXT) datebook_gui.$(OBJEXT) dialer.$(OBJEXT) \ export_gui.$(OBJEXT) import_gui.$(OBJEXT) \ install_gui.$(OBJEXT) install_user.$(OBJEXT) \ japanese.$(OBJEXT) jpilot.$(OBJEXT) jp-contact.$(OBJEXT) \ libplugin.$(OBJEXT) log.$(OBJEXT) memo.$(OBJEXT) \ memo_gui.$(OBJEXT) monthview_gui.$(OBJEXT) otherconv.$(OBJEXT) \ password.$(OBJEXT) pidfile.$(OBJEXT) plugins.$(OBJEXT) \ prefs.$(OBJEXT) prefs_gui.$(OBJEXT) print.$(OBJEXT) \ print_gui.$(OBJEXT) print_headers.$(OBJEXT) \ print_logo.$(OBJEXT) restore_gui.$(OBJEXT) russian.$(OBJEXT) \ search_gui.$(OBJEXT) sync.$(OBJEXT) todo.$(OBJEXT) \ todo_gui.$(OBJEXT) utils.$(OBJEXT) weekview_gui.$(OBJEXT) jpilot_OBJECTS = $(am_jpilot_OBJECTS) jpilot_DEPENDENCIES = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = jpilot_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jpilot_LDFLAGS) $(LDFLAGS) -o $@ am_jpilot_dump_OBJECTS = address.$(OBJEXT) calendar.$(OBJEXT) \ category.$(OBJEXT) cp1250.$(OBJEXT) datebook.$(OBJEXT) \ japanese.$(OBJEXT) jpilot-dump.$(OBJEXT) libplugin.$(OBJEXT) \ log.$(OBJEXT) memo.$(OBJEXT) otherconv.$(OBJEXT) \ password.$(OBJEXT) plugins.$(OBJEXT) prefs.$(OBJEXT) \ russian.$(OBJEXT) todo.$(OBJEXT) utils.$(OBJEXT) \ jp-contact.$(OBJEXT) jpilot_dump_OBJECTS = $(am_jpilot_dump_OBJECTS) jpilot_dump_DEPENDENCIES = am_jpilot_merge_OBJECTS = cp1250.$(OBJEXT) japanese.$(OBJEXT) \ libplugin.$(OBJEXT) log.$(OBJEXT) jpilot-merge.$(OBJEXT) \ otherconv.$(OBJEXT) plugins.$(OBJEXT) prefs.$(OBJEXT) \ russian.$(OBJEXT) utils.$(OBJEXT) jpilot_merge_OBJECTS = $(am_jpilot_merge_OBJECTS) jpilot_merge_DEPENDENCIES = am_jpilot_sync_OBJECTS = cp1250.$(OBJEXT) category.$(OBJEXT) \ jpilot-sync.$(OBJEXT) japanese.$(OBJEXT) libplugin.$(OBJEXT) \ log.$(OBJEXT) otherconv.$(OBJEXT) password.$(OBJEXT) \ plugins.$(OBJEXT) prefs.$(OBJEXT) russian.$(OBJEXT) \ sync.$(OBJEXT) utils.$(OBJEXT) jp-contact.$(OBJEXT) jpilot_sync_OBJECTS = $(am_jpilot_sync_OBJECTS) jpilot_sync_DEPENDENCIES = jpilot_sync_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jpilot_sync_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(jpilot_SOURCES) $(jpilot_dump_SOURCES) \ $(jpilot_merge_SOURCES) $(jpilot_sync_SOURCES) DIST_SOURCES = $(jpilot_SOURCES) $(jpilot_dump_SOURCES) \ $(jpilot_merge_SOURCES) $(jpilot_sync_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(color_DATA) $(desktop_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ABILIB = @ABILIB@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUT = @CUT@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ ################################################################################ ################################################################################ # Automatically update the libtool script if it becomes out-of-date. LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PILOT_FLAGS = @PILOT_FLAGS@ PILOT_LIBS = @PILOT_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ PROGNAME = @PROGNAME@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ # Add i18n support localedir = $(datadir)/locale localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = m4 po Expense SyncTime KeyRing dialer icons docs empty EXTRA_DIST = config.rpath mkinstalldirs reconf autogen.sh \ intltool-extract.in intltool-merge.in intltool-update.in gettext.h \ ChangeLog Changelog.git \ po/POTFILES \ po/jpilot.pot \ jpilot.spec \ SlackBuild description-pak \ jpilot.desktop \ $(color_DATA) \ jpilot.xpm DISTCLEANFILES = intltool-extract intltool-merge intltool-update ChangeLog.git desktopdir = $(datadir)/applications desktop_DATA = jpilot.desktop # The skin files for changing jpilot appearance colordir = $(pkgdatadir) color_DATA = \ jpilotrc.blue jpilotrc.default jpilotrc.green jpilotrc.purple \ jpilotrc.steel jpilot_SOURCES = \ address.c \ address.h \ address_gui.c \ alarms.c \ alarms.h \ category.c \ calendar.c \ calendar.h \ contact.c \ cp1250.c \ cp1250.h \ dat.c \ datebook.c \ datebook.h \ datebook_gui.c \ dialer.c \ export_gui.c \ export.h \ i18n.h \ import_gui.c \ install_gui.c \ install_user.c \ install_user.h \ japanese.c \ japanese.h \ jpilot.c \ jpilot.h \ jp-contact.c \ jp-pi-contact.h \ libplugin.c \ libplugin.h \ log.c \ log.h \ memo.c \ memo_gui.c \ memo.h \ monthview_gui.c \ otherconv.c \ otherconv.h \ password.c \ password.h \ pidfile.c \ pidfile.h \ plugins.c \ plugins.h \ prefs.c \ prefs_gui.c \ prefs_gui.h \ prefs.h \ print.c \ print_gui.c \ print.h \ print_headers.c \ print_headers.h \ print_logo.c \ print_logo.h \ restore_gui.c \ restore.h \ russian.c \ russian.h \ search_gui.c \ stock_buttons.h \ sync.c \ sync.h \ todo.c \ todo_gui.c \ todo.h \ utils.c \ utils.h \ weekview_gui.c \ icons/address.xpm \ icons/datebook.xpm \ icons/memo.xpm \ icons/todo.xpm \ icons/sync.xpm \ icons/cancel_sync.xpm \ icons/backup.xpm \ icons/clist_mini_icons.h \ icons/appl_menu_icons.h \ icons/lock_icons.h jpilot_dump_SOURCES = \ address.c \ calendar.c \ category.c \ cp1250.c \ datebook.c \ japanese.c \ jpilot-dump.c \ libplugin.c \ log.c \ memo.c \ otherconv.c \ password.c \ plugins.c \ prefs.c \ russian.c \ todo.c \ utils.c \ jp-contact.c jpilot_sync_SOURCES = \ cp1250.c \ category.c \ jpilot-sync.c \ japanese.c \ libplugin.c \ log.c \ otherconv.c \ password.c \ plugins.c \ prefs.c \ russian.c \ sync.c \ utils.c \ jp-contact.c jpilot_merge_SOURCES = \ cp1250.c \ japanese.c \ libplugin.c \ log.c \ jpilot-merge.c \ otherconv.c \ plugins.c \ prefs.c \ russian.c \ utils.c # Include gettext macros that we have placed in the m4 directory # and include in the distribution. ACLOCAL_AMFLAGS = -I m4 I18NDEFS = -DLOCALEDIR=\"$(localedir)\" AM_CFLAGS = @PILOT_FLAGS@ @GTK_CFLAGS@ ${I18NDEFS} # Add linkflags jpilot_LDFLAGS = -export-dynamic jpilot_LDADD = @LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_dump_LDADD = @LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_sync_LDFLAGS = -export-dynamic jpilot_sync_LDADD = @LIBS@ @PILOT_LIBS@ @GTK_LIBS@ jpilot_merge_LDADD = @LIBS@ @PILOT_LIBS@ @GTK_LIBS@ all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 jpilot.spec: $(top_builddir)/config.status $(srcdir)/jpilot.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ SlackBuild: $(top_builddir)/config.status $(srcdir)/SlackBuild.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list jpilot$(EXEEXT): $(jpilot_OBJECTS) $(jpilot_DEPENDENCIES) $(EXTRA_jpilot_DEPENDENCIES) @rm -f jpilot$(EXEEXT) $(AM_V_CCLD)$(jpilot_LINK) $(jpilot_OBJECTS) $(jpilot_LDADD) $(LIBS) jpilot-dump$(EXEEXT): $(jpilot_dump_OBJECTS) $(jpilot_dump_DEPENDENCIES) $(EXTRA_jpilot_dump_DEPENDENCIES) @rm -f jpilot-dump$(EXEEXT) $(AM_V_CCLD)$(LINK) $(jpilot_dump_OBJECTS) $(jpilot_dump_LDADD) $(LIBS) jpilot-merge$(EXEEXT): $(jpilot_merge_OBJECTS) $(jpilot_merge_DEPENDENCIES) $(EXTRA_jpilot_merge_DEPENDENCIES) @rm -f jpilot-merge$(EXEEXT) $(AM_V_CCLD)$(LINK) $(jpilot_merge_OBJECTS) $(jpilot_merge_LDADD) $(LIBS) jpilot-sync$(EXEEXT): $(jpilot_sync_OBJECTS) $(jpilot_sync_DEPENDENCIES) $(EXTRA_jpilot_sync_DEPENDENCIES) @rm -f jpilot-sync$(EXEEXT) $(AM_V_CCLD)$(jpilot_sync_LINK) $(jpilot_sync_OBJECTS) $(jpilot_sync_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/address.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/address_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alarms.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/category.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contact.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cp1250.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datebook.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datebook_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/export_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/install_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/install_user.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/japanese.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jp-contact.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpilot-dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpilot-merge.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpilot-sync.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpilot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libplugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memo_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monthview_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otherconv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/password.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugins.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefs_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_headers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_logo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/restore_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/russian.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/todo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/todo_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weekview_gui.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-colorDATA: $(color_DATA) @$(NORMAL_INSTALL) @list='$(color_DATA)'; test -n "$(colordir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(colordir)'"; \ $(MKDIR_P) "$(DESTDIR)$(colordir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(colordir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(colordir)" || exit $$?; \ done uninstall-colorDATA: @$(NORMAL_UNINSTALL) @list='$(color_DATA)'; test -n "$(colordir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(colordir)'; $(am__uninstall_files_from_dir) install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(colordir)" "$(DESTDIR)$(desktopdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-colorDATA install-desktopDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-colorDATA \ uninstall-desktopDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-binPROGRAMS \ clean-cscope clean-generic clean-libtool cscope cscopelist-am \ ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-colorDATA \ install-data install-data-am install-desktopDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-colorDATA \ uninstall-desktopDATA libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck better-world: echo "make better-world: rm -rf -any -all windows" peace: echo "make peace: not war" test_compile: @-rm -f autogen.log autogen.log2 make.log @echo "Configuring Jpilot build" autogen.sh > autogen.log 2>&1 @-grep -v 'warning: underquoted definition' autogen.log > autogen.log2 !(grep 'warn' autogen.log2) !(grep ' error' autogen.log2) make > make.log 2>&1 !(grep 'warn' make.log) !(grep 'error' make.log) ChangeLog.cvs: rcs2log -h hostname | perl -pe \ 's//Ludovic Rousseau /; \ s//Judd Montgomery /; \ s//David A. Desrosiers /; \ s//Rik Wehbring /' > $@ .PHONY: ChangeLog.cvs ChangeLog.git: git log --pretty > $@ .PHONY: ChangeLog.git # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: jpilot-1.8.2/calendar.c0000664000175000017500000004431312340261240011662 00000000000000/******************************************************************************* * calendar.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include #include #include #include "datebook.h" #include "i18n.h" #include "utils.h" #include "log.h" #include "prefs.h" #include "libplugin.h" #include "password.h" #include "calendar.h" /* Copy AppInfo data structures */ int copy_appointment_ai_to_calendar_ai(const struct AppointmentAppInfo *aai, struct CalendarAppInfo *cai) { cai->type = calendar_v1; memcpy(&cai->category, &aai->category, sizeof(struct CategoryAppInfo)); cai->startOfWeek = aai->startOfWeek; memset(&cai->internal, '\0', sizeof(cai->internal)); return EXIT_SUCCESS; } /* Copy AppInfo data structures */ int copy_calendar_ai_to_appointment_ai(const struct CalendarAppInfo *cai, struct AppointmentAppInfo *aai) { memcpy(&aai->category, &cai->category, sizeof(struct CategoryAppInfo)); aai->startOfWeek = cai->startOfWeek; return EXIT_SUCCESS; } int copy_appointment_to_calendarEvent(const struct Appointment *appt, struct CalendarEvent *cale) { int i; cale->event = appt->event; cale->begin = appt->begin; cale->end = appt->end; cale->alarm = appt->alarm; cale->advance = appt->advance; cale->advanceUnits = appt->advanceUnits; cale->repeatType = appt->repeatType; cale->repeatForever = appt->repeatForever; cale->repeatEnd = appt->repeatEnd; cale->repeatFrequency = appt->repeatFrequency; cale->repeatDay = appt->repeatDay; for (i=0; i<7; i++) { cale->repeatDays[i] = appt->repeatDays[i]; } cale->repeatWeekstart = appt->repeatWeekstart; cale->exceptions = appt->exceptions; if (appt->exceptions > 0) { cale->exception = (struct tm *) malloc(appt->exceptions * sizeof(struct tm)); memcpy(cale->exception, appt->exception, appt->exceptions * sizeof(struct tm)); } else { cale->exception = NULL; } if (appt->description) { cale->description = strdup(appt->description); } else { cale->description = NULL; } if (appt->note) { cale->note = strdup(appt->note); } else { cale->note = NULL; } cale->location = NULL; /* No blobs */ for (i=0; iblob[i]=NULL; } cale->tz = NULL; return EXIT_SUCCESS; } int copy_calendarEvent_to_appointment(const struct CalendarEvent *cale, struct Appointment *appt) { int i; appt->event = cale->event; appt->begin = cale->begin; appt->end = cale->end; appt->alarm = cale->alarm; appt->advance = cale->advance; appt->advanceUnits = cale->advanceUnits; appt->repeatType = cale->repeatType; appt->repeatForever = cale->repeatForever; appt->repeatEnd = cale->repeatEnd; appt->repeatFrequency = cale->repeatFrequency; appt->repeatDay = cale->repeatDay; for (i=0; i<7; i++) { appt->repeatDays[i] = cale->repeatDays[i]; } appt->repeatWeekstart = cale->repeatWeekstart; appt->exceptions = cale->exceptions; if (cale->exceptions > 0) { appt->exception = (struct tm *) malloc(cale->exceptions * sizeof(struct tm)); memcpy(appt->exception, cale->exception, cale->exceptions * sizeof(struct tm)); } else { appt->exception = NULL; } if (cale->description) { appt->description = strdup(cale->description); } else { appt->description = NULL; } if (cale->note) { appt->note = strdup(cale->note); } else { appt->note = NULL; } return EXIT_SUCCESS; } int copy_appointments_to_calendarEvents(AppointmentList *al, CalendarEventList **cel) { CalendarEventList *temp_cel, *last_cel; AppointmentList *temp_al; *cel = last_cel = NULL; for (temp_al = al; temp_al; temp_al=temp_al->next) { temp_cel = malloc(sizeof(CalendarEventList)); if (!temp_cel) return -1; temp_cel->mcale.rt = temp_al->mappt.rt; temp_cel->mcale.unique_id = temp_al->mappt.unique_id; temp_cel->mcale.attrib = temp_al->mappt.attrib; copy_appointment_to_calendarEvent(&(temp_al->mappt.appt), &(temp_cel->mcale.cale)); temp_cel->app_type = CALENDAR; temp_cel->next=NULL; if (!last_cel) { *cel = last_cel = temp_cel; } else { last_cel->next = temp_cel; last_cel = temp_cel; } } return EXIT_SUCCESS; } int copy_calendarEvents_to_appointments(CalendarEventList *cel, AppointmentList **al) { AppointmentList *temp_al, *last_al; CalendarEventList *temp_cel; *al = last_al = NULL; for (temp_cel = cel; temp_cel; temp_cel=temp_cel->next) { temp_al = malloc(sizeof(AppointmentList)); if (!temp_al) return -1; temp_al->mappt.rt = temp_cel->mcale.rt; temp_al->mappt.unique_id = temp_cel->mcale.unique_id; temp_al->mappt.attrib = temp_cel->mcale.attrib; copy_calendarEvent_to_appointment(&(temp_cel->mcale.cale), &(temp_al->mappt.appt)); temp_al->app_type = DATEBOOK; temp_al->next=NULL; if (!last_al) { *al = last_al = temp_al; } else { last_al->next = temp_al; last_al = temp_al; } } return EXIT_SUCCESS; } void free_CalendarEventList(CalendarEventList **cel) { CalendarEventList *temp_cel, *temp_cel_next; for (temp_cel = *cel; temp_cel; temp_cel=temp_cel_next) { free_CalendarEvent(&(temp_cel->mcale.cale)); temp_cel_next = temp_cel->next; free(temp_cel); } *cel = NULL; } int get_calendar_app_info(struct CalendarAppInfo *cai) { int num, r; int rec_size; unsigned char *buf; pi_buffer_t pi_buf; memset(cai, 0, sizeof(*cai)); /* Put at least one entry in there */ strcpy(cai->category.name[0], "Unfiled"); r = jp_get_app_info("CalendarDB-PDat", &buf, &rec_size); if ((r != EXIT_SUCCESS) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("%s:%d Error reading application info %s\n"), __FILE__, __LINE__, "CalendarDB-PDat"); if (buf) { free(buf); } return EXIT_FAILURE; } pi_buf.data = buf; pi_buf.used = rec_size; pi_buf.allocated = rec_size; num = unpack_CalendarAppInfo(cai, &pi_buf); if (buf) { free(buf); } if ((num<0) || (rec_size<=0)) { jp_logf(JP_LOG_WARN, _("Error reading file: %s\n"), "CalendarDB-PDat.pdb"); return EXIT_FAILURE; } return EXIT_SUCCESS; } static int calendar_compare(const void *v1, const void *v2) { int r; CalendarEventList **cel1, **cel2; struct CalendarEvent *ce1, *ce2; cel1=(CalendarEventList **)v1; cel2=(CalendarEventList **)v2; ce1=&((*cel1)->mcale.cale); ce2=&((*cel2)->mcale.cale); /* Sort by untimed event / timed event */ r = ce1->event - ce2->event; if (r) { return r; } /* Sort by appointment start time */ /* Jim Rees pointed out my sorting error */ if (!(ce1->event) && !(ce2->event)) { r = (ce2->begin.tm_hour*60 + ce2->begin.tm_min) - (ce1->begin.tm_hour*60 + ce1->begin.tm_min); if (r) { return r; } } /* If all else fails sort alphabetically */ if (ce1->description && ce2->description) { return strcoll(ce2->description,ce1->description); } return 0; } int calendar_sort(CalendarEventList **cel, int (*compare_func)(const void*, const void*)) { CalendarEventList *temp_cel; CalendarEventList **sort_cel; int count, i; /* Count the entries in the list */ for (count=0, temp_cel=*cel; temp_cel; temp_cel=temp_cel->next, count++) {} if (count<2) { /* No need to sort 0 or 1 items */ return EXIT_SUCCESS; } /* Allocate an array to be qsorted */ sort_cel = calloc(count, sizeof(CalendarEventList *)); if (!sort_cel) { jp_logf(JP_LOG_WARN, "calendar_sort(): %s\n", _("Out of memory")); return EXIT_FAILURE; } /* Set our array to be a list of pointers to the nodes in the linked list */ for (i=0, temp_cel=*cel; temp_cel; temp_cel=temp_cel->next, i++) { sort_cel[i] = temp_cel; } /* qsort them */ qsort(sort_cel, count, sizeof(CalendarEventList *), compare_func); /* Put the linked list in the order of the array */ sort_cel[count-1]->next = NULL; for (i=count-1; i>0; i--) { sort_cel[i]->next=sort_cel[i-1]; } sort_cel[0]->next = NULL; *cel = sort_cel[count-1]; free(sort_cel); return EXIT_SUCCESS; } int get_days_calendar_events(CalendarEventList **calendar_event_list, struct tm *now, int category, int *total_records) { return get_days_calendar_events2(calendar_event_list, now, 1, 1, 1, category, total_records); } #ifdef ENABLE_DATEBK static int calendar_db3_hack_date(struct CalendarEvent *cale, struct tm *today) { int t1, t2; if (today==NULL) { return EXIT_SUCCESS; } if (!cale->note) { return EXIT_SUCCESS; } if (strlen(cale->note) > 8) { if ((cale->note[0]=='#') && (cale->note[1]=='#')) { if (cale->note[2]=='f' || cale->note[2]=='F') { /* Check to see if its in the future */ t1 = cale->begin.tm_mday + cale->begin.tm_mon*31 + cale->begin.tm_year*372; t2 = today->tm_mday + today->tm_mon*31 + today->tm_year*372; if (t1 > t2) return EXIT_SUCCESS; /* We found some silly hack, so we lie about the date */ /* memcpy(&(cale->begin), today, sizeof(struct tm));*/ /* memcpy(&(cale->end), today, sizeof(struct tm));*/ cale->begin.tm_mday = today->tm_mday; cale->begin.tm_mon = today->tm_mon; cale->begin.tm_year = today->tm_year; cale->begin.tm_wday = today->tm_wday; cale->begin.tm_yday = today->tm_yday; cale->begin.tm_isdst = today->tm_isdst; cale->end.tm_mday = today->tm_mday; cale->end.tm_mon = today->tm_mon; cale->end.tm_year = today->tm_year; cale->end.tm_wday = today->tm_wday; cale->end.tm_yday = today->tm_yday; cale->end.tm_isdst = today->tm_isdst; /* If the appointment has an end date, and today is past the end * date, because of this hack we would never be able to view * it anymore (or delete it). */ if (!(cale->repeatForever)) { if (compareTimesToDay(today, &(cale->repeatEnd))==1) { /* end date is before start date, illegal appointment */ /* make it legal, by only floating up to the end date */ memcpy(&(cale->begin), &(cale->repeatEnd), sizeof(struct tm)); memcpy(&(cale->end), &(cale->repeatEnd), sizeof(struct tm)); } } } } } return EXIT_SUCCESS; } #endif /* * If NULL is passed in for date, then all appointments will be returned. * modified, deleted and private, 0 for no, 1 for yes, 2 for use prefs */ int get_days_calendar_events2(CalendarEventList **calendar_event_list, struct tm *now, int modified, int deleted, int privates, int category, int *total_records) { GList *records; GList *temp_list; int recs_returned, num; struct CalendarEvent cale; CalendarEventList *temp_ce_list; long keep_modified, keep_deleted; int keep_priv; buf_rec *br; long char_set; long datebook_version; char *buf; pi_buffer_t RecordBuffer; int i; #ifdef ENABLE_DATEBK long use_db3_tags; time_t ltime; struct tm today; #endif struct Appointment appt; #ifdef ENABLE_DATEBK time(<ime); /* Copy into stable memory */ memcpy(&today, localtime(<ime), sizeof(struct tm)); get_pref(PREF_USE_DB3, &use_db3_tags, NULL); #endif jp_logf(JP_LOG_DEBUG, "get_days_calendar_events()\n"); if (modified==2) { get_pref(PREF_SHOW_MODIFIED, &keep_modified, NULL); } else { keep_modified = modified; } if (deleted==2) { get_pref(PREF_SHOW_DELETED, &keep_deleted, NULL); } else { keep_deleted = deleted; } if (privates==2) { keep_priv = show_privates(GET_PRIVATES); } else { keep_priv = privates; } get_pref(PREF_CHAR_SET, &char_set, NULL); *calendar_event_list=NULL; recs_returned = 0; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); if (datebook_version) { num = jp_read_DB_files("CalendarDB-PDat", &records); } else { num = jp_read_DB_files("DatebookDB", &records); } if (-1 == num) return 0; if (total_records) *total_records = num; for (temp_list = records; temp_list; temp_list = temp_list->next) { if (temp_list->data) { br=temp_list->data; } else { continue; } if (!br->buf) { continue; } if ( ((br->rt==DELETED_PALM_REC) && (!keep_deleted)) || ((br->rt==DELETED_PC_REC) && (!keep_deleted)) || ((br->rt==MODIFIED_PALM_REC) && (!keep_modified)) ) { continue; } if ((keep_priv != SHOW_PRIVATES) && (br->attrib & dlpRecAttrSecret)) { continue; } if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { continue; } cale.exception=NULL; cale.description=NULL; cale.note=NULL; cale.location=NULL; for (i=0; i< MAX_BLOBS; i++) { cale.blob[i]=NULL; } cale.tz=NULL; /* This is kind of a hack to set the pi_buf directly, but its faster */ RecordBuffer.data = br->buf; RecordBuffer.used = br->size; RecordBuffer.allocated = br->size; if (datebook_version) { if (unpack_CalendarEvent(&cale, &RecordBuffer, calendar_v1) == -1) { continue; } } else { if (unpack_Appointment(&appt, &RecordBuffer, calendar_v1) == -1) { continue; } copy_appointment_to_calendarEvent(&appt, &cale); free_Appointment(&appt); } //FIXME: verify db3 hack works with new calendar code #ifdef ENABLE_DATEBK if (use_db3_tags) { calendar_db3_hack_date(&cale, &today); } #endif if (now!=NULL) { if (! calendar_isApptOnDate(&cale, now)) { free_CalendarEvent(&cale); continue; } } if (cale.description) { buf = charset_p2newj(cale.description, -1, char_set); if (buf) { free(cale.description); cale.description = buf; } } if (cale.note) { buf = charset_p2newj(cale.note, -1, char_set); if (buf) { free(cale.note); cale.note = buf; } } if (cale.location) { buf = charset_p2newj(cale.location, -1, char_set); if (buf) { free(cale.location); cale.location = buf; } } temp_ce_list = malloc(sizeof(CalendarEventList)); if (!temp_ce_list) { jp_logf(JP_LOG_WARN, "get_days_calendar_events2(): %s\n", _("Out of memory")); free_CalendarEvent(&cale); break; } memcpy(&(temp_ce_list->mcale.cale), &cale, sizeof(struct CalendarEvent)); temp_ce_list->app_type = CALENDAR; temp_ce_list->mcale.rt = br->rt; temp_ce_list->mcale.attrib = br->attrib; temp_ce_list->mcale.unique_id = br->unique_id; temp_ce_list->next = *calendar_event_list; *calendar_event_list = temp_ce_list; recs_returned++; } jp_free_DB_records(&records); calendar_sort(calendar_event_list, calendar_compare); jp_logf(JP_LOG_DEBUG, "Leaving get_days_calendar_events()\n"); return recs_returned; } int pc_calendar_write(struct CalendarEvent *cale, PCRecType rt, unsigned char attrib, unsigned int *unique_id) { Appointment_t appt; pi_buffer_t *RecordBuffer; buf_rec br; long char_set; long datebook_version; int r; get_pref(PREF_DATEBOOK_VERSION, &datebook_version, NULL); get_pref(PREF_CHAR_SET, &char_set, NULL); if (char_set != CHAR_SET_LATIN1) { if (cale->description) charset_j2p(cale->description, strlen(cale->description)+1, char_set); if (cale->note) charset_j2p(cale->note, strlen(cale->note)+1, char_set); if (datebook_version) { if (cale->location) charset_j2p(cale->location, strlen(cale->location)+1, char_set); } } RecordBuffer = pi_buffer_new(0); if (datebook_version) { if (pack_CalendarEvent(cale, RecordBuffer, calendar_v1) == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_CalendarEvent %s\n", _("error")); return EXIT_FAILURE; } } else { copy_calendarEvent_to_appointment(cale, &appt); r = pack_Appointment(&appt, RecordBuffer, datebook_v1); free_Appointment(&appt); if (r == -1) { PRINT_FILE_LINE; jp_logf(JP_LOG_WARN, "pack_Appointment %s\n", _("error")); return EXIT_FAILURE; } } br.rt=rt; br.attrib = attrib; br.buf = RecordBuffer->data; br.size = RecordBuffer->used; /* Keep unique ID intact */ if ((unique_id) && (*unique_id!=0)) { br.unique_id = *unique_id; } else { br.unique_id = 0; } if (datebook_version) { jp_pc_write("CalendarDB-PDat", &br); } else { jp_pc_write("DatebookDB", &br); } if (unique_id) { *unique_id = br.unique_id; } pi_buffer_free(RecordBuffer); return EXIT_SUCCESS; } jpilot-1.8.2/otherconv.c0000664000175000017500000002167412320101153012117 00000000000000/******************************************************************************* * otherconv.c * A module of J-Pilot http://jpilot.org * * Copyright (C) 2004 by Amit Aronovitch * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* * General charset conversion library (using gconv) * Convert Palm <-> Unix: * Palm : Any - according to the "other-pda-charset" setup option. * Unix : UTF-8 */ /********************************* Includes ***********************************/ #include "config.h" #include #include #include #include #include #include "otherconv.h" #include "i18n.h" #include "prefs.h" #include "log.h" /********************************* Constants **********************************/ #define HOST_CS "UTF-8" #define min(a,b) (((a) < (b)) ? (a) : (b)) /* You can't do #ifndef __FUNCTION__ */ #if !defined(__GNUC__) && !defined(__IBMC__) #define __FUNCTION__ "" #endif #define OC_FREE_ICONV(conv) oc_free_iconv(__FUNCTION__, conv,#conv) /* #define OTHERCONV_DEBUG */ /******************************* Global vars **********************************/ static GIConv glob_topda = NULL; static GIConv glob_frompda = NULL; /****************************** Main Code *************************************/ /* * strnlen is not ANSI. * To avoid conflicting declarations, it is reimplemented as a thin * inline function over the library function strlen */ static inline size_t oc_strnlen(const char *s, size_t maxlen) { return min(strlen(s), maxlen); } static void oc_free_iconv(const char *funcname, GIConv conv, char *convname) { if (conv != NULL) { if (g_iconv_close(conv) != 0) { jp_logf(JP_LOG_WARN, _("%s: error exit from g_iconv_close(%s)\n"), funcname,convname); } } } /* * Convert char_set integer code to iconv charset text string */ static const char *char_set_to_text(int char_set) { switch (char_set) { case CHAR_SET_1250_UTF: return "CP1250"; case CHAR_SET_1253_UTF: return "CP1253"; case CHAR_SET_ISO8859_2_UTF: return "ISO8859-2"; case CHAR_SET_KOI8_R_UTF: return "KOI8-R"; case CHAR_SET_1251_UTF: return "CP1251"; case CHAR_SET_GBK_UTF: return "GBK"; case CHAR_SET_BIG5_UTF: return "BIG-5"; case CHAR_SET_SJIS_UTF: return "SJIS"; case CHAR_SET_1255_UTF: return "CP1255"; case CHAR_SET_949_UTF: return "CP949"; case CHAR_SET_1252_UTF: default: return "CP1252"; } } /* * Module initialization function * Call this before any conversion routine. * Can also be used if you want to reread the 'charset' option * * Returns 0 if OK, -1 if iconv could not be initialized * (probably because of bad charset string) */ int otherconv_init(void) { long char_set; get_pref(PREF_CHAR_SET, &char_set, NULL); /* (re)open the "to" iconv */ OC_FREE_ICONV(glob_topda); glob_topda = g_iconv_open(char_set_to_text(char_set), HOST_CS); if (glob_topda == (GIConv)(-1)) return EXIT_FAILURE; /* (re)open the "from" iconv */ OC_FREE_ICONV(glob_frompda); glob_frompda = g_iconv_open(HOST_CS, char_set_to_text(char_set)); if (glob_frompda == (GIConv)(-1)) { OC_FREE_ICONV(glob_topda); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* * Module finalization function * closes the iconvs */ void otherconv_free(void) { OC_FREE_ICONV(glob_topda); OC_FREE_ICONV(glob_frompda); } /* * Conversion to UTF using g_convert_with_iconv * A new buffer is now allocated and the old one remains unchanged */ char *other_to_UTF(const char *buf, int buf_len) { size_t rc; char *outbuf; gsize bytes_read; GError *err = NULL; size_t str_len; #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s reset iconv state...\n", __FILE__, __FUNCTION__); #endif rc = g_iconv(glob_frompda, NULL, NULL, NULL, NULL); #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s converting [%s]\n", __FILE__, __FUNCTION__, buf); #endif if (buf_len == -1) { str_len = -1; } else { str_len = oc_strnlen(buf, buf_len-1); // -1 leaves room for \0 terminator } outbuf = (char *)g_convert_with_iconv((gchar *)buf, str_len, glob_frompda, &bytes_read, NULL, &err); if (err != NULL) { char c; char *head, *tail; int outbuf_len; char *tmp_buf = (char *)buf; static int call_depth = 0; printf("ERROR HAPPENED\n"); if (0 == call_depth) jp_logf(JP_LOG_WARN, _("%s:%s g_convert_with_iconv error: %s, buff: %s\n"), __FILE__, __FUNCTION__, err ? err->message : _("last char truncated"), buf); if (err != NULL) g_error_free(err); else g_free(outbuf); if (buf_len == -1) { buf_len = strlen(buf); } /* convert the head, skip the problematic char, convert the tail */ c = tmp_buf[bytes_read]; tmp_buf[bytes_read] = '\0'; head = g_convert_with_iconv(tmp_buf, oc_strnlen(tmp_buf, buf_len), glob_frompda, &bytes_read, NULL, NULL); tmp_buf[bytes_read] = c; call_depth++; tail = other_to_UTF(tmp_buf + bytes_read +1, buf_len - bytes_read - 1); call_depth--; outbuf_len = strlen(head) +4 + strlen(tail)+1; outbuf = g_malloc(outbuf_len); g_snprintf(outbuf, outbuf_len, "%s\\%02X%s", head, (unsigned char)c, tail); g_free(head); g_free(tail); } #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s converted to [%s]\n", __FILE__, __FUNCTION__, outbuf); #endif /* * Note: outbuf was allocated by glib, so should be freed with g_free * To be 100% safe, I should have done strncpy to a new malloc-allocated * string. (at least under an 'if (!g_mem_is_system_malloc())' test) * * However, unless you replace the default GMemVTable, freeing with C free * should be fine so I decided this is not worth the overhead. * -- Amit Aronovitch */ return outbuf; } /* * Conversion to pda encoding using g_iconv */ void UTF_to_other(char *const buf, int buf_len) { gsize inleft,outleft; gchar *inptr, *outptr; size_t rc; char *errstr = NULL; char buf_out[1000]; char *buf_out_ptr = NULL; int failed = FALSE; #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s reset iconv state...\n", __FILE__, __FUNCTION__); #endif rc = g_iconv(glob_topda, NULL, NULL, NULL, NULL); #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s converting [%s]\n", __FILE__, __FUNCTION__, buf); #endif inleft = oc_strnlen(buf, buf_len); outleft = buf_len-1; inptr = buf; /* Most strings can be converted without recourse to malloc */ if (buf_len > sizeof(buf_out)) { buf_out_ptr = malloc(buf_len); if (NULL == buf_out_ptr) { jp_logf(JP_LOG_WARN, _("UTF_to_other: %s\n"), _("Out of memory")); return; } outptr = buf_out_ptr; } else { outptr = buf_out; } rc = g_iconv(glob_topda, &inptr, &inleft, &outptr, &outleft); *outptr = 0; /* NULL terminate whatever fraction was converted */ if ((size_t)(-1) == rc) { switch (errno) { case EILSEQ: errstr = _("iconv: unconvertible sequence at place %d in \'%s\'\n"); failed = TRUE; break; case EINVAL: errstr = _("iconv: incomplete UTF-8 sequence at place %d in \'%s\'\n"); break; case E2BIG: errstr = _("iconv: buffer filled. stopped at place %d in \'%s\'\n"); break; default: errstr = _("iconv: unexpected error at place %d in \'%s\'\n"); } } if (buf_out_ptr) { g_strlcpy(buf, buf_out_ptr, buf_len); free(buf_out_ptr); } else { g_strlcpy(buf, buf_out, buf_len); } if ((size_t)(-1) == rc) jp_logf(JP_LOG_WARN, errstr, inptr - buf, buf); if (failed) { /* convert the end of the string */ int l = inptr - buf; buf[l] = '?'; UTF_to_other(inptr+1, buf_len-l-1); memmove(buf+l+1, inptr+1, buf_len-l-1); } #ifdef OTHERCONV_DEBUG jp_logf(JP_LOG_DEBUG, "%s:%s converted to [%s]\n", __FILE__, __FUNCTION__, buf); #endif } jpilot-1.8.2/todo.h0000664000175000017500000000370212340261240011060 00000000000000/******************************************************************************* * todo.h * A module of J-Pilot http://jpilot.org * * Copyright (C) 1999-2014 by Judd Montgomery * * 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; version 2 of the License. * * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __TODO_H__ #define __TODO_H__ #include #include "utils.h" #define MAX_TODO_DESC_LEN 256 #define MAX_TODO_NOTE_LEN 4000 #define TODO_CHECK_COLUMN 0 #define TODO_PRIORITY_COLUMN 1 #define TODO_NOTE_COLUMN 2 #define TODO_DATE_COLUMN 3 #define TODO_TEXT_COLUMN 4 void free_ToDoList(ToDoList **todo); int get_todos(ToDoList **todo_list, int sort_order); int get_todos2(ToDoList **todo_list, int sort_order, int modified, int deleted, int privates, int completed, int category); int get_todo_app_info(struct ToDoAppInfo *ai); int pc_todo_write(struct ToDo *todo, PCRecType rt, unsigned char attrib, unsigned int *unique_id); int todo_print(void); int todo_import(GtkWidget *window); int todo_export(GtkWidget *window); /* Exported for datebook use only. Don't use these */ void todo_update_clist(GtkWidget *clist, GtkWidget *tooltip_widget, ToDoList **todo_list, int category, int main); void todo_clist_clear(GtkCList *clist); #endif jpilot-1.8.2/jpilotrc.default0000664000175000017500000000504312320101153013130 00000000000000################################################################################ # Syntax guide for GTK color resource file # # style [= ] # { #