Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 163983 Details for
Bug 225673
sys-apps/gdivelog (new package)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
fixes some bugs in gdivelog 0.5.1
gdivelog-0.5.1-1.patch (text/plain), 10.47 KB, created by
Werner Macho
on 2008-08-28 12:16:40 UTC
(
hide
)
Description:
fixes some bugs in gdivelog 0.5.1
Filename:
MIME Type:
Creator:
Werner Macho
Created:
2008-08-28 12:16:40 UTC
Size:
10.47 KB
patch
obsolete
>diff -ru gdivelog-0.5.1/src/callbacks.c gdivelog-0.5.1.patched/src/callbacks.c >--- gdivelog-0.5.1/src/callbacks.c 2005-09-05 17:08:45.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/callbacks.c 2008-05-26 12:24:07.000000000 -0700 >@@ -127,7 +127,8 @@ > gdk_pixbuf_unref(about_dialog_logo_pixbuf); > } > gtk_window_set_transient_for(GTK_WINDOW(about_dialog),GTK_WINDOW(main_window)); >- gtk_widget_show(GTK_WIDGET(about_dialog)); >+ gtk_dialog_run(GTK_DIALOG(about_dialog)); >+ gtk_widget_destroy(GTK_WIDGET(about_dialog)); > } > > void on_toolbar_open_clicked (GtkToolButton * toolbutton, gpointer user_data) >diff -ru gdivelog-0.5.1/src/db_main.c gdivelog-0.5.1.patched/src/db_main.c >--- gdivelog-0.5.1/src/db_main.c 2005-09-19 15:51:45.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/db_main.c 2008-05-28 09:45:18.000000000 -0700 >@@ -56,6 +56,67 @@ > return db_saved_value; > } > >+gint db_get_schema_version(sqlite3 *db) { >+ gchar *sqlErrMsg=NULL; >+ gint schema_version=0; >+ gint rc=sqlite3_exec(db,"SELECT gdivelog_schema_version FROM Preferences LIMIT 1",(gpointer)db_generic_callback_long,&schema_version,&sqlErrMsg); >+ if(rc!=SQLITE_OK) { >+ g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR,"Error in db_needs_upgrade()\nCode=%d\nError Message='%s'\n",rc,sqlErrMsg); >+ sqlite3_free(sqlErrMsg); >+ schema_version = 0; >+ } >+ >+ return schema_version; >+} >+ >+gboolean db_set_schema_version(sqlite3 *db,gint version) { >+ gchar *sqlErrMsg = NULL; >+ char *sqlcmd=sqlite3_mprintf("UPDATE Preferences SET gdivelog_schema_version = '%d';", version); >+ if(sqlcmd==NULL) { >+ return FALSE; >+ } >+ gint rc=sqlite3_exec(db,sqlcmd,NULL,0,&sqlErrMsg); >+ if(rc!=SQLITE_OK) { >+ g_log(G_LOG_DOMAIN,G_LOG_LEVEL_CRITICAL,"Error in db_set_schema_version()\nCode=%d\nQuery='%s'\nError message='%s'\n",rc,sqlcmd,sqlErrMsg); >+ sqlite3_free(sqlErrMsg); >+ sqlite3_free(sqlcmd); >+ return FALSE; >+ } >+ sqlite3_free(sqlcmd); >+ return TRUE; >+} >+ >+gboolean db_needs_upgrade(sqlite3 *db) { >+ gint schema_version = db_get_schema_version(db); >+ return (schema_version!=0) && (schema_version<atoi(GDIVELOG_SCHEMA_VERSION)); >+} >+ >+gboolean db_run_upgrade_command(sqlite3 *db,const char *sqlcmd) { >+ gchar *sqlErrMsg = NULL; >+ gint rc=sqlite3_exec(db,sqlcmd,NULL,0,&sqlErrMsg); >+ if(rc!=SQLITE_OK) { >+ g_log(G_LOG_DOMAIN,G_LOG_LEVEL_CRITICAL,"Error in db_run_upgrade_command()\nCode=%d\nQuery='%s'\nError message='%s'\n",rc,sqlcmd,sqlErrMsg); >+ sqlite3_free(sqlErrMsg); >+ return FALSE; >+ } >+ return TRUE; >+} >+ >+gboolean db_upgrade(sqlite3 *db) { >+ if(db_get_schema_version(db)==1) { >+ gchar sqlcmd[] = >+ "DROP TRIGGER Dive_Insert;" >+ "CREATE TRIGGER Dive_Insert AFTER INSERT ON Dive BEGIN UPDATE Dive SET dive_number=(SELECT CASE WHEN (SELECT dive_number FROM Dive WHERE dive_datetime <= NEW.dive_datetime ORDER BY dive_datetime DESC LIMIT 1) IS NULL THEN (SELECT CASE WHEN (SELECT MIN(dive_number) FROM Dive WHERE dive_number > 0) > 1 THEN (SELECT MIN(dive_number)-1 FROM Dive WHERE dive_number > 1) ELSE 1 END) ELSE (SELECT MAX(dive_number)+1 FROM Dive WHERE dive_datetime <= NEW.dive_datetime AND dive_number > 0 ORDER BY dive_datetime DESC LIMIT 1) END) WHERE dive_id=NEW.dive_id;UPDATE Dive SET dive_number=dive_number+1 WHERE dive_datetime > NEW.dive_datetime AND (SELECT CASE WHEN (SELECT dive_number FROM Dive WHERE dive_datetime < NEW.dive_datetime ORDER BY dive_datetime DESC LIMIT 1) IS NULL THEN (SELECT CASE WHEN (SELECT MIN(dive_number) FROM Dive WHERE dive_number > 0) > 1 THEN dive_number < 0 ELSE dive_number > 0 END) ELSE dive_number > 0 END); END;" >+ "DROP TRIGGER Dive_Update;" >+ "CREATE TRIGGER Dive_Update AFTER UPDATE OF dive_datetime ON Dive BEGIN UPDATE Dive SET dive_number=(SELECT CASE WHEN dive_id = NEW.dive_id THEN 1+(SELECT COUNT(*) FROM Dive WHERE dive_datetime < NEW.dive_datetime) WHEN NEW.dive_datetime > OLD.dive_datetime AND dive_datetime <= NEW.dive_datetime AND dive_datetime >= OLD.dive_datetime THEN (SELECT CASE WHEN dive_number-1 < OLD.dive_number THEN dive_number ELSE dive_number-1 END) WHEN NEW.dive_datetime < OLD.dive_datetime AND dive_datetime <= OLD.dive_datetime AND dive_datetime >= NEW.dive_datetime THEN (SELECT CASE WHEN dive_number+1 > OLD.dive_number THEN dive_number ELSE dive_number+1 END) ELSE dive_number END) WHERE (SELECT CASE WHEN NEW.dive_datetime > OLD.dive_datetime THEN dive_datetime >= OLD.dive_datetime AND dive_datetime <= NEW.dive_datetime WHEN NEW.dive_datetime < OLD.dive_datetime THEN dive_datetime <= OLD.dive_datetime AND dive_datetime >= NEW.dive_datetime END); END;" >+ ; >+ if(!db_run_upgrade_command(db,sqlcmd) || !db_set_schema_version(db,2)) { >+ return FALSE; >+ } >+ } >+ return TRUE; >+} >+ > gboolean db_create_schema(sqlite3 *db) > { > gint rc; >@@ -198,6 +259,14 @@ > rval=FALSE; > } > else { >+ if(db_needs_upgrade(logbook_db)) { >+ if(!db_upgrade(logbook_db)) { >+ g_log (G_LOG_DOMAIN,G_LOG_LEVEL_CRITICAL,"Cannot upgrade database schema\n"); >+ sqlite3_close(logbook_db); >+ logbook_db=NULL; >+ rval=FALSE; >+ } >+ } > db_cache_sites (); > preferences_load_template_dive_number(); > } >diff -ru gdivelog-0.5.1/src/defines.h gdivelog-0.5.1.patched/src/defines.h >--- gdivelog-0.5.1/src/defines.h 2005-09-20 08:15:28.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/defines.h 2008-05-26 17:07:16.000000000 -0700 >@@ -30,7 +30,7 @@ > #define LOGBOOK_APP_DATA_PREFERENCES "/.gdivelog/preferences" > #define LOGBOOK_APP_DATA_DIR "/.gdivelog" > >-#define GDIVELOG_SCHEMA_VERSION "1.0" >+#define GDIVELOG_SCHEMA_VERSION "2" > > typedef struct > { >diff -ru gdivelog-0.5.1/src/dive_db.c gdivelog-0.5.1.patched/src/dive_db.c >--- gdivelog-0.5.1/src/dive_db.c 2005-09-20 08:15:28.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/dive_db.c 2008-05-26 13:23:36.000000000 -0700 >@@ -131,9 +131,9 @@ > gint new_dive_id=0; > > sqlcmd=sqlite3_mprintf( >- "INSERT INTO Dive (dive_datetime,dive_duration,dive_maxdepth,dive_mintemp,dive_maxtemp,dive_notes,site_id,dive_visibility,dive_weight) VALUES ('%s',%lu,%f,%f,%f,'%q',%d,%f,%f)", >- dive_datetime, dive_duration,dive_maxdepth,dive_mintemp, >- dive_maxtemp,dive_notes,site_id,dive_visibility,dive_weight >+ "INSERT INTO Dive (dive_datetime,dive_duration,dive_maxdepth,dive_mintemp,dive_maxtemp,dive_notes,site_id,dive_visibility,dive_weight) VALUES ('%s',%lu,%f,%f,%f,'%q',%d,%f,%f)", >+ dive_datetime, dive_duration,dive_maxdepth,dive_mintemp, >+ dive_maxtemp,dive_notes,site_id,dive_visibility,dive_weight > ); > if(handle_transactions) db_begin_transaction(); > rc=sqlite3_exec (logbook_db, sqlcmd, NULL, 0, &sqlErrMsg); >diff -ru gdivelog-0.5.1/src/profile_gui.c gdivelog-0.5.1.patched/src/profile_gui.c >--- gdivelog-0.5.1/src/profile_gui.c 2005-09-20 08:15:28.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/profile_gui.c 2008-05-27 22:18:52.000000000 -0700 >@@ -96,7 +96,6 @@ > timestr=format_field_duration(time); > if(depth>preferences.split_dive_limit || !time || time==profile_data.duration) gtk_widget_set_sensitive(GTK_WIDGET(widget_split_dive_btn),FALSE); > else gtk_widget_set_sensitive(GTK_WIDGET(widget_split_dive_btn),TRUE); >- if(preferences.depth_unit != 'm') depth=convert_meters_to_feet(depth); > depthstr=format_field_depth(depth); > if(preferences.temperature_unit!='c') temperature=convert_celsius_to_farenheit(temperature); > temperaturestr=format_field_temperature(temperature); >diff -ru gdivelog-0.5.1/src/renumber_db.c gdivelog-0.5.1.patched/src/renumber_db.c >--- gdivelog-0.5.1/src/renumber_db.c 2005-09-05 04:11:01.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/renumber_db.c 2008-05-28 09:46:58.000000000 -0700 >@@ -28,29 +28,48 @@ > > extern sqlite3 *logbook_db; > >+static gint renumber_callback(GList **list,gint argc,gchar **argv, gchar **azColName) >+{ >+ (*list) = g_list_prepend(*list,GINT_TO_POINTER(atoi(argv[0]))); >+ return 0; >+} >+ >+gboolean renumber_db_dive(gint dive, gint number) >+{ >+ gint rc; >+ gboolean rval=TRUE; >+ gchar *sqlErrMsg=NULL,*sqlcmd=sqlite3_mprintf("UPDATE Dive SET dive_number=%d WHERE dive_id=%d",number,dive); >+ >+ rc=sqlite3_exec(logbook_db,sqlcmd,NULL,0,&sqlErrMsg); >+ if(rc!=SQLITE_OK) { >+ g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR,"Error in renumber_db_renumber_dives()\nCode=%d\nError Message='%s'\n",rc,sqlErrMsg); >+ sqlite3_free(sqlErrMsg); >+ rval=FALSE; >+ } >+ else db_not_saved(); >+ sqlite3_free(sqlcmd); >+ return rval; >+} >+ > gboolean renumber_db_renumber_dives(gint initial_dive_number) > { > gint rc; > glong min_dive_number; > gchar *sqlErrMsg=NULL,*sqlcmd=NULL; > gboolean rval=TRUE; >+ GList *list = g_list_alloc(); > >- rc=sqlite3_exec(logbook_db,"SELECT MIN(dive_number) FROM Dive",(gpointer)db_generic_callback_long,&min_dive_number,&sqlErrMsg); >+ rc=sqlite3_exec(logbook_db,"SELECT dive_id FROM Dive ORDER BY dive_datetime DESC;",(gpointer)renumber_callback,&list,&sqlErrMsg); > if(rc!=SQLITE_OK) { > g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR,"Error in renumber_db_renumber_dives()\nCode=%d\nError Message='%s'\n",rc,sqlErrMsg); > sqlite3_free(sqlErrMsg); > rval=FALSE; > } > else { >- if(min_dive_number!=initial_dive_number) { >- sqlcmd=sqlite3_mprintf("UPDATE Dive SET dive_number=dive_number+%d",initial_dive_number-min_dive_number); >- sqlite3_exec(logbook_db,sqlcmd,NULL,0,&sqlErrMsg); >- if(rc!=SQLITE_OK) { >- g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR,"Error in renumber_db_renumber_dives()\nCode=%d\nError Message='%s'\n",rc,sqlErrMsg); >- sqlite3_free(sqlErrMsg); >- rval=FALSE; >- } >- else db_not_saved(); >+ GList *it=g_list_first(list); >+ while(it){ >+ if(!renumber_db_dive(GPOINTER_TO_INT(it->data),initial_dive_number++)) rval=FALSE; >+ it=g_list_next(it); > } > } > return rval; >diff -ru gdivelog-0.5.1/src/site_gui.c gdivelog-0.5.1.patched/src/site_gui.c >--- gdivelog-0.5.1/src/site_gui.c 2005-09-12 05:25:17.000000000 -0700 >+++ gdivelog-0.5.1.patched/src/site_gui.c 2008-05-28 09:39:12.000000000 -0700 >@@ -495,14 +495,15 @@ > gint site_parent_id; > GtkTreeModel *model; > GtkTreeIter iter; >- >+ > model=gtk_combo_box_get_model(combobox); >- gtk_combo_box_get_active_iter(combobox,&iter); >- gtk_tree_model_get(model,&iter, >- SITEPARENT_COL_SITE_ID, >- &site_parent_id, >- -1 >- ); >- if((site_parent_id==current_site_id)||site_db_isancestor(site_parent_id,current_site_id)) >- site_set_save_sensitive(FALSE); >+ if(gtk_combo_box_get_active_iter(combobox,&iter)) { >+ gtk_tree_model_get(model,&iter, >+ SITEPARENT_COL_SITE_ID, >+ &site_parent_id, >+ -1 >+ ); >+ if((site_parent_id==current_site_id)||site_db_isancestor(site_parent_id,current_site_id)) >+ site_set_save_sensitive(FALSE); >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 225673
:
156127
|
156143
| 163983 |
163985