# HG changeset patch # User Eric Warmenhoven # Date 967664701 0 # Node ID 022048cde898cdb6cfb4b9ee8bdc0f8e76c5ad74 # Parent 72f8ac951c11403d1ea27078b61cbd7ff7d1f349 [gaim-migrate @ 810] perl! yay! finally :-P committer: Tailor Script diff -r 72f8ac951c11 -r 022048cde898 ChangeLog --- 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 diff -r 72f8ac951c11 -r 022048cde898 src/aim.c --- 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 diff -r 72f8ac951c11 -r 022048cde898 src/gaim.h --- 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 *); diff -r 72f8ac951c11 -r 022048cde898 src/perl.c --- 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 #undef PACKAGE #include +#include #include #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"};