Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:misc
rmlint
rmlint-2.2.0-git.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rmlint-2.2.0-git.patch of Package rmlint
diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fab905..ca168eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,16 +6,6 @@ The format follows [keepachangelog.com]. Please stick to it. ## [2.3.0 (No name yet)] -- [unreleased] -### Roadmap - -- Feature: Find biggest lint suckers. -- --read: Just re-output json to different format. -- traverse: get rid of fts(). (*sigh*) -- gui: provide a basic working version. -- tests: provide speed regression test (need a platform for that in background first) -- feature: add back reflink support. -- sh/py formatter: add safety net checks before removing. - ## [2.2.0 Dreary Dropbear] -- 2015-05-09 ### Fixed diff --git a/SConstruct b/SConstruct index dec54a0..cc434c0 100755 --- a/SConstruct +++ b/SConstruct @@ -8,6 +8,7 @@ import subprocess import SCons.Conftest as tests +pkg_config = os.getenv('PKG_CONFIG') or 'pkg-config' def read_version(): with open('.version', 'r') as handle: @@ -32,7 +33,7 @@ Export('VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NAME') def check_pkgconfig(context, version): context.Message('Checking for pkg-config... ') - command = 'pkg-config --atleast-pkgconfig-version=%s' % version + command = pkg_config + ' --atleast-pkgconfig-version=' + version ret = context.TryAction(command)[0] context.Result(ret) return ret @@ -50,7 +51,7 @@ def check_pkg(context, name, varname, required=True): if rc is not 0: context.Message('Checking for %s... ' % name) - rc, text = context.TryAction('pkg-config --exists \'%s\'' % name) + rc, text = context.TryAction('%s --exists \'%s\'' % (pkg_config, name)) # 0 is defined as error by TryAction if rc is 0 and required: @@ -287,6 +288,17 @@ def check_sqlite3(context): return rc +def check_linux_limits(context): + rc = 1 + if tests.CheckHeader(context, 'linux/limits.h'): + rc = 0 + + conf.env['HAVE_LINUX_LIMITS'] = rc + context.did_show_result = True + context.Result(rc) + return rc + + def create_uninstall_target(env, path): env.Command("uninstall-" + path, path, [ Delete("$SOURCE"), @@ -448,7 +460,8 @@ conf = Configure(env, custom_tests={ 'check_bigfiles': check_bigfiles, 'check_c11': check_c11, 'check_gettext': check_gettext, - 'check_sqlite3': check_sqlite3 + 'check_sqlite3': check_sqlite3, + 'check_linux_limits': check_linux_limits }) if not conf.CheckCC(): @@ -537,7 +550,7 @@ conf.env.Append(CFLAGS=[ '-Wstrict-prototypes', ]) -env.ParseConfig('pkg-config --cflags --libs ' + ' '.join(packages)) +env.ParseConfig(pkg_config + ' --cflags --libs ' + ' '.join(packages)) conf.env.Append(_LIBFLAGS=['-lm']) @@ -552,6 +565,7 @@ conf.check_bigfiles() conf.check_sha512() conf.check_gettext() conf.check_sqlite3() +conf.check_linux_limits() if conf.env['HAVE_LIBELF']: conf.env.Append(_LIBFLAGS=['-lelf']) diff --git a/docs/SConscript b/docs/SConscript index a3e0054..38e754d 100644 --- a/docs/SConscript +++ b/docs/SConscript @@ -63,6 +63,7 @@ env.Alias('man', env.Depends(manpage, sphinx)) if 'install' in COMMAND_LINE_TARGETS: + manpage[0].build() if os.access(str(manpage[0]), os.R_OK): man_install = env.Install('$PREFIX/share/man/man1', [manpage]) env.Alias('install', [man_install]) diff --git a/lib/SConscript b/lib/SConscript index 91c220a..65264d6 100644 --- a/lib/SConscript +++ b/lib/SConscript @@ -33,6 +33,7 @@ def build_config_template(target, source, env): HAVE_SYSBLOCK=env['HAVE_SYSBLOCK'], HAVE_SYSCTL=env['HAVE_SYSCTL'], HAVE_SQLITE3=env['HAVE_SQLITE3'], + HAVE_LINUX_LIMITS=env['HAVE_LINUX_LIMITS'], VERSION_MAJOR=VERSION_MAJOR, VERSION_MINOR=VERSION_MINOR, VERSION_PATCH=VERSION_PATCH, diff --git a/lib/cmdline.c b/lib/cmdline.c index a4c726a..9d16fcf 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c @@ -1217,7 +1217,7 @@ bool rm_cmd_parse_args(int argc, char **argv, RmSession *session) { if(cfg->with_color) { cfg->with_stdout_color = isatty(fileno(stdout)); cfg->with_stderr_color = isatty(fileno(stdout)); - cfg->with_color = (cfg->with_stderr_color | cfg->with_stderr_color); + cfg->with_color = (cfg->with_stdout_color | cfg->with_stderr_color); } else { cfg->with_stdout_color = cfg->with_stderr_color = 0; } diff --git a/lib/config.h.in b/lib/config.h.in index 5201aa7..65401c3 100644 --- a/lib/config.h.in +++ b/lib/config.h.in @@ -18,6 +18,7 @@ #define HAVE_SYSBLOCK ({HAVE_SYSBLOCK}) #define HAVE_SYSCTL ({HAVE_SYSCTL}) #define HAVE_SQLITE3 ({HAVE_SQLITE3}) +#define HAVE_LINUX_LIMITS ({HAVE_LINUX_LIMITS}) #define RM_DEFAULT_DIGEST RM_DIGEST_SHA1 #define RM_VERSION "{VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_PATCH}" @@ -45,6 +46,14 @@ #include <errno.h> +#if HAVE_LINUX_LIMITS +#include <linux/limits.h> +#else +# ifndef PATH_MAX +# define PATH_MAX 4096 +# endif +#endif + #define rm_log_debug(...) \ g_log("rmlint", G_LOG_LEVEL_DEBUG, __VA_ARGS__) #define rm_log_info(...) \ diff --git a/lib/pathtricia.c b/lib/pathtricia.c index 78cbfbc..c98b327 100644 --- a/lib/pathtricia.c +++ b/lib/pathtricia.c @@ -27,7 +27,6 @@ #include <stdbool.h> #include <string.h> #include <glib.h> -#include <linux/limits.h> #include "pathtricia.h" #include "config.h" diff --git a/lib/session.h b/lib/session.h index 63c21ba..8062137 100644 --- a/lib/session.h +++ b/lib/session.h @@ -49,7 +49,6 @@ typedef struct RmFileTables { } RmFileTables; struct RmFmtTable; -struct RmTreeMerger; typedef struct RmSession { RmCfg *cfg; diff --git a/lib/shredder.c b/lib/shredder.c index 1dbcf87..23830de 100644 --- a/lib/shredder.c +++ b/lib/shredder.c @@ -1089,7 +1089,7 @@ static gboolean rm_shred_group_push_file(RmShredGroup *shred_group, RmFile *file g_mutex_lock(&shred_group->lock); { shred_group->has_pref |= file->is_prefd | file->hardlinks.has_prefd; - shred_group->has_npref |= !file->is_prefd | file->hardlinks.has_non_prefd; + shred_group->has_npref |= (!file->is_prefd) | file->hardlinks.has_non_prefd; shred_group->has_new |= file->is_new_or_has_new; shred_group->ref_count++; @@ -1154,7 +1154,6 @@ static gboolean rm_shred_sift(RmFile *file) { g_assert(file); g_assert(file->shred_group); - RmShredGroup *child_group = NULL; RmShredGroup *current_group = file->shred_group; if(file->status == RM_FILE_STATE_IGNORE) { @@ -1163,6 +1162,8 @@ static gboolean rm_shred_sift(RmFile *file) { } else { g_assert(file->digest); + RmShredGroup *child_group = NULL; + if(file->digest->type == RM_DIGEST_PARANOID && !file->is_symlink) { g_assert(file->digest->bytes == current_group->next_offset - current_group->hash_offset); diff --git a/lib/swap-table.c b/lib/swap-table.c index 0c9e8a7..d35cbf7 100644 --- a/lib/swap-table.c +++ b/lib/swap-table.c @@ -3,8 +3,7 @@ #include <unistd.h> #include <errno.h> -#include <linux/limits.h> - +#include "config.h" #include "swap-table.h" #if HAVE_SQLITE3 @@ -84,8 +83,7 @@ static void rm_swap_table_clean_stmt(RmSwapTable *self, sqlite3_stmt *stmt, g_assert(self); g_assert(stmt); - int r = 0; - if((r = sqlite3_errcode(self->cache)) != SQLITE_DONE) { + if(sqlite3_errcode(self->cache) != SQLITE_DONE) { SET_ERROR("stmt failed: %s", sqlite3_errmsg(self->cache)); } diff --git a/lib/traverse.c b/lib/traverse.c index 0a11850..2748451 100644 --- a/lib/traverse.c +++ b/lib/traverse.c @@ -26,9 +26,10 @@ #include <stdlib.h> #include <string.h> +#include <sys/types.h> +#include <sys/stat.h> #include <fts.h> #include <errno.h> -#include <sys/stat.h> #include <glib.h> diff --git a/lib/treemerge.c b/lib/treemerge.c index f2ebaf7..87e3b36 100644 --- a/lib/treemerge.c +++ b/lib/treemerge.c @@ -57,6 +57,9 @@ #include <glib.h> #include <string.h> + +#include <sys/types.h> +#include <sys/stat.h> #include <fts.h> #include "treemerge.h" @@ -66,22 +69,21 @@ #include "pathtricia.h" typedef struct RmDirectory { - char *dirname; /* Path to this directory without trailing slash */ - GQueue known_files; /* RmFiles in this directory */ - GQueue children; /* Children for directories with subdirectories */ - gint64 prefd_files; /* Files in this directory that are tagged as original */ - gint64 dupe_count; /* Count of RmFiles actually in this directory */ - gint64 file_count; /* Count of files actually in this directory (or -1 on error) */ - gint64 mergeups; /* number of times this directory was merged up */ - bool finished; /* Was this dir or one of his parents already printed? */ - bool was_merged; /* true if this directory was merged up already (only once) */ - bool was_inserted; /* true if this directory was added to results (only once) */ - unsigned short depth; /* path depth (i.e. count of / in path, no trailing /) */ - GHashTable *hash_set; /* Set of hashes, used for equality check (to be sure) */ - RmDigest *digest; /* Common digest of all RmFiles in this directory */ + char *dirname; /* Path to this directory without trailing slash */ + GQueue known_files; /* RmFiles in this directory */ + GQueue children; /* Children for directories with subdirectories */ + gint64 prefd_files; /* Files in this directory that are tagged as original */ + gint64 dupe_count; /* Count of RmFiles actually in this directory */ + gint64 file_count; /* Count of files actually in this directory (or -1 on error) */ + gint64 mergeups; /* number of times this directory was merged up */ + bool finished : 1; /* Was this dir or one of his parents already printed? */ + bool was_merged : 1; /* true if this directory was merged up already (only once) */ + bool was_inserted : 1; /* true if this directory was added to results (only once) */ + unsigned short depth; /* path depth (i.e. count of / in path, no trailing /) */ + GHashTable *hash_set; /* Set of hashes, used for equality check (to be sure) */ + RmDigest *digest; /* Common digest of all RmFiles in this directory */ struct { - bool has_metadata; /* stat(2) called already */ time_t dir_mtime; /* Directory Metadata: Modification Time */ ino_t dir_inode; /* Directory Metadata: Inode */ dev_t dir_dev; /* Directory Metadata: Device ID */ @@ -857,7 +859,6 @@ static void rm_tm_extract(RmTreeMerger *self) { GQueue *file_list = NULL; while(g_hash_table_iter_next(&iter, NULL, (void **)&file_list)) { - bool has_one_dupe = false; RmOff file_size_acc = 0; GList *next = NULL; @@ -865,15 +866,14 @@ static void rm_tm_extract(RmTreeMerger *self) { RmFile *file = iter->data; next = iter->next; - bool is_duplicate = g_hash_table_contains(self->file_checks, file->digest); - has_one_dupe |= is_duplicate; - /* with --partial-hidden we do not want to output */ if(self->session->cfg->partial_hidden && file->is_hidden) { g_queue_delete_link(file_list, iter); continue; } + bool is_duplicate = g_hash_table_contains(self->file_checks, file->digest); + if(iter != file_list->head && !is_duplicate) { file_size_acc += file->file_size; } diff --git a/lib/utilities.c b/lib/utilities.c index 0ddf0a7..536ffe3 100644 --- a/lib/utilities.c +++ b/lib/utilities.c @@ -969,8 +969,7 @@ dev_t rm_mounts_get_disk_id(RmMountTable *self, dev_t partition, const char *pat * to * * a recognisable partition */ char *prev = g_strdup(path); - while - TRUE { + while(TRUE) { char *temp = g_strdup(prev); char *parent_path = g_strdup(dirname(temp)); g_free(temp); @@ -1227,7 +1226,7 @@ RmOff rm_offset_lookup(_U RmOffsetTable table, _U RmOff file_offset) { return 0; } -bool rm_offsets_match(RmOffsetTable table1, RmOffsetTable table2) { +bool rm_offsets_match(_U RmOffsetTable table1, _U RmOffsetTable table2) { return false; } diff --git a/tests/test_options/test_sorting.py b/tests/test_options/test_sorting.py index d36a99d..1e07fa8 100644 --- a/tests/test_options/test_sorting.py +++ b/tests/test_options/test_sorting.py @@ -76,4 +76,3 @@ def test_sorting(): assert len(data) == 6 validate_order(data, combo) - print('ok')
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor