Mercurial > libpst
diff src/libpst.c @ 325:cb67b335afcc
patches from debian
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 18 Jan 2013 08:05:08 -0800 |
parents | c4537664ff50 |
children | c507af52515a |
line wrap: on
line diff
--- a/src/libpst.c Thu Jan 03 10:09:12 2013 -0800 +++ b/src/libpst.c Fri Jan 18 08:05:08 2013 -0800 @@ -289,6 +289,17 @@ static char* pst_wide_to_single(char *wt, size_t size); +static char *pst_getcwd(void) { + char *cwd; +#ifdef HAVE_GET_CURRENT_DIR_NAME + cwd = get_current_dir_name(); +#else + cwd = pst_malloc(PATH_MAX+1); + getcwd(cwd, PATH_MAX+1); +#endif + return cwd; +} + int pst_open(pst_file *pf, const char *name, const char *charset) { int32_t sig; @@ -361,20 +372,24 @@ DEBUG_RET(); - pf->cwd = pst_malloc(PATH_MAX+1); - getcwd(pf->cwd, PATH_MAX+1); + pf->cwd = pst_getcwd(); pf->fname = strdup(name); return 0; } int pst_reopen(pst_file *pf) { - char cwd[PATH_MAX]; - if (!getcwd(cwd, PATH_MAX)) return -1; - if (chdir(pf->cwd)) return -1; - if (!freopen(pf->fname, "rb", pf->fp)) return -1; - if (chdir(cwd)) return -1; + char *cwd; + cwd = pst_getcwd(); + if (cwd == NULL) return -1; + if (chdir(pf->cwd)) goto err; + if (!freopen(pf->fname, "rb", pf->fp)) goto err; + if (chdir(cwd)) goto err; + free(cwd); return 0; +err: + free(cwd); + return -1; }