gtkmeat 0.5.5

This commit is contained in:
tengel 2024-03-20 09:25:47 -05:00
parent 96f4e1a07f
commit e3e6450c9c
7 changed files with 57 additions and 24 deletions

View file

@ -1,3 +1,11 @@
Mon Jan 11 1999 v0.5.5 Troy Engel <tengel@sonic.net>
* replaced non ANSI C func strsep with strtok (Sun Solaris)
* replaced getenv("HOME") with glib equiv
* functions made static
* reworked g_malloc/g_free code, probably lost some mem leaks :)
* void main -> int main
* fixed RC buffer problem (darn \0)
Sun Jan 03 1999 Troy Engel <tengel@sonic.net> Sun Jan 03 1999 Troy Engel <tengel@sonic.net>
* versioned to 0.5.4 * versioned to 0.5.4
* initial public release * initial public release

4
NEWS
View file

@ -1,3 +1 @@
Version 0.5.4 See ChangeLog
* initial public release

4
README
View file

@ -3,7 +3,7 @@ gtkMeat - freshmeat new submissions ticker
http://www.sonic.net/~tengel/gtkmeat/ http://www.sonic.net/~tengel/gtkmeat/
----------------------------------------- -----------------------------------------
01/03/99, v0.5.4 01/11/99, v0.5.5
General General
@ -17,7 +17,7 @@ gtkMeat requires Gtk+ (http://www.gtk.org) and curl
file retrieval, respectively. Additionally, if you want to file retrieval, respectively. Additionally, if you want to
browse a news article from within gtkMeat you'll need some browse a news article from within gtkMeat you'll need some
sort of web browser. Currently it is working just fine with sort of web browser. Currently it is working just fine with
Gtk 1.1.3 (Windows) Gtk 1.1.9 (*nix) and curl 5.3 (both). Gtk 1.1.3 (Windows) Gtk 1.1.12 (*nix) and curl 5.4 (both).
If you are on Windows, the Gtk+ version which has been used is If you are on Windows, the Gtk+ version which has been used is
from Tor Lillqvist; he also ports Gdk and GIMP. If you don't from Tor Lillqvist; he also ports Gdk and GIMP. If you don't

2
aclocal.m4 vendored
View file

@ -160,7 +160,7 @@ AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run
ac_save_CFLAGS="$CFLAGS" ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS" CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS" LIBS="$GTK_LIBS $LIBS"
dnl dnl
dnl Now check if the installed GTK is sufficiently new. (Also sanity dnl Now check if the installed GTK is sufficiently new. (Also sanity
dnl checks the results of gtk-config to some extent dnl checks the results of gtk-config to some extent

4
configure vendored
View file

@ -526,7 +526,7 @@ else
fi fi
GTKMEAT_VERSION=0.5.4 GTKMEAT_VERSION=0.5.5
AUTOMAKE_OPTIONS=no-dependencies AUTOMAKE_OPTIONS=no-dependencies
VERSION=$GTKMEAT_VERSION VERSION=$GTKMEAT_VERSION
@ -1097,7 +1097,7 @@ echo "configure:1084: checking for GTK - version >= $min_gtk_version" >&5
ac_save_CFLAGS="$CFLAGS" ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS" CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS" LIBS="$GTK_LIBS $LIBS"
rm -f conf.gtktest rm -f conf.gtktest
if test "$cross_compiling" = yes; then if test "$cross_compiling" = yes; then
echo $ac_n "cross compiling; assumed OK... $ac_c" echo $ac_n "cross compiling; assumed OK... $ac_c"

View file

@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl $Id$ dnl $Id$
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
AC_INIT(gtkmeat.c) AC_INIT(gtkmeat.c)
GTKMEAT_VERSION=0.5.4 GTKMEAT_VERSION=0.5.5
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl for automake: dnl for automake:

View file

@ -48,7 +48,7 @@
#define MSG_RETR_ERR "Error retrieving recentnews.txt!" #define MSG_RETR_ERR "Error retrieving recentnews.txt!"
#define MSG_LAUNCH "Launching web browser..." #define MSG_LAUNCH "Launching web browser..."
#define MSG_LAUNCH_ERR "Error launching browser!" #define MSG_LAUNCH_ERR "Error launching browser!"
#define MSG_IDLE "Status: Idle (gtkMeat 0.5.4)" #define MSG_IDLE "Status: Idle (gtkMeat 0.5.5)"
/* read from RC file */ /* read from RC file */
gint refresh_timeout; gint refresh_timeout;
@ -62,6 +62,7 @@ gint num_fields;
GtkWidget *status; GtkWidget *status;
/* retrieves a line from a linefeed delimited textfile */ /* retrieves a line from a linefeed delimited textfile */
static
gchar *app_getLine(FILE *file) { gchar *app_getLine(FILE *file) {
char *tmp, in; char *tmp, in;
int cnt = 0, retIn; int cnt = 0, retIn;
@ -94,7 +95,8 @@ gchar *app_getLine(FILE *file) {
} }
} }
/* loads ultramode.txt into our clist */ /* loads recentnews.txt into our clist */
static
BOOL app_loadFile(GtkWidget *list, const gchar *fname) { BOOL app_loadFile(GtkWidget *list, const gchar *fname) {
gchar *line; gchar *line;
gchar *article[2], *link; gchar *article[2], *link;
@ -115,9 +117,13 @@ BOOL app_loadFile(GtkWidget *list, const gchar *fname) {
link = NULL; link = NULL;
rewind(fHnd); rewind(fHnd);
while (line) { while (line) {
gboolean bGotit = FALSE;
if (line) /* should only happen once from above */
g_free(line);
for (i = 0 ; i<num_fields; i++) { for (i = 0 ; i<num_fields; i++) {
line = app_getLine(fHnd); line = app_getLine(fHnd);
if (line) { if (line) {
bGotit = TRUE;
switch (i) { switch (i) {
case 0: /* title */ case 0: /* title */
article[0] = line; article[0] = line;
@ -128,13 +134,20 @@ BOOL app_loadFile(GtkWidget *list, const gchar *fname) {
case 2: /* link */ case 2: /* link */
link = line; link = line;
break; break;
default: /* unused */
g_free(line);
break;
} }
} }
} }
if (line) { if (bGotit) {
int index; gint index;
index = gtk_clist_append(GTK_CLIST(list), article); index = gtk_clist_append(GTK_CLIST(list), article);
gtk_clist_set_row_data(GTK_CLIST(list), index, link); gtk_clist_set_row_data(GTK_CLIST(list), index, link);
for (i=0; i<3; i++) {
if (article[i])
g_free(article[i]);
}
} }
} }
fclose(fHnd); fclose(fHnd);
@ -144,6 +157,7 @@ BOOL app_loadFile(GtkWidget *list, const gchar *fname) {
} }
/* launches a given app */ /* launches a given app */
static
BOOL app_startApp(const gchar *cmd, BOOL bWait, WORD wShowState) { BOOL app_startApp(const gchar *cmd, BOOL bWait, WORD wShowState) {
#ifndef WIN32 #ifndef WIN32
char **args, *work, *twrk; char **args, *work, *twrk;
@ -172,17 +186,16 @@ BOOL app_startApp(const gchar *cmd, BOOL bWait, WORD wShowState) {
} else { } else {
work = g_malloc(sizeof(char) * (len + 1)); work = g_malloc(sizeof(char) * (len + 1));
strcpy(work, cmd); strcpy(work, cmd);
twrk = (char *) strsep(&work, " "); twrk = (char*)strtok(work, " ");
args[0] = twrk; args[0] = twrk;
cnt = 1; cnt = 1;
while (twrk) { while (twrk) {
twrk = (char *) strsep(&work, " "); twrk = (char*)strtok(NULL, " ");
args[cnt] = twrk; args[cnt] = twrk;
cnt++; cnt++;
} }
args[cnt] = work; args[cnt] = work;
} }
/* TODO: wait for curl to finish on unix */
execvp(args[0], args); execvp(args[0], args);
} else { } else {
_exit(0); _exit(0);
@ -222,6 +235,7 @@ BOOL app_startApp(const gchar *cmd, BOOL bWait, WORD wShowState) {
#endif /* WIN32 */ #endif /* WIN32 */
} }
static
BOOL app_getFile(const gchar *fname) { BOOL app_getFile(const gchar *fname) {
gchar cmd[MAX_BUFF]; gchar cmd[MAX_BUFF];
sprintf(cmd, curl_cmd, fname); sprintf(cmd, curl_cmd, fname);
@ -230,6 +244,7 @@ BOOL app_getFile(const gchar *fname) {
return TRUE; return TRUE;
} }
static
BOOL app_isZeroByte(const gchar *fname) { BOOL app_isZeroByte(const gchar *fname) {
FILE *fHnd; FILE *fHnd;
gint ch = 0; gint ch = 0;
@ -246,17 +261,20 @@ BOOL app_isZeroByte(const gchar *fname) {
return FALSE; return FALSE;
} }
static
gint app_timer_idle(gpointer data) { gint app_timer_idle(gpointer data) {
gtk_label_set(GTK_LABEL(status), MSG_IDLE); gtk_label_set(GTK_LABEL(status), MSG_IDLE);
return 0; return 0;
} }
static
gint app_exit(GtkWidget *widget, GdkEvent *event, gpointer data) { gint app_exit(GtkWidget *widget, GdkEvent *event, gpointer data) {
gtk_main_quit(); gtk_main_quit();
exit(0); exit(0);
return FALSE; return FALSE;
} }
static
gint app_timer_refresh(GtkWidget *list) { gint app_timer_refresh(GtkWidget *list) {
gchar *home_env, *fname; gchar *home_env, *fname;
gint retval; gint retval;
@ -264,7 +282,7 @@ gint app_timer_refresh(GtkWidget *list) {
gchar mypath[MAX_BUFF]; gchar mypath[MAX_BUFF];
#endif #endif
home_env = getenv("HOME"); home_env = g_get_home_dir();
#ifdef WIN32 /* no HOME dir */ #ifdef WIN32 /* no HOME dir */
if (home_env == NULL) { if (home_env == NULL) {
gchar *cutme; gchar *cutme;
@ -274,7 +292,7 @@ gint app_timer_refresh(GtkWidget *list) {
home_env = mypath; home_env = mypath;
} }
#endif #endif
fname = g_malloc(sizeof(char) * (strlen(home_env) + 15)); fname = g_malloc(sizeof(gchar) * (strlen(home_env) + 16));
strcpy(fname, home_env); strcpy(fname, home_env);
strcat(fname, DIR_CHAR); strcat(fname, DIR_CHAR);
strcat(fname, "recentnews.tmp"); strcat(fname, "recentnews.tmp");
@ -304,11 +322,13 @@ gint app_timer_refresh(GtkWidget *list) {
return retval; return retval;
} }
static
gint app_refresh(GtkWidget *widget, GtkWidget *list) { gint app_refresh(GtkWidget *widget, GtkWidget *list) {
return app_timer_refresh(list); return app_timer_refresh(list);
} }
/* launch our article */ /* launch our article */
static
void app_article_browse(GtkWidget *widget, gpointer data) { void app_article_browse(GtkWidget *widget, gpointer data) {
gint rerr; gint rerr;
struct stat buff; struct stat buff;
@ -317,7 +337,7 @@ void app_article_browse(GtkWidget *widget, gpointer data) {
url = gtk_clist_get_row_data(GTK_CLIST(data), GTK_CLIST(data)->focus_row); url = gtk_clist_get_row_data(GTK_CLIST(data), GTK_CLIST(data)->focus_row);
#ifndef WIN32 #ifndef WIN32
home = getenv("HOME"); home = g_get_home_dir();
fname = g_malloc(sizeof(gchar) * (strlen(home) + 16)); fname = g_malloc(sizeof(gchar) * (strlen(home) + 16));
strcpy(fname, home); strcpy(fname, home);
strcat(fname, "/.netscape/lock"); strcat(fname, "/.netscape/lock");
@ -337,6 +357,7 @@ void app_article_browse(GtkWidget *widget, gpointer data) {
} }
/* sorting */ /* sorting */
static
void app_click_column(GtkCList *clist, gint column, gpointer data) { void app_click_column(GtkCList *clist, gint column, gpointer data) {
if (column == clist->sort_column) { if (column == clist->sort_column) {
clist->sort_type = (clist->sort_type == GTK_SORT_ASCENDING) ? clist->sort_type = (clist->sort_type == GTK_SORT_ASCENDING) ?
@ -347,12 +368,14 @@ void app_click_column(GtkCList *clist, gint column, gpointer data) {
gtk_clist_sort(clist); gtk_clist_sort(clist);
} }
static
BOOL app_parse_rc() { BOOL app_parse_rc() {
gchar *home_env, *fname; gchar *home_env, *fname;
gint retval; gint retval;
home_env = getenv("HOME"); home_env = g_get_home_dir();
fname = g_malloc(sizeof(gchar) * (strlen(home_env) + 15)); /* /home/foobar + /. + myrc + \0 */
fname = g_malloc(sizeof(gchar) * (strlen(home_env)+2+strlen(APP_RC)+1));
strcpy(fname, home_env); strcpy(fname, home_env);
strcat(fname, DIR_CHAR); strcat(fname, DIR_CHAR);
strcat(fname, DOT_CHAR); strcat(fname, DOT_CHAR);
@ -366,10 +389,12 @@ BOOL app_parse_rc() {
#ifdef WIN32 #ifdef WIN32
gchar tmp[MAX_BUFF]; gchar tmp[MAX_BUFF];
GetWindowsDirectory(tmp, sizeof(tmp)); GetWindowsDirectory(tmp, sizeof(tmp));
fname = g_malloc(sizeof(gchar) * (sizeof(tmp) + 1 + sizeof(APP_RC))); /* c:\windows + \ + myrc + \0 */
fname = g_malloc(sizeof(gchar) * (sizeof(tmp) + 1 + sizeof(APP_RC) + 1));
strcpy(fname, tmp); strcpy(fname, tmp);
#else #else
fname = g_malloc(sizeof(gchar) * (4 + 1 + strlen(APP_RC))); /* /etc + / + myrc + \0 */
fname = g_malloc(sizeof(gchar) * (4 + 1 + strlen(APP_RC) + 1));
strcpy(fname, "/etc"); strcpy(fname, "/etc");
#endif #endif
strcat(fname, DIR_CHAR); strcat(fname, DIR_CHAR);
@ -389,6 +414,7 @@ BOOL app_parse_rc() {
return retval; return retval;
} }
static
void app_window() { void app_window() {
GtkWidget *window, *vbox, *clist, *scrolled_win, *hbox, *but; GtkWidget *window, *vbox, *clist, *scrolled_win, *hbox, *but;
gchar *titles[2] = {"Title", "Date"}; gchar *titles[2] = {"Title", "Date"};
@ -461,7 +487,7 @@ void app_window() {
#ifdef WIN32 #ifdef WIN32
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd) { int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd) {
#else #else
void main(int argc, char **argv) { int main(int argc, char **argv) {
#endif #endif
#ifdef WIN32 #ifdef WIN32
@ -501,4 +527,5 @@ void main(int argc, char **argv) {
app_parse_rc(); app_parse_rc();
app_window(); app_window();
gtk_main(); gtk_main();
return(0) ;
} }