Wed, 30 Aug 2000 19:45:01 +0000
[gaim-migrate @ 810]
perl! yay! finally :-P
| ChangeLog | file | annotate | diff | comparison | revisions | |
| src/aim.c | file | annotate | diff | comparison | revisions | |
| src/gaim.h | file | annotate | diff | comparison | revisions | |
| src/perl.c | file | annotate | diff | comparison | revisions |
--- a/ChangeLog Wed Aug 30 18:54:02 2000 +0000 +++ b/ChangeLog Wed Aug 30 19:45:01 2000 +0000 @@ -26,6 +26,8 @@ * Optionally Ignore TiK's Automated Messages * Option to beep instead of play sound * New icons for panel (depends on some GNOME pixmaps) + * Perl scripting. See plugins/PERL-HOWTO for how to write perl scripts. + All .pl files in ~/.gaim are autoloaded when gaim starts. version 0.9.20 (07/14/2000): * More plugin events, more plugin features
--- a/src/aim.c Wed Aug 30 18:54:02 2000 +0000 +++ b/src/aim.c Wed Aug 30 19:45:01 2000 +0000 @@ -560,6 +560,7 @@ #ifdef USE_PERL perl_init(); + perl_autoload(); #endif #ifdef USE_APPLET
--- a/src/gaim.h Wed Aug 30 18:54:02 2000 +0000 +++ b/src/gaim.h Wed Aug 30 19:45:01 2000 +0000 @@ -401,7 +401,7 @@ #define TYPE_SIGNOFF 4 #define TYPE_KEEPALIVE 5 -#define REVISION "gaim:$Revision: 808 $" +#define REVISION "gaim:$Revision: 810 $" #define FLAPON "FLAPON\r\n\r\n" #define ROAST "Tic/Toc" @@ -735,6 +735,7 @@ /* Functions in perl.c */ #ifdef USE_PERL extern void perl_init(); +extern void perl_autoload(); extern int perl_load_file(char *); extern void perl_end(); extern int perl_event(enum gaim_event, char *);
--- a/src/perl.c Wed Aug 30 18:54:02 2000 +0000 +++ b/src/perl.c Wed Aug 30 19:45:01 2000 +0000 @@ -43,6 +43,7 @@ #include <fcntl.h> #undef PACKAGE #include <stdio.h> +#include <dirent.h> #include <gtk/gtk.h> #include "pixmaps/add.xpm" #include "pixmaps/cancel.xpm" @@ -142,6 +143,40 @@ return SvNV (return_val); } +static int is_pl_file(char *filename) +{ + int len; + if (!filename) return 0; + if (!filename[0]) return 0; + len = strlen(filename); + len -= 3; + return (!strncmp(filename + len, ".pl", 3)); +} + +void perl_autoload() +{ + DIR *dir; + struct dirent *ent; + char *buf; + char path[BUF_LONG]; + + g_snprintf(path, sizeof(path), "%s/.gaim", getenv("HOME")); + dir = opendir(path); + if (dir) { + while ((ent = readdir(dir))) { + if (strcmp(ent->d_name, ".") && strcmp(ent->d_name, "..")) { + if (is_pl_file(ent->d_name)) { + buf = g_malloc(strlen(path) + strlen(ent->d_name) + 2); + sprintf(buf, "%s/%s", path, ent->d_name); + perl_load_file(buf); + g_free(buf); + } + } + } + closedir(dir); + } +} + void perl_init() { char *perl_args[] = {"", "-e", "0"};