Changeset e9d74be


Ignore:
Timestamp:
Jul 16, 2011, 1:08:55 AM (10 years ago)
Author:
GitHub Merge Button <merge-button@github.com>
Parents:
b711711 (diff), 3159e27 (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 3159e27b4b81e297a2fdbb906d6d59bcc22eb121 into b7117112ee9d20379a32ee09e7ca4c1a223bef1c
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • aim.c

    re4524da r2770be99  
    18121812  GPollFD *fd;
    18131813  int i;
    1814   if (len < event_source->fds->len)
     1814  if (len < event_source->fds->len) {
    18151815    owl_function_debugmsg("Truncating AIM PollFDs to %d, was %d", len, event_source->fds->len);
    1816   for (i = len; i < event_source->fds->len; i++) {
    1817     fd = event_source->fds->pdata[i];
    1818     g_source_remove_poll(&event_source->source, fd);
    1819     g_free(fd);
    1820   }
    1821   g_ptr_array_remove_range(event_source->fds, len, event_source->fds->len - len);
     1816    for (i = len; i < event_source->fds->len; i++) {
     1817      fd = event_source->fds->pdata[i];
     1818      g_source_remove_poll(&event_source->source, fd);
     1819      g_free(fd);
     1820    }
     1821    g_ptr_array_remove_range(event_source->fds, len, event_source->fds->len - len);
     1822  }
    18221823}
    18231824
     
    18901891{
    18911892  owl_aim_event_source *event_source = (owl_aim_event_source*)source;
    1892   truncate_pollfd_list(event_source, 0);
    1893   g_ptr_array_free(event_source->fds, TRUE);
     1893  /* Don't remove the GPollFDs. We are being finalized, so they'll be removed
     1894   * for us. Moreover, glib will fire asserts if g_source_remove_poll is called
     1895   * on a source which has been destroyed (which occurs when g_source_remove is
     1896   * called on it). */
     1897  owl_ptr_array_free(event_source->fds, g_free);
    18941898}
    18951899
  • 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
  • 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

    r2560529 rdde1b4d  
    5353  g->resizepending=0;
    5454  g->direction=OWL_DIRECTION_DOWNWARDS;
    55   g->zaway=0;
    5655  owl_fmtext_init_colorpair_mgr(&(g->cpmgr));
    5756  g->debug=OWL_DEBUG;
     
    7877  g->confdir = NULL;
    7978  g->startupfile = NULL;
    80   cd = g_strdup_printf("%s/%s", g->homedir, OWL_CONFIG_DIR);
     79  cd = g_build_filename(g->homedir, OWL_CONFIG_DIR, NULL);
    8180  owl_global_set_confdir(g, cd);
    8281  g_free(cd);
     
    365364  g->confdir = g_strdup(cd);
    366365  g_free(g->startupfile);
    367   g->startupfile = g_strdup_printf("%s/startup", cd);
     366  g->startupfile = g_build_filename(cd, "startup", NULL);
    368367}
    369368
  • help.c

    ra16d7e5 r820e852  
    6666     "\n"
    6767     "    l             Print a zephyr/AIM buddy listing\n"
    68      "    A             Toggle zaway\n"
     68     "    A             Toggle away\n"
    6969     "    o             Toggle one-line display mode\n"
    7070     "    w             Open a URL in the current message\n"
  • 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);
  • owl.h

    r2560529 r16cf182d  
    556556  char *startupfile;
    557557  int direction;
    558   int zaway;
    559   char *cur_zaway_msg;
    560558  int haveconfig;
    561559  int config_format;
  • 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.