Changes in / [165b0c9:c6332f5]


Ignore:
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • barnowl

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

    r99ac28a rdde1b4d  
    32263226      } else if (myargc > 0) {
    32273227        /* Spawn the child. */
    3228         GPid pid;
     3228        pid_t pid;
    32293229        GError *error = NULL;
    32303230        owl_function_debugmsg("About to exec \"%s\" with %d arguments", argv[0], myargc);
  • runtests.sh

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

    r055e366 r401752a  
    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")
    8887
    8988    SUFFIX=
  • t/completion.t

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

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

    r0ba7333 r14c9e05  
    44#undef WINDOW
    55
     6#include <errno.h>
    67#include <unistd.h>
     8#include <pwd.h>
    79#include <stdio.h>
    810#include <stdlib.h>
    911#include <string.h>
     12#include <sys/types.h>
    1013
    1114#undef instr
     
    133136{
    134137  int numfailed=0;
    135   char *s, *path, *home;
     138  const char *home;
     139  char *s, *path;
     140  struct passwd *pw;
    136141
    137142  printf("# BEGIN testing owl_util\n");
     
    222227                "\"");
    223228
    224   GString *quoted = g_string_new("");
    225   owl_string_appendf_quoted(quoted, "%q foo %q%q %s %", "hello", "world is", "can't");
     229  GString *g = g_string_new("");
     230  owl_string_appendf_quoted(g, "%q foo %q%q %s %", "hello", "world is", "can't");
    226231  FAIL_UNLESS("owl_string_appendf",
    227               !strcmp(quoted->str, "hello foo 'world is'\"can't\" %s %"));
    228   g_string_free(quoted, true);
     232              !strcmp(g->str, "hello foo 'world is'\"can't\" %s %"));
     233  g_string_free(g, true);
    229234
    230235
     
    269274  g_free(s);
    270275
    271   home = g_strdup(owl_global_get_homedir(&g));
     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  }
    272285  s = owl_util_makepath("~");
    273286  FAIL_UNLESS("makepath ~", !strcmp(home, s));
    274287  g_free(s);
    275288
    276   path = g_build_filename(home, "foo/bar/baz", NULL);
     289  path = g_strconcat(home, "/foo/bar/baz", NULL);
    277290  s = owl_util_makepath("~///foo/bar//baz");
    278291  FAIL_UNLESS("makepath ~///foo/bar//baz", !strcmp(path, s));
    279292  g_free(s);
    280293  g_free(path);
    281   g_free(home);
    282 
    283   home = owl_util_homedir_for_user("root");
    284   if (home == NULL) {
     294
     295  errno = 0;
     296  pw = getpwnam("root");
     297  if (pw) {
     298    home = pw->pw_dir;
     299  } else {
    285300    /* Just make some noise so we notice. */
    286     home = g_strdup("<WHAT>");
    287     fprintf(stderr, "owl_util_homedir_for_user failed");
     301    home = "<WHAT>";
     302    fprintf(stderr, "getpwnam: %s", errno ? strerror(errno) : "No such user");
    288303  }
    289304
     
    292307  g_free(s);
    293308
    294   path = g_build_filename(home, "foo/bar/baz", NULL);
     309  path = g_strconcat(home, "/foo/bar/baz", NULL);
    295310  s = owl_util_makepath("~root///foo/bar//baz");
    296311  FAIL_UNLESS("makepath ~root///foo/bar//baz", !strcmp(path, s));
    297312  g_free(s);
    298313  g_free(path);
    299   g_free(home);
    300314
    301315  /* if (numfailed) printf("*** WARNING: failures encountered with owl_util\n"); */
  • util.c

    r8219374 rdde1b4d  
    3232}
    3333
    34 CALLER_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 
    5934/* Return a "nice" version of the path.  Tilde expansion is done, and
    6035 * duplicate slashes are removed.  Caller must free the return.
     
    6742    /* Attempt tilde-expansion of the first component. Get the
    6843       tilde-prefix, which goes up to the next slash. */
     44    struct passwd *pw;
    6945    const char *end = strchr(in + 1, '/');
    7046    if (end == NULL)
    7147      end = in + strlen(in);
    7248
    73     /* Patch together a new path. Replace the ~ and tilde-prefix with
    74        the homedir, if available. */
    7549    if (end == in + 1) {
    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);
     50      /* My home directory. */
     51      pw = getpwuid(getuid());
    7952    } else {
    8053      /* Someone else's home directory. */
    8154      char *user = g_strndup(in + 1, end - (in + 1));
    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);
     55      pw = getpwnam(user);
    8956      g_free(user);
    9057    }
     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    }
    9166  } else {
    92     out = g_strdup(in);
     67      out = g_strdup(in);
    9368  }
    9469
Note: See TracChangeset for help on using the changeset viewer.