Compare commits
No commits in common. "c9-beta" and "c10s" have entirely different histories.
1
.fmf/version
Normal file
1
.fmf/version
Normal file
@ -0,0 +1 @@
|
||||
1
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/tree-1.8.0.tgz
|
||||
/tree-[1-9].*.*.tgz
|
||||
|
@ -1 +0,0 @@
|
||||
06934bf1f6a92af4eaec6bc61e568cec5e068ba1 SOURCES/tree-1.8.0.tgz
|
@ -1,16 +0,0 @@
|
||||
color.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/color.c b/color.c
|
||||
index 67dedbe..bbcc9df 100644
|
||||
--- a/color.c
|
||||
+++ b/color.c
|
||||
@@ -191,7 +191,7 @@ void parse_dir_colors()
|
||||
if (!norm_flgs) norm_flgs = scopy("00");
|
||||
|
||||
if (!endcode) {
|
||||
- sprintf(buf,"%s%s%s",leftcode,norm_flgs,rightcode);
|
||||
+ sprintf(buf,"%s0%s",leftcode,rightcode);
|
||||
endcode = scopy(buf);
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
Makefile | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 842281e..ee7fbe6 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -112,9 +112,9 @@ install: tree
|
||||
install -d $(BINDIR)
|
||||
install -d $(MANDIR)
|
||||
if [ -e $(TREE_DEST) ]; then \
|
||||
- install $(TREE_DEST) $(BINDIR)/$(TREE_DEST); \
|
||||
+ install -p $(TREE_DEST) $(BINDIR)/$(TREE_DEST); \
|
||||
fi
|
||||
- install doc/$(MAN) $(MANDIR)/$(MAN)
|
||||
+ install -p doc/$(MAN) $(MANDIR)/$(MAN)
|
||||
|
||||
distclean:
|
||||
if [ -f tree.o ]; then rm *.o; fi
|
@ -1,189 +0,0 @@
|
||||
From 48641275c0cd018441685f2d3145038017f1ea42 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Tue, 6 Nov 2018 16:31:32 +0100
|
||||
Subject: [PATCH] tree: fix programming mistakes detected by static analysis
|
||||
|
||||
---
|
||||
html.c | 5 +++--
|
||||
json.c | 11 +++++------
|
||||
tree.c | 2 +-
|
||||
unix.c | 5 +++--
|
||||
xml.c | 11 +++++------
|
||||
5 files changed, 17 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/html.c b/html.c
|
||||
index 75e2ed1..35fb525 100644
|
||||
--- a/html.c
|
||||
+++ b/html.c
|
||||
@@ -221,7 +221,7 @@ off_t html_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
if (*(*dir)->lnk == '/')
|
||||
listdir((*dir)->lnk,dt,ft,lev+1,dev);
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
listdir(path,dt,ft,lev+1,dev);
|
||||
@@ -254,7 +254,7 @@ off_t html_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
{
|
||||
struct _info **dir;
|
||||
off_t size = 0;
|
||||
- char *err;
|
||||
+ char *err = NULL;
|
||||
|
||||
dir = getfulltree(d, lev, dev, &size, &err);
|
||||
|
||||
@@ -262,6 +262,7 @@ off_t html_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
|
||||
htmlr_listdir(dir, d, dt, ft, lev);
|
||||
|
||||
+ free(err);
|
||||
return size;
|
||||
}
|
||||
|
||||
diff --git a/json.c b/json.c
|
||||
index 4b15e0d..8c71324 100644
|
||||
--- a/json.c
|
||||
+++ b/json.c
|
||||
@@ -98,8 +98,7 @@ off_t json_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
while(*dir) {
|
||||
if (!noindent) json_indent(lev);
|
||||
|
||||
- if ((*dir)->lnk) mt = (*dir)->mode & S_IFMT;
|
||||
- else mt = (*dir)->mode & S_IFMT;
|
||||
+ mt = (*dir)->mode & S_IFMT;
|
||||
for(t=0;ifmt[t];t++)
|
||||
if (ifmt[t] == mt) break;
|
||||
fprintf(outfile,"{\"type\":\"%s\"", ftype[t]);
|
||||
@@ -141,7 +140,7 @@ off_t json_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
if (*(*dir)->lnk == '/')
|
||||
listdir((*dir)->lnk,dt,ft,lev+1,dev);
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
listdir(path,dt,ft,lev+1,dev);
|
||||
@@ -181,7 +180,7 @@ off_t json_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
{
|
||||
struct _info **dir;
|
||||
off_t size = 0;
|
||||
- char *err;
|
||||
+ char *err = NULL;
|
||||
|
||||
dir = getfulltree(d, lev, dev, &size, &err);
|
||||
|
||||
@@ -189,6 +188,7 @@ off_t json_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
|
||||
jsonr_listdir(dir, d, dt, ft, lev);
|
||||
|
||||
+ free(err);
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -211,8 +211,7 @@ void jsonr_listdir(struct _info **dir, char *d, int *dt, int *ft, u_long lev)
|
||||
while(*dir) {
|
||||
if (!noindent) json_indent(lev);
|
||||
|
||||
- if ((*dir)->lnk) mt = (*dir)->mode & S_IFMT;
|
||||
- else mt = (*dir)->mode & S_IFMT;
|
||||
+ mt = (*dir)->mode & S_IFMT;
|
||||
for(t=0;ifmt[t];t++)
|
||||
if (ifmt[t] == mt) break;
|
||||
fprintf(outfile,"{\"type\":\"%s\"", ftype[t]);
|
||||
diff --git a/tree.c b/tree.c
|
||||
index 03140fe..73dd101 100644
|
||||
--- a/tree.c
|
||||
+++ b/tree.c
|
||||
@@ -882,7 +882,7 @@ struct _info **unix_getfulltree(char *d, u_long lev, dev_t dev, off_t *size, cha
|
||||
if (*(*dir)->lnk == '/')
|
||||
(*dir)->child = unix_getfulltree((*dir)->lnk,lev+1,dev,&((*dir)->size),&((*dir)->err));
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
(*dir)->child = unix_getfulltree(path,lev+1,dev,&((*dir)->size),&((*dir)->err));
|
||||
diff --git a/unix.c b/unix.c
|
||||
index ca5f76f..9476307 100644
|
||||
--- a/unix.c
|
||||
+++ b/unix.c
|
||||
@@ -129,7 +129,7 @@ off_t unix_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
if (*(*dir)->lnk == '/')
|
||||
listdir((*dir)->lnk,dt,ft,lev+1,dev);
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
listdir(path,dt,ft,lev+1,dev);
|
||||
@@ -162,7 +162,7 @@ off_t unix_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
{
|
||||
struct _info **dir;
|
||||
off_t size = 0;
|
||||
- char *err;
|
||||
+ char *err = NULL;
|
||||
|
||||
dir = getfulltree(d, lev, dev, &size, &err);
|
||||
|
||||
@@ -170,6 +170,7 @@ off_t unix_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
|
||||
r_listdir(dir, d, dt, ft, lev);
|
||||
|
||||
+ free(err);
|
||||
return size;
|
||||
}
|
||||
|
||||
diff --git a/xml.c b/xml.c
|
||||
index 32f3c0c..512eed7 100644
|
||||
--- a/xml.c
|
||||
+++ b/xml.c
|
||||
@@ -106,8 +106,7 @@ off_t xml_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
while(*dir) {
|
||||
if (!noindent) xml_indent(lev);
|
||||
|
||||
- if ((*dir)->lnk) mt = (*dir)->mode & S_IFMT;
|
||||
- else mt = (*dir)->mode & S_IFMT;
|
||||
+ mt = (*dir)->mode & S_IFMT;
|
||||
for(t=0;ifmt[t];t++)
|
||||
if (ifmt[t] == mt) break;
|
||||
fprintf(outfile,"<%s", ftype[t]);
|
||||
@@ -145,7 +144,7 @@ off_t xml_listdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
if (*(*dir)->lnk == '/')
|
||||
listdir((*dir)->lnk,dt,ft,lev+1,dev);
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
listdir(path,dt,ft,lev+1,dev);
|
||||
@@ -181,7 +180,7 @@ off_t xml_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
{
|
||||
struct _info **dir;
|
||||
off_t size = 0;
|
||||
- char *err;
|
||||
+ char *err = NULL;
|
||||
|
||||
dir = getfulltree(d, lev, dev, &size, &err);
|
||||
|
||||
@@ -189,6 +188,7 @@ off_t xml_rlistdir(char *d, int *dt, int *ft, u_long lev, dev_t dev)
|
||||
|
||||
xmlr_listdir(dir, d, dt, ft, lev);
|
||||
|
||||
+ free(err);
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -211,8 +211,7 @@ void xmlr_listdir(struct _info **dir, char *d, int *dt, int *ft, u_long lev)
|
||||
while(*dir) {
|
||||
if (!noindent) xml_indent(lev);
|
||||
|
||||
- if ((*dir)->lnk) mt = (*dir)->mode & S_IFMT;
|
||||
- else mt = (*dir)->mode & S_IFMT;
|
||||
+ mt = (*dir)->mode & S_IFMT;
|
||||
for(t=0;ifmt[t];t++)
|
||||
if (ifmt[t] == mt) break;
|
||||
fprintf(outfile,"<%s", ftype[t]);
|
||||
--
|
||||
2.17.2
|
||||
|
7
gating.yaml
Normal file
7
gating.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-10
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/local.functional}
|
5
plans/local.fmf
Normal file
5
plans/local.fmf
Normal file
@ -0,0 +1,5 @@
|
||||
summary: Run all local tests
|
||||
discover:
|
||||
how: fmf
|
||||
execute:
|
||||
how: tmt
|
10
plans/tier1-internal.fmf
Normal file
10
plans/tier1-internal.fmf
Normal file
@ -0,0 +1,10 @@
|
||||
summary: Internal gating tests plan
|
||||
discover:
|
||||
- how: fmf
|
||||
filter: 'tag: Tier1, Tier2'
|
||||
url: https://pkgs.devel.redhat.com/git/tests/tree
|
||||
execute:
|
||||
how: tmt
|
||||
adjust:
|
||||
enabled: false
|
||||
when: distro == centos-stream or distro == fedora
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
||||
SHA512 (tree-2.1.0.tgz) = 17947b17e5fd4d06aea17be0cb107340a0537fb60cd5ee76524ef6eca37a775dbe9a4a7060d54f90a64ac1310131bf76b878fdb4384ab1a5fcb3180787c35a87
|
2
tests/tree-smoke/.gitignore
vendored
Normal file
2
tests/tree-smoke/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/dir-tree
|
||||
/tree.out
|
7
tests/tree-smoke/main.fmf
Normal file
7
tests/tree-smoke/main.fmf
Normal file
@ -0,0 +1,7 @@
|
||||
summary: Check whether `tree` works as expected.
|
||||
test: ./runtest.sh
|
||||
require:
|
||||
- bash
|
||||
- coreutils
|
||||
- diffutils
|
||||
- tree
|
39
tests/tree-smoke/runtest.sh
Executable file
39
tests/tree-smoke/runtest.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
# exit immediately if any command returns non-zero exit code
|
||||
set -e
|
||||
|
||||
# print commands as they are executed by the shell interpreter
|
||||
set -x
|
||||
|
||||
# set locale
|
||||
export LANG=C
|
||||
export LC_ALL=C
|
||||
locale
|
||||
|
||||
# print basic info about `tree`
|
||||
rpm -q tree
|
||||
command -v tree
|
||||
tree --version
|
||||
ldd /usr/bin/tree
|
||||
|
||||
# create a testing directory tree
|
||||
rm -rf dir-tree
|
||||
mkdir dir-tree
|
||||
(
|
||||
set +x
|
||||
cd dir-tree
|
||||
for level in {1..16}; do
|
||||
subdir=subdir-l${level}
|
||||
touch {A,Z,a,z}-regular
|
||||
ln -s a-regular symlink
|
||||
ln -s $subdir dir-symlink
|
||||
ln -s .. parent-dir-symlink
|
||||
ln -s / root-dir-symlink
|
||||
ln -s invalid danglging-symlink
|
||||
mkdir -p $subdir
|
||||
cd $subdir
|
||||
done
|
||||
)
|
||||
tree dir-tree > tree.out
|
||||
diff -u tree.{exp,out}
|
10
tests/tree-smoke/sync.sh
Executable file
10
tests/tree-smoke/sync.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# print commands as they are executed by the shell interpreter
|
||||
set -x
|
||||
|
||||
# run the test
|
||||
./runtest.sh
|
||||
|
||||
# save current out put as the expected output
|
||||
mv -v tree.{out,exp}
|
163
tests/tree-smoke/tree.exp
Normal file
163
tests/tree-smoke/tree.exp
Normal file
@ -0,0 +1,163 @@
|
||||
dir-tree
|
||||
|-- A-regular
|
||||
|-- Z-regular
|
||||
|-- a-regular
|
||||
|-- danglging-symlink -> invalid
|
||||
|-- dir-symlink -> subdir-l1
|
||||
|-- parent-dir-symlink -> ..
|
||||
|-- root-dir-symlink -> /
|
||||
|-- subdir-l1
|
||||
| |-- A-regular
|
||||
| |-- Z-regular
|
||||
| |-- a-regular
|
||||
| |-- danglging-symlink -> invalid
|
||||
| |-- dir-symlink -> subdir-l2
|
||||
| |-- parent-dir-symlink -> ..
|
||||
| |-- root-dir-symlink -> /
|
||||
| |-- subdir-l2
|
||||
| | |-- A-regular
|
||||
| | |-- Z-regular
|
||||
| | |-- a-regular
|
||||
| | |-- danglging-symlink -> invalid
|
||||
| | |-- dir-symlink -> subdir-l3
|
||||
| | |-- parent-dir-symlink -> ..
|
||||
| | |-- root-dir-symlink -> /
|
||||
| | |-- subdir-l3
|
||||
| | | |-- A-regular
|
||||
| | | |-- Z-regular
|
||||
| | | |-- a-regular
|
||||
| | | |-- danglging-symlink -> invalid
|
||||
| | | |-- dir-symlink -> subdir-l4
|
||||
| | | |-- parent-dir-symlink -> ..
|
||||
| | | |-- root-dir-symlink -> /
|
||||
| | | |-- subdir-l4
|
||||
| | | | |-- A-regular
|
||||
| | | | |-- Z-regular
|
||||
| | | | |-- a-regular
|
||||
| | | | |-- danglging-symlink -> invalid
|
||||
| | | | |-- dir-symlink -> subdir-l5
|
||||
| | | | |-- parent-dir-symlink -> ..
|
||||
| | | | |-- root-dir-symlink -> /
|
||||
| | | | |-- subdir-l5
|
||||
| | | | | |-- A-regular
|
||||
| | | | | |-- Z-regular
|
||||
| | | | | |-- a-regular
|
||||
| | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | |-- dir-symlink -> subdir-l6
|
||||
| | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | |-- root-dir-symlink -> /
|
||||
| | | | | |-- subdir-l6
|
||||
| | | | | | |-- A-regular
|
||||
| | | | | | |-- Z-regular
|
||||
| | | | | | |-- a-regular
|
||||
| | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | |-- dir-symlink -> subdir-l7
|
||||
| | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | |-- subdir-l7
|
||||
| | | | | | | |-- A-regular
|
||||
| | | | | | | |-- Z-regular
|
||||
| | | | | | | |-- a-regular
|
||||
| | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | |-- dir-symlink -> subdir-l8
|
||||
| | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | |-- subdir-l8
|
||||
| | | | | | | | |-- A-regular
|
||||
| | | | | | | | |-- Z-regular
|
||||
| | | | | | | | |-- a-regular
|
||||
| | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | |-- dir-symlink -> subdir-l9
|
||||
| | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | |-- subdir-l9
|
||||
| | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | |-- dir-symlink -> subdir-l10
|
||||
| | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | |-- subdir-l10
|
||||
| | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | |-- dir-symlink -> subdir-l11
|
||||
| | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | |-- subdir-l11
|
||||
| | | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | | |-- dir-symlink -> subdir-l12
|
||||
| | | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | | |-- subdir-l12
|
||||
| | | | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | | | |-- dir-symlink -> subdir-l13
|
||||
| | | | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | | | |-- subdir-l13
|
||||
| | | | | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | | | | |-- dir-symlink -> subdir-l14
|
||||
| | | | | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | | | | |-- subdir-l14
|
||||
| | | | | | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | | | | | |-- dir-symlink -> subdir-l15
|
||||
| | | | | | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | | | | | |-- subdir-l15
|
||||
| | | | | | | | | | | | | | | |-- A-regular
|
||||
| | | | | | | | | | | | | | | |-- Z-regular
|
||||
| | | | | | | | | | | | | | | |-- a-regular
|
||||
| | | | | | | | | | | | | | | |-- danglging-symlink -> invalid
|
||||
| | | | | | | | | | | | | | | |-- dir-symlink -> subdir-l16
|
||||
| | | | | | | | | | | | | | | |-- parent-dir-symlink -> ..
|
||||
| | | | | | | | | | | | | | | |-- root-dir-symlink -> /
|
||||
| | | | | | | | | | | | | | | |-- subdir-l16
|
||||
| | | | | | | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | | `-- z-regular
|
||||
| | | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | | `-- z-regular
|
||||
| | | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | | `-- z-regular
|
||||
| | | | | | | |-- symlink -> a-regular
|
||||
| | | | | | | `-- z-regular
|
||||
| | | | | | |-- symlink -> a-regular
|
||||
| | | | | | `-- z-regular
|
||||
| | | | | |-- symlink -> a-regular
|
||||
| | | | | `-- z-regular
|
||||
| | | | |-- symlink -> a-regular
|
||||
| | | | `-- z-regular
|
||||
| | | |-- symlink -> a-regular
|
||||
| | | `-- z-regular
|
||||
| | |-- symlink -> a-regular
|
||||
| | `-- z-regular
|
||||
| |-- symlink -> a-regular
|
||||
| `-- z-regular
|
||||
|-- symlink -> a-regular
|
||||
`-- z-regular
|
||||
|
||||
65 directories, 96 files
|
@ -1,3 +1,12 @@
|
||||
From 061d7800ccad941b6a2f4cb230412097872fa457 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Wed, 22 Dec 2021 10:10:38 +0100
|
||||
Subject: [PATCH] Resolves: #948991 - document --du and --prune options
|
||||
|
||||
... in help output
|
||||
|
||||
Sent upstream via email 20210920
|
||||
---
|
||||
tree.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
@ -5,12 +14,15 @@ diff --git a/tree.c b/tree.c
|
||||
index 5b56afe..3b4a263 100644
|
||||
--- a/tree.c
|
||||
+++ b/tree.c
|
||||
@@ -653,6 +653,8 @@ void usage(int n)
|
||||
@@ -610,6 +610,8 @@ void usage(int n)
|
||||
" --charset X Use charset X for terminal/HTML and indentation line output.\n"
|
||||
" --filelimit # Do not descend dirs with more than # files in them.\n"
|
||||
" --timefmt <f> Print and format time according to the format <f>.\n"
|
||||
" -o filename Output to file instead of stdout.\n"
|
||||
+ " --du Print directory sizes.\n"
|
||||
+ " --prune Prune empty directories from the output.\n"
|
||||
" ------- File options -------\n"
|
||||
" -q Print non-printable characters as '?'.\n"
|
||||
" -N Print non-printable characters as is.\n"
|
||||
--
|
||||
2.31.1
|
||||
|
@ -1,13 +1,14 @@
|
||||
Summary: File system tree viewer
|
||||
Name: tree-pkg
|
||||
Version: 1.8.0
|
||||
Release: 10%{?dist}
|
||||
Version: 2.1.0
|
||||
Release: 8%{?dist}
|
||||
|
||||
# The entire source code is GPLv2+ except strverscmp.c which is LGPLv2+
|
||||
License: GPLv2+ and LGPLv2+
|
||||
# The entire source code is LGPL-2.1-or-later except strverscmp.c
|
||||
# which is LGPL-2.1-or-later.
|
||||
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
||||
|
||||
URL: http://mama.indstate.edu/users/ice/tree/
|
||||
Source: ftp://mama.indstate.edu/linux/tree/tree-%{version}.tgz
|
||||
URL: https://mama.indstate.edu/users/ice/tree/
|
||||
Source: https://mama.indstate.edu/users/ice/tree/src/tree-%{version}.tgz
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: make
|
||||
@ -16,18 +17,10 @@ BuildRequires: make
|
||||
# Sent upstream via email 20210920
|
||||
Patch0: tree-license-fsf-addr.patch
|
||||
|
||||
# Preserve timestamp on man page.
|
||||
# Sent upstream via email 20210920
|
||||
Patch2: tree-preserve-timestamps.patch
|
||||
|
||||
# Document --du and --prune options in help output (bug #948991).
|
||||
# Sent upstream via email 20210920
|
||||
Patch4: tree-args.patch
|
||||
|
||||
# Use correct default for dircolors "ec" field (bug #812934).
|
||||
# Sent upstream via email 20210920
|
||||
Patch6: tree-dircolors-ec.patch
|
||||
|
||||
# Keep file size field length constant regardless of whether SI units
|
||||
# are used (bug #997937).
|
||||
# Sent upstream via email 20210920
|
||||
@ -37,6 +30,10 @@ Patch7: tree-size-field-len.patch
|
||||
# Sent upstream via email 20181106
|
||||
Patch8: tree-static-analysis.patch
|
||||
|
||||
# fix programming mistakes detected by static analysis (RHEL-36490)
|
||||
# Upstream is not active
|
||||
Patch9: tree-static-analysis-2.patch
|
||||
|
||||
%description
|
||||
The source RPM package of tree, which has to be named differently due to
|
||||
limitations of Pagure and Gitlab.
|
||||
@ -57,15 +54,11 @@ sed -e 's/LINUX/__linux__/' -i tree.c
|
||||
|
||||
%build
|
||||
%set_build_flags
|
||||
%make_build CFLAGS="$RPM_OPT_FLAGS $(getconf LFS_CFLAGS)"
|
||||
%make_build CFLAGS="$RPM_OPT_FLAGS $(getconf LFS_CFLAGS)" LDFLAGS="$LDFLAGS"
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT%{_bindir}
|
||||
|
||||
%make_install BINDIR=$RPM_BUILD_ROOT%{_bindir} \
|
||||
MANDIR=$RPM_BUILD_ROOT%{_mandir}/man1
|
||||
|
||||
chmod -x $RPM_BUILD_ROOT%{_mandir}/man1/tree.1
|
||||
%make_install DESTDIR=$RPM_BUILD_ROOT%{_bindir} \
|
||||
MANDIR=$RPM_BUILD_ROOT%{_mandir}
|
||||
|
||||
%files -n tree
|
||||
%{_bindir}/tree
|
||||
@ -74,7 +67,51 @@ chmod -x $RPM_BUILD_ROOT%{_mandir}/man1/tree.1
|
||||
%doc README
|
||||
|
||||
%changelog
|
||||
* Fri Sep 17 2021 Kamil Dudka <kdudka@redhat.com> - 1.8.0-10
|
||||
* Mon Nov 04 2024 Vincent Mihalkovic <vmihalko@redhat.com> - 2.1.0-8
|
||||
- fix programming mistakes detected by static analysis
|
||||
Resolves: RHEL-36490
|
||||
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 2.1.0-7
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 2.1.0-6
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Thu Jun 01 2023 Lukáš Zaoral <lzaoral@redhat.com> - 2.1.0-3
|
||||
- migrate to SPDX license format
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Wed Dec 28 2022 Kamil Dudka <kdudka@redhat.com> - 2.1.0-1
|
||||
- update to the latest upstream release
|
||||
|
||||
* Wed Sep 07 2022 Kamil Dudka <kdudka@redhat.com> - 2.0.4-1
|
||||
- update to the latest upstream release
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Thu Jun 09 2022 Kamil Dudka <kdudka@redhat.com> - 2.0.2-1
|
||||
- update to the latest upstream release (#2094897)
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Jan 17 2022 Kamil Dudka <kdudka@redhat.com> - 2.0.1-1
|
||||
- update to the latest upstream release
|
||||
|
||||
* Wed Dec 22 2021 Kamil Dudka <kdudka@redhat.com> - 2.0.0-1
|
||||
- update to the latest upstream release
|
||||
|
||||
* Fri Sep 17 2021 Kamil Dudka <kdudka@redhat.com> - 1.8.0-9
|
||||
- reflect review comments from Fedora Review (#2001467)
|
||||
|
||||
* Fri Sep 03 2021 Kamil Dudka <kdudka@redhat.com> - 1.8.0-8
|
56
tree-static-analysis-2.patch
Normal file
56
tree-static-analysis-2.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From b25def5b8385f8382d3da1e37fc2204ffedc72e5 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Thu, 31 Oct 2024 14:56:32 +0100
|
||||
Subject: [PATCH] json, xml: fix identical branches warning
|
||||
|
||||
Error: IDENTICAL_BRANCHES (CWE-398):
|
||||
tree-2.1.0/json.c:124: identical_branches: The same code is executed regardless of whether "file->lnk" is true, because the 'then' and 'else' branches are identical. Should one of the branches be modified, or the entire 'if' statement replaced?
|
||||
122|
|
||||
123| if (file != NULL) {
|
||||
124|-> if (file->lnk) mt = file->mode & S_IFMT;
|
||||
125| else mt = file->mode & S_IFMT;
|
||||
126| } else mt = 0;
|
||||
|
||||
Error: IDENTICAL_BRANCHES (CWE-398):
|
||||
tree-2.1.0/json.c:124: identical_branches: The same code is executed regardless of whether "file->lnk" is true, because the 'then' and 'else' branches are identical. Should one of the branches be modified, or the entire 'if' statement replaced?
|
||||
122|
|
||||
123| if (file != NULL) {
|
||||
124|-> if (file->lnk) mt = file->mode & S_IFMT;
|
||||
125| else mt = file->mode & S_IFMT;
|
||||
126| } else mt = 0;
|
||||
---
|
||||
json.c | 3 +--
|
||||
xml.c | 3 +--
|
||||
2 files changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/json.c b/json.c
|
||||
index 3495448..e86a590 100644
|
||||
--- a/json.c
|
||||
+++ b/json.c
|
||||
@@ -121,8 +121,7 @@ int json_printinfo(char *dirname, struct _info *file, int level)
|
||||
if (!noindent) json_indent(level);
|
||||
|
||||
if (file != NULL) {
|
||||
- if (file->lnk) mt = file->mode & S_IFMT;
|
||||
- else mt = file->mode & S_IFMT;
|
||||
+ mt = file->mode & S_IFMT;
|
||||
} else mt = 0;
|
||||
|
||||
for(t=0;ifmt[t];t++)
|
||||
diff --git a/xml.c b/xml.c
|
||||
index 9fdf74e..96c76f2 100644
|
||||
--- a/xml.c
|
||||
+++ b/xml.c
|
||||
@@ -105,8 +105,7 @@ int xml_printinfo(char *dirname, struct _info *file, int level)
|
||||
if (!noindent) xml_indent(level);
|
||||
|
||||
if (file != NULL) {
|
||||
- if (file->lnk) mt = file->mode & S_IFMT;
|
||||
- else mt = file->mode & S_IFMT;
|
||||
+ mt = file->mode & S_IFMT;
|
||||
} else mt = 0;
|
||||
|
||||
for(t=0;ifmt[t];t++)
|
||||
--
|
||||
2.46.2
|
||||
|
39
tree-static-analysis.patch
Normal file
39
tree-static-analysis.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From 48641275c0cd018441685f2d3145038017f1ea42 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Tue, 6 Nov 2018 16:31:32 +0100
|
||||
Subject: [PATCH] tree: fix programming mistakes detected by static analysis
|
||||
|
||||
---
|
||||
list.c | 2 +-
|
||||
tree.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/list.c b/list.c
|
||||
index 36cfbe5..c490dec 100644
|
||||
--- a/list.c
|
||||
+++ b/list.c
|
||||
@@ -43,7 +43,7 @@ void emit_tree(char **dirname, bool needfulltree)
|
||||
struct ignorefile *ig = NULL;
|
||||
struct infofile *inf = NULL;
|
||||
struct _info **dir = NULL, *info = NULL;
|
||||
- char *err;
|
||||
+ char *err = NULL;
|
||||
int i, j, n, needsclosed;
|
||||
struct stat st;
|
||||
|
||||
diff --git a/tree.c b/tree.c
|
||||
index 0d51281..94aed2c 100644
|
||||
--- a/tree.c
|
||||
+++ b/tree.c
|
||||
@@ -917,7 +917,7 @@ struct _info **unix_getfulltree(char *d, u_long lev, dev_t dev, off_t *size, cha
|
||||
if (*(*dir)->lnk == '/')
|
||||
(*dir)->child = unix_getfulltree((*dir)->lnk,lev+1,dev,&((*dir)->size),&((*dir)->err));
|
||||
else {
|
||||
- if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->name)+1024));
|
||||
+ if (strlen(d)+strlen((*dir)->lnk)+2 > pathsize) path=xrealloc(path,pathsize=(strlen(d)+strlen((*dir)->lnk)+1024));
|
||||
if (fflag && !strcmp(d,"/")) sprintf(path,"%s%s",d,(*dir)->lnk);
|
||||
else sprintf(path,"%s/%s",d,(*dir)->lnk);
|
||||
(*dir)->child = unix_getfulltree(path,lev+1,dev,&((*dir)->size),&((*dir)->err));
|
||||
--
|
||||
2.17.2
|
||||
|
Loading…
Reference in New Issue
Block a user