commit 56db48d31b62cef3fbf6bb718319ccc46add4167 Author: Oswald Buddenhagen <o...@kde.org> Date: Sun Mar 24 11:10:59 2013 +0100
make path expansion match docu: paths are relative to ~ the current behavior of being relative to the current directory sort of makes no sense, and contradicts the docu. src/config.c | 2 +- src/util.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index 9e4f766..e7bbe4f 100644 --- a/src/config.c +++ b/src/config.c @@ -219,7 +219,7 @@ getopt_helper( conffile_t *cfile, int *cops, int ops[], char **sync_state ) while ((arg = get_arg( cfile, ARG_OPTIONAL, 0 ))); ops[M] |= XOP_HAVE_CREATE; } else if (!strcasecmp( "SyncState", cfile->cmd )) - *sync_state = expand_strdup( cfile->val ); + *sync_state = !strcmp( cfile->val, "*" ) ? nfstrdup( "*" ) : expand_strdup( cfile->val ); else return 0; return 1; diff --git a/src/util.c b/src/util.c index ba05efa..8a7a9d3 100644 --- a/src/util.c +++ b/src/util.c @@ -337,24 +337,35 @@ expand_strdup( const char *s ) if (*s == '~') { s++; if (!*s) { + rethome: p = 0; q = Home; } else if (*s == '/') { - p = s; + p = s + 1; q = Home; } else { if ((p = strchr( s, '/' ))) { r = my_strndup( s, (int)(p - s) ); pw = getpwnam( r ); free( r ); + p++; } else pw = getpwnam( s ); if (!pw) return 0; q = pw->pw_dir; } - nfasprintf( &r, "%s%s", q, p ? p : "" ); + if (!p) + return nfstrdup( q ); + retjoin: + nfasprintf( &r, "%s/%s", q, p ); return r; + } else if (*s != '/') { + if (*s == '.' && !s[1]) + goto rethome; + p = s; + q = Home; + goto retjoin; } else return nfstrdup( s ); } ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel