Changeset 117a955


Ignore:
Timestamp:
Jul 16, 2011, 1:08:39 AM (13 years ago)
Author:
GitHub Merge Button <merge-button@github.com>
Parents:
b711711 (diff), 05725694 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:
Merge 05725694eae03ea2a194fdef4bfedcdbf902813e into b7117112ee9d20379a32ee09e7ca4c1a223bef1c
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • README

    r9179fd7 rb711711  
    77Notes:
    88-----
    9 This project's perl/lib/ contains the lib directories from the
     9This project's perl/modules/ contains the lib directories from the
    1010following CPAN modules:
    1111
     
    1919
    2020AnyEvent
     21Class::Accessor
    2122Glib
    2223PAR
    23 Net::DNS
    24 Authen::SASL::Perl
    25 IO::Socket::SSL
    26 Digest::SHA1
    2724
    2825(Note that these are all available as Debian packages)
     
    3330
    3431AnyEvent::IRC
    35 Class::Accessor
     32
     33The Jabber module requires:
     34
     35Net::DNS
     36Authen::SASL::Perl
     37IO::Socket::SSL
     38Digest::SHA1
     39
     40The Twitter module requires:
     41
     42HTML::Entities
     43Net::Twitter::Lite
    3644
    3745The WordWrap module requires:
  • barnowl

    rb14f8cb rf5f6ec0  
    88
    99if test ! -x "$EXE"; then
    10     echo "Cannot find barnowl.bin" >&2
     10    echo "Cannot find $EXE" >&2
    1111    exit 1
    1212fi
  • configure.ac

    rf2a96c0 r0de04fa  
    109109AC_CHECK_LIB([perl], [perl_alloc],, AC_MSG_ERROR([No libperl found]))
    110110
     111AX_PROG_PERL_MODULES([AnyEvent],,
     112                     [AC_MSG_ERROR([cannot find perl module AnyEvent.])])
    111113AX_PROG_PERL_MODULES([Class::Accessor::Fast],,
    112114                     [AC_MSG_ERROR([cannot find perl module Class::Accessor::Fast.])])
     115AX_PROG_PERL_MODULES([Glib],,
     116                     [AC_MSG_ERROR([cannot find perl module Glib.])])
    113117AX_PROG_PERL_MODULES([PAR],,
    114118                     [AC_MSG_WARN([PAR.pm not found. Loadable modules will be disabled.])])
  • functions.c

    refeec7f r99ac28a  
    410410  old_msg = g_strdup(owl_zwrite_get_message(z));
    411411
    412   zcrypt = g_strdup_printf("%s/zcrypt", owl_get_bindir());
     412  zcrypt = g_build_filename(owl_get_bindir(), "zcrypt", NULL);
    413413  argv[0] = "zcrypt";
    414414  argv[1] = "-E";
     
    32263226      } else if (myargc > 0) {
    32273227        /* Spawn the child. */
    3228         pid_t pid;
     3228        GPid pid;
    32293229        GError *error = NULL;
    32303230        owl_function_debugmsg("About to exec \"%s\" with %d arguments", argv[0], myargc);
  • global.c

    r16cf182d rdde1b4d  
    7777  g->confdir = NULL;
    7878  g->startupfile = NULL;
    79   cd = g_strdup_printf("%s/%s", g->homedir, OWL_CONFIG_DIR);
     79  cd = g_build_filename(g->homedir, OWL_CONFIG_DIR, NULL);
    8080  owl_global_set_confdir(g, cd);
    8181  g_free(cd);
     
    364364  g->confdir = g_strdup(cd);
    365365  g_free(g->startupfile);
    366   g->startupfile = g_strdup_printf("%s/startup", cd);
     366  g->startupfile = g_build_filename(cd, "startup", NULL);
    367367}
    368368
  • logging.c

    r6829afc rdde1b4d  
    224224    while (cc != NULL) {
    225225      temp = short_zuser(cc->data);
    226       filename = g_strdup_printf("%s/%s", logpath, temp);
     226      filename = g_build_filename(logpath, temp, NULL);
    227227      owl_log_append(m, filename);
    228228
     
    248248  }
    249249
    250   filename = g_strdup_printf("%s/%s", logpath, to);
     250  filename = g_build_filename(logpath, to, NULL);
    251251  owl_log_append(m, filename);
    252252  g_free(to);
    253253  g_free(filename);
    254254
    255   filename = g_strdup_printf("%s/all", logpath);
     255  filename = g_build_filename(logpath, "all", NULL);
    256256  owl_log_append(m, filename);
    257257  g_free(logpath);
     
    285285  /* expand ~ in path names */
    286286  logpath = owl_util_makepath(owl_global_get_logpath(&g));
    287   filename = g_strdup_printf("%s/%s", logpath, tobuff);
     287  filename = g_build_filename(logpath, tobuff, NULL);
    288288  msgbuf = g_string_new("");
    289289  g_string_printf(msgbuf, "ERROR (owl): %s\n%s\n", tobuff, text);
     
    294294  g_string_free(msgbuf, TRUE);
    295295
    296   filename = g_strdup_printf("%s/all", logpath);
     296  filename = g_build_filename(logpath, "all", NULL);
    297297  g_free(logpath);
    298298  msgbuf = g_string_new("");
     
    393393  if (personal) {
    394394    logpath = owl_util_makepath(owl_global_get_logpath(&g));
    395     filename = g_strdup_printf("%s/%s", logpath, from);
    396     allfilename = g_strdup_printf("%s/all", logpath);
     395    filename = g_build_filename(logpath, from, NULL);
     396    allfilename = g_build_filename(logpath, "all", NULL);
    397397    owl_log_append(m, allfilename);
    398398    g_free(allfilename);
    399399  } else {
    400400    logpath = owl_util_makepath(owl_global_get_classlogpath(&g));
    401     filename = g_strdup_printf("%s/%s", logpath, from);
     401    filename = g_build_filename(logpath, from, NULL);
    402402  }
    403403
     
    415415      temp = short_zuser(cc->data);
    416416      if (strcasecmp(temp, frombuff) != 0) {
    417         filename = g_strdup_printf("%s/%s", logpath, temp);
     417        filename = g_build_filename(logpath, temp, NULL);
    418418        owl_log_append(m, filename);
    419419        g_free(filename);
  • message.c

    rf9df2f0 rdde1b4d  
    884884    char *zcrypt;
    885885
    886     zcrypt = g_strdup_printf("%s/zcrypt", owl_get_bindir());
     886    zcrypt = g_build_filename(owl_get_bindir(), "zcrypt", NULL);
    887887
    888888    rv = call_filter(zcrypt, argv, owl_message_get_body(m), &out, &status);
  • perlconfig.c

    rce68f23 rdde1b4d  
    406406  /* Add the system lib path to @INC */
    407407  inc = get_av("INC", 0);
    408   path = g_strdup_printf("%s/lib", owl_get_datadir());
     408  path = g_build_filename(owl_get_datadir(), "lib", NULL);
    409409  av_unshift(inc, 1);
    410410  av_store(inc, 0, owl_new_sv(path));
  • runtests.sh

    r786a410 rf6ab6ee  
    11#!/bin/sh
    2 SRCDIR=`dirname "${0}"`
    3 
    4 export BARNOWL_DATA_DIR="$SRCDIR/perl/"
    5 export BARNOWL_BIN_DIR="$SRCDIR/"
    6 
    7 HARNESS_PERL=./tester exec prove --failures t/
     2exec env HARNESS_PERL=./tester prove --failures t/
  • scripts/locker-build

    r401752a r055e366  
    8585    BARNOWL="/afs/sipb.mit.edu/project/barnowl/arch/$ATHENA_SYS"
    8686    export PKG_CONFIG_PATH="$BARNOWL/lib/pkgconfig"
     87    eval $("$BARNOWL/bin/barnowl-perl-config")
    8788
    8889    SUFFIX=
  • t/completion.t

    r3001c11 re59d775  
    323323}
    324324
    325 mkpath("$tmpdir/.owl/",
    326        "$tmpdir/.owl/modules/",
    327        "$tmpdir/Public/",
    328        "$tmpdir/Private/",
    329        "$tmpdir/.ours",
    330        "$tmpdir/www",
    331      {mode => 0700});
     325mkpath(["$tmpdir/.owl/",
     326        "$tmpdir/.owl/modules/",
     327        "$tmpdir/Public/",
     328        "$tmpdir/Private/",
     329        "$tmpdir/.ours",
     330        "$tmpdir/www"],
     331       0, 0700);
    332332touch("$tmpdir/.zephyr.subs");
    333333touch("$tmpdir/wheee");
  • t/unicode.t

    r09ff1eb rf415f83  
    55use Encode;
    66
    7 BEGIN { bootstrap BarnOwl; };
     7use Test::More qw(no_plan);
    88
    9 use Test::More qw(no_plan);
     9use BarnOwl;
    1010
    1111my $unicode = "“hello”";
  • tester.c

    r14c9e05 r0ba7333  
    44#undef WINDOW
    55
    6 #include <errno.h>
    76#include <unistd.h>
    8 #include <pwd.h>
    97#include <stdio.h>
    108#include <stdlib.h>
    119#include <string.h>
    12 #include <sys/types.h>
    1310
    1411#undef instr
     
    136133{
    137134  int numfailed=0;
    138   const char *home;
    139   char *s, *path;
    140   struct passwd *pw;
     135  char *s, *path, *home;
    141136
    142137  printf("# BEGIN testing owl_util\n");
     
    227222                "\"");
    228223
    229   GString *g = g_string_new("");
    230   owl_string_appendf_quoted(g, "%q foo %q%q %s %", "hello", "world is", "can't");
     224  GString *quoted = g_string_new("");
     225  owl_string_appendf_quoted(quoted, "%q foo %q%q %s %", "hello", "world is", "can't");
    231226  FAIL_UNLESS("owl_string_appendf",
    232               !strcmp(g->str, "hello foo 'world is'\"can't\" %s %"));
    233   g_string_free(g, true);
     227              !strcmp(quoted->str, "hello foo 'world is'\"can't\" %s %"));
     228  g_string_free(quoted, true);
    234229
    235230
     
    274269  g_free(s);
    275270
    276   errno = 0;
    277   pw = getpwuid(getuid());
    278   if (pw) {
    279     home = pw->pw_dir;
    280   } else {
    281     /* Just make some noise so we notice. */
    282     home = "<WHAT>";
    283     fprintf(stderr, "getpwuid: %s", errno ? strerror(errno) : "No such user");
    284   }
     271  home = g_strdup(owl_global_get_homedir(&g));
    285272  s = owl_util_makepath("~");
    286273  FAIL_UNLESS("makepath ~", !strcmp(home, s));
    287274  g_free(s);
    288275
    289   path = g_strconcat(home, "/foo/bar/baz", NULL);
     276  path = g_build_filename(home, "foo/bar/baz", NULL);
    290277  s = owl_util_makepath("~///foo/bar//baz");
    291278  FAIL_UNLESS("makepath ~///foo/bar//baz", !strcmp(path, s));
    292279  g_free(s);
    293280  g_free(path);
    294 
    295   errno = 0;
    296   pw = getpwnam("root");
    297   if (pw) {
    298     home = pw->pw_dir;
    299   } else {
     281  g_free(home);
     282
     283  home = owl_util_homedir_for_user("root");
     284  if (home == NULL) {
    300285    /* Just make some noise so we notice. */
    301     home = "<WHAT>";
    302     fprintf(stderr, "getpwnam: %s", errno ? strerror(errno) : "No such user");
     286    home = g_strdup("<WHAT>");
     287    fprintf(stderr, "owl_util_homedir_for_user failed");
    303288  }
    304289
     
    307292  g_free(s);
    308293
    309   path = g_strconcat(home, "/foo/bar/baz", NULL);
     294  path = g_build_filename(home, "foo/bar/baz", NULL);
    310295  s = owl_util_makepath("~root///foo/bar//baz");
    311296  FAIL_UNLESS("makepath ~root///foo/bar//baz", !strcmp(path, s));
    312297  g_free(s);
    313298  g_free(path);
     299  g_free(home);
    314300
    315301  /* if (numfailed) printf("*** WARNING: failures encountered with owl_util\n"); */
  • util.c

    rc0c48d14 r8219374  
    3232}
    3333
     34CALLER_OWN char *owl_util_homedir_for_user(const char *name)
     35{
     36  int err;
     37  struct passwd pw_buf;
     38  struct passwd *pw;
     39
     40  char *pw_strbuf, *ret;
     41  long pw_strbuf_len = sysconf(_SC_GETPW_R_SIZE_MAX);
     42  if (pw_strbuf_len < 0) {
     43    /* If we really hate ourselves, we can be fancy and loop until we stop
     44     * getting ERANGE. For now just pick a random number. */
     45    owl_function_error("owl_util_homedir_for_user: Could not get _SC_GETPW_R_SIZE_MAX");
     46    pw_strbuf_len = 16384;
     47  }
     48  pw_strbuf = g_new0(char, pw_strbuf_len);
     49  err = getpwnam_r(name, &pw_buf, pw_strbuf, pw_strbuf_len, &pw);
     50  if (err) {
     51    owl_function_error("getpwuid_r: %s", strerror(err));
     52    /* Fall through; pw will be NULL. */
     53  }
     54  ret = pw ? g_strdup(pw->pw_dir) : NULL;
     55  g_free(pw_strbuf);
     56  return ret;
     57}
     58
    3459/* Return a "nice" version of the path.  Tilde expansion is done, and
    3560 * duplicate slashes are removed.  Caller must free the return.
     
    4267    /* Attempt tilde-expansion of the first component. Get the
    4368       tilde-prefix, which goes up to the next slash. */
    44     struct passwd *pw;
    4569    const char *end = strchr(in + 1, '/');
    4670    if (end == NULL)
    4771      end = in + strlen(in);
    4872
     73    /* Patch together a new path. Replace the ~ and tilde-prefix with
     74       the homedir, if available. */
    4975    if (end == in + 1) {
    50       /* My home directory. */
    51       pw = getpwuid(getuid());
     76      /* My home directory. Use the one in owl_global for consistency with
     77       * owl_zephyr_dotfile. */
     78      out = g_strconcat(owl_global_get_homedir(&g), end, NULL);
    5279    } else {
    5380      /* Someone else's home directory. */
    5481      char *user = g_strndup(in + 1, end - (in + 1));
    55       pw = getpwnam(user);
     82      char *home = owl_util_homedir_for_user(user);
     83      if (home) {
     84        out = g_strconcat(home, end, NULL);
     85      } else {
     86        out = g_strdup(in);
     87      }
     88      g_free(home);
    5689      g_free(user);
    5790    }
    58 
    59     /* Patch together a new path. Replace the ~ and tilde-prefix with
    60        the homedir. */
    61     if (pw) {
    62       out = g_strconcat(pw->pw_dir, end, NULL);
    63     } else {
    64       out = g_strdup(in);
    65     }
    6691  } else {
    67       out = g_strdup(in);
     92    out = g_strdup(in);
    6893  }
    6994
     
    388413    if (!g_path_is_absolute(link_path)) {
    389414      char *last_dir = g_path_get_dirname(last_path);
    390       char *tmp = g_build_path(G_DIR_SEPARATOR_S,
    391                                last_dir,
    392                                link_path,
    393                                NULL);
     415      char *tmp = g_build_filename(last_dir, link_path, NULL);
    394416      g_free(last_dir);
    395417      g_free(link_path);
  • variable.c

    ra16d7e5 r30d0cf7  
    161161               "Enable logging of login notifications",
    162162               "When this is enabled, BarnOwl will log login and logout notifications\n"
    163                "for AIM, zephyr, or other protocols.  If disabled Owl will not print\n"
     163               "for AIM, zephyr, or other protocols.  If disabled BarnOwl will not print\n"
    164164               "login or logout notifications.\n"),
    165165
  • zcrypt.c

    r6829afc rc6332f5  
    411411  int length[MAX_SEARCH], i;
    412412  char buffer[MAX_BUFF];
     413  const char *home;
    413414  char *filename;
    414415  char result[MAX_SEARCH][MAX_BUFF];
     
    433434
    434435  /* Open~/.crypt-table */
    435   filename = g_strdup_printf("%s/.crypt-table", getenv("HOME"));
     436  home = getenv("HOME");
     437  if (home == NULL)
     438    home = g_get_home_dir();
     439  filename = g_build_filename(home, ".crypt-table", NULL);
    436440  fsearch = fopen(filename, "r");
    437441  if (fsearch)
  • zephyr.c

    recffae6 rc855755  
    3838    return g_strdup(input);
    3939  else
    40     return g_strdup_printf("%s/%s", owl_global_get_homedir(&g), name);
     40    return g_build_filename(owl_global_get_homedir(&g), name, NULL);
    4141}
    4242
     
    12311231    return -1;
    12321232  ret = ZSetLocation(zstr(exposure));
    1233   if (ret != ZERR_NONE) {
     1233  if (ret != ZERR_NONE
     1234#ifdef ZCONST
     1235      /* Before zephyr 3.0, ZSetLocation had a bug where, if you were subscribed
     1236       * to your own logins, it could wait for the wrong notice and return
     1237       * ZERR_INTERNAL when found neither SERVACK nor SERVNAK. Suppress it when
     1238       * building against the old ABI. */
     1239      && ret != ZERR_INTERNAL
     1240#endif
     1241     ) {
    12341242    owl_function_error("Unable to set exposure level: %s.", error_message(ret));
    12351243    return -1;
Note: See TracChangeset for help on using the changeset viewer.