Compare commits

..

No commits in common. "e2431b46c992aba7984ec16705dd99799fff0ecd" and "36c3f93f98dc42594792376449c986d41fdbb902" have entirely different histories.

6 changed files with 47 additions and 88 deletions

View File

@ -1,59 +0,0 @@
From 77420bf2e35444f348b19e0acaf1f77bb4ed3f76 Mon Sep 17 00:00:00 2001
From: fandeyuan <fandeyuan@kylinos.cn>
Date: Tue, 30 Apr 2024 14:18:20 +0800
Subject: [PATCH] which fails for long path
---
which.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/which.c b/which.c
index 1606052..525c0d0 100644
--- a/which.c
+++ b/which.c
@@ -19,10 +19,15 @@
#include "sys.h"
#include <stdio.h>
#include <ctype.h>
+#include <limits.h>
#include "getopt.h"
#include "tilde/tilde.h"
#include "bash.h"
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
static const char *progname;
static void print_usage(FILE *out)
@@ -63,7 +68,7 @@ static void print_fail(const char *name, const char *path_list)
fprintf(stderr, "%s: no %s in (%s)\n", progname, name, path_list);
}
-static char home[256];
+static char home[PATH_MAX];
static size_t homelen = 0;
static int absolute_path_given;
@@ -162,7 +167,7 @@ static char *find_command_in_path(const char *name, const char *path_list, int *
return (found);
}
-static char cwd[256];
+static char cwd[PATH_MAX];
static size_t cwdlen;
static void get_current_working_directory(void)
@@ -194,7 +199,7 @@ static void get_current_working_directory(void)
static char *path_clean_up(const char *path)
{
- static char result[256];
+ static char result[PATH_MAX];
const char *p1 = path;
char *p2 = result;
--
2.33.0

View File

@ -0,0 +1,27 @@
diff -up which-2.21/tilde/tilde.c.me which-2.21/tilde/tilde.c
--- which-2.21/tilde/tilde.c.me 2018-07-23 14:32:47.002225732 +0200
+++ which-2.21/tilde/tilde.c 2018-07-23 14:49:06.363623898 +0200
@@ -196,7 +196,8 @@ tilde_expand (string)
int result_size, result_index;
result_index = result_size = 0;
- if (result = strchr (string, '~'))
+ result = strchr (string, '~');
+ if (result)
result = (char *)xmalloc (result_size = (strlen (string) + 16));
else
result = (char *)xmalloc (result_size = (strlen (string) + 1));
diff -up which-2.21/which.c.me which-2.21/which.c
diff -up which-2.21/which.c.me which-2.21/which.c
--- which-2.21/which.c.me 2018-07-23 15:09:04.355222509 +0200
+++ which-2.21/which.c 2018-07-25 14:57:43.696309701 +0200
@@ -671,6 +671,9 @@ int main(int argc, char *argv[])
}
}
+ if (abs_path)
+ free(abs_path);
+
return fail_count;
}

View File

@ -1,14 +1,15 @@
Name: which Name: which
Version: 2.21 Version: 2.21
Release: 16 Release: 13
Summary: Show the full path of commands Summary: Show the full path of commands
License: GPLv3 License: GPLv3
URL: https://savannah.gnu.org/projects/which/ URL: https://savannah.gnu.org/projects/which/
Source0: http://ftp.gnu.org/gnu/which/%{name}-%{version}.tar.gz Source0: http://ftp.gnu.org/gnu/which/%{name}-%{version}.tar.gz
Source1: which2.sh
Source2: which2.csh
Patch0: which-2.21-coverity-fixes.patch
Patch1: 0001-which-fails-for-long-path.patch BuildRequires: gcc git
BuildRequires: gcc
%description %description
Which takes one or more arguments. For each of its arguments it prints to stdout Which takes one or more arguments. For each of its arguments it prints to stdout
@ -21,7 +22,7 @@ Summary: Help files for which
Contains documents and manuals files for which Contains documents and manuals files for which
%prep %prep
%autosetup -n %{name}-%{version} -p1 %autosetup -n %{name}-%{version} -p1 -S git
%build %build
%configure %configure
@ -30,10 +31,13 @@ Contains documents and manuals files for which
%install %install
%make_install %make_install
mkdir -p %{buildroot}/%{_sysconfdir}/profile.d
install -p -m 0644 %{SOURCE1} %{SOURCE2} %{buildroot}/%{_sysconfdir}/profile.d
rm -f %{buildroot}/%{_datadir}/info/dir rm -f %{buildroot}/%{_datadir}/info/dir
%files %files
%license COPYING AUTHORS %license COPYING AUTHORS
%{_sysconfdir}/profile.d/%{name}*
%{_bindir}/%{name} %{_bindir}/%{name}
%files help %files help
@ -42,25 +46,7 @@ rm -f %{buildroot}/%{_datadir}/info/dir
%{_datadir}/info/%{name}.info.gz %{_datadir}/info/%{name}.info.gz
%changelog %changelog
* Tue Apr 30 2024 Deyuan Fan <fandeyuan@kylinos.cn> - 2.21-16 * Wed Oct 10 2019 luhuaxin <luhuaxin@huawei.com> - 2.21-13
- Type: bugfix
- ID: NA
- SUG: NA
- DESC: fix:which fails for long path
* Mon Jun 20 2022 yangzhao <yangzhao1@kylinos.cn> - 2.21-15
- Type: enhancement
- ID: NA
- SUG: NA
- DESC: remove unnecessary -S git
* Wed Jan 8 2020 openEuler Buildteam <buildteam@openeuler.org> - 2.21-14
- Type: enhancement
- ID: NA
- SUG: NA
- DESC: remove unnecessary files
* Thu Oct 10 2019 luhuaxin <luhuaxin@huawei.com> - 2.21-13
- Type: enhancement - Type: enhancement
- ID: NA - ID: NA
- SUG: NA - SUG: NA

View File

@ -1,5 +0,0 @@
version_control: NA
src_repo:
tag_prefix:
seperator:
url: http://ftp.gnu.org/gnu/which/

3
which2.csh Normal file
View File

@ -0,0 +1,3 @@
# Initialization script for csh
# alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

7
which2.sh Normal file
View File

@ -0,0 +1,7 @@
# Initialization script for bash and sh
if [ "$0" = ksh ] ; then
alias which='(alias; typeset -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
else
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
fi