static void check_csync_exclude_expand_escapes(void **state) { (void)state; QByteArray line = "keep \\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v \\z \\#"; csync_exclude_expand_escapes(line); assert_true(0 == strcmp(line.constData(), "keep ' \" ? \\\\ \a \b \f \n \r \t \v \\z #")); line = ""; csync_exclude_expand_escapes(line); assert_true(0 == strcmp(line.constData(), "")); line = "\\"; csync_exclude_expand_escapes(line); assert_true(0 == strcmp(line.constData(), "\\")); }
static void check_csync_exclude_expand_escapes(void **state) { (void)state; const char *str = csync_exclude_expand_escapes( "keep \\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v \\z"); assert_true(0 == strcmp( str, "keep ' \" ? \\ \a \b \f \n \r \t \v \\z")); SAFE_FREE(str); str = csync_exclude_expand_escapes(""); assert_true(0 == strcmp(str, "")); SAFE_FREE(str); str = csync_exclude_expand_escapes("\\"); assert_true(0 == strcmp(str, "\\")); SAFE_FREE(str); }
int csync_exclude_load(const char *fname, c_strlist_t **list) { int fd = -1; int i = 0; int rc = -1; int64_t size; char *buf = NULL; char *entry = NULL; mbchar_t *w_fname; if (fname == NULL) { return -1; } #ifdef _WIN32 _fmode = _O_BINARY; #endif w_fname = c_utf8_path_to_locale(fname); if (w_fname == NULL) { return -1; } fd = _topen(w_fname, O_RDONLY); c_free_locale_string(w_fname); if (fd < 0) { return -1; } size = lseek(fd, 0, SEEK_END); if (size < 0) { rc = -1; goto out; } lseek(fd, 0, SEEK_SET); if (size == 0) { rc = 0; goto out; } buf = c_malloc(size + 1); if (read(fd, buf, size) != size) { rc = -1; goto out; } buf[size] = '\0'; /* FIXME: Use fgets and don't add duplicates */ entry = buf; for (i = 0; i < size; i++) { if (buf[i] == '\n' || buf[i] == '\r') { if (entry != buf + i) { buf[i] = '\0'; if (*entry != '#') { const char *unescaped = csync_exclude_expand_escapes(entry); rc = _csync_exclude_add(list, unescaped); if( rc == 0 ) { CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Adding entry: %s", unescaped); } SAFE_FREE(unescaped); if (rc < 0) { goto out; } } } entry = buf + i + 1; } } rc = 0; out: SAFE_FREE(buf); close(fd); return rc; }