Commit Graph

121 Commits

Author SHA1 Message Date
Maxim Sobolev
db6c6159b0 Make sortdeps() working with dependency lists containing one or no elements.
Submitted by:	roam
MFC in:		1 week
2002-02-20 17:15:17 +00:00
Jordan K. Hubbard
fe7283fc23 Choose more paranoid modes for the temporary directory so the user can't
easily browse its contents.

Noted by:	Antoine
2001-11-22 01:54:33 +00:00
Maxim Sobolev
0a811cbf0c Improve recently committed fix for -t bug.
Submitted by:	"Andrew L. Neporada" <andr@dgap.mipt.ru>
MFC after:	3 days
2001-11-15 15:13:24 +00:00
Maxim Sobolev
77b90d2a0e Make `-t' flag in pkg_*(1) tools actually working.
PR:		30843
Submitted by:	Vladimir B. Grebenschikov <vova@express.ru>
MFC after:	2 weeks
2001-10-11 11:29:12 +00:00
Maxim Sobolev
f3fa78b0b5 - Introduce a notion of `packing list format version'. This allows making
non-backward compatible changes in the format of packing list and handle
  them gracefully;
- fix a longstanding issue with symlinks handling. Instead of recording
  checksum for the file symlink points to, record checksum for the value
  returned by readlink(2). For backward compatibility increase packing list
  format minor version number and provide a fallback to a previous behaviour,
  if package in question was created with older version of pkg_* tools;

Submitted by:	Alec Wolman <wolman@cs.washington.edu>, sobomax

- don't record MD5 checksum for device nodes, fifo's and other non-regular
  files.

Submitted by:	nbm
MFC in:		2 weeks
2001-10-10 08:21:41 +00:00
Maxim Sobolev
d100deb8cc WARNS=2 cleanup.
Tested on:	i386, alpha
MFC after:	2 weeks
2001-10-10 06:58:42 +00:00
Maxim Sobolev
a09c8e438b Various fixes and improvements:
- fix harmless compiler's warnings (unused variables and missed prototype);
- before refusing to delete package because "there are packages installed
  that require this package" check that packages in question is actually
  installed;
- add new `-r' option to pkg_delete(8), which instructs it to delete not only
  packages specified at command line, but all packages that depend on
  specified packages as well.

MFC after:	2 weeks
2001-09-19 08:06:48 +00:00
David E. O'Brien
0dd1c79320 Reduce private "lesser known" function redirection to improve clarity.
Approved by:	jkh
2001-08-13 04:18:30 +00:00
Jonathan Chen
f0b8b1fccb fix for pkg_add to symlinked prefix directories that are more than 1 link deep.
PR:	bin/28274
Submitted by:	John Hein <jhein@timing.com>
MFC after:	1 month
2001-08-02 18:20:27 +00:00
Maxim Sobolev
3d02d34c75 Cosmetics: replace dozen instances of "(tmp = getenv(PKG_DBDIR) ? tmp : DEF_LOG_DIR)"
with macro.

MFC after:	1 month
2001-08-02 13:13:06 +00:00
Maxim Sobolev
a48179c2fa Cosmetics: kill blank lines at the end of file.
MFC after:	1 month
2001-08-02 13:08:43 +00:00
Maxim Sobolev
2d800f2bd9 Usability tweak:
Use '' quotes instead of `' to delimit names of files and packages in
  warning and error messages, because it is easier to cut-n-paste name in
  question that way (single click) without confusing the shell. And yes,
  I know that it is less eye-candy...

MFC after:	1 month
2001-08-02 12:38:29 +00:00
Maxim Sobolev
94d81832dd When there is a file that can't be deleted due to checksum mismatch print name
of that file to stdout to simplify debugging. IMO it was a mistake to print
this warning only when `verbose' mode is on.

MFC after:	1 month
2001-08-02 12:19:32 +00:00
David E. O'Brien
43b866b0ed The security officer requested this be backed out for discussion. 2001-07-28 04:44:09 +00:00
David E. O'Brien
2bae1ab6a5 Remove s_strl*(). I am not sure what was thought they accomplished.
When reading the code I had to stop, say "ok, what does *these*
modifications of strl*() do?  Pull out grep.  Oh, not in add/, maybe above
in ../lib/?  Yep.  So what do they do?  Comments above them are misleading,
guess I'll have to read the code.  Oh, they just test strl* against the
size and return the result of the test.  Now I can continue to read the
code I was.

The uses of s_strl*() then test that result and errx()'s.
Lets think about the "optimized" code I am removing:

In general the compiler pushes the three args to strl* onto the stack and calls
s_strl*.  s_strl* has to indirectly access 3 args from the stack.  Then push
them on the stack a 2nd time for the real strl* call.  s_strl* then pops the
return from strl* off the stack; or moves it from the register it was returned
in, to the register where tests can happen.  s_strl* then pops the three
arguments to strl*.  Perform the test, push the result of the test, or move it
from the result register to the return value register.  The caller to s_strl*
now has to either pop the return value of s_strl* or move it from the return
value register to the test register.  The caller then pops the three args to
s_strl* off the stack (the same args that s_strl* itself had to pop off after
the real call to strl*).  The s_strl* caller then performs a simular test to
what has already been done, and conditionally jumps.  By doing things this way, we've given the compiler optimizer less to work with.

Also, please don't forget the that call to s_strl* has possibly jumped to code
not in the cache due to being far away from the calling code, thus causing a
pipeline stall.

So where is the "optimization" from s_strl*?
It isn't code clarity.
It isn't code execution speed.  It isn't code size either.
2001-07-28 01:59:58 +00:00
Maxim Sobolev
a153062b97 Use reallocf(3) to increase size of malloc'ed buffer instead of
malloc()+memcpy()+free().
2001-07-20 13:20:32 +00:00
David E. O'Brien
90e655ea4e Perform a major cleanup of the usr.sbin Makefiles.
These are not perfectly in agreement with each other style-wise, but they
are orders of orders of magnitude more consistent style-wise than before.
2001-07-20 06:20:32 +00:00
Brian Somers
7bc6d0158f Fix the type of the NULL arg to execl()
Idea from: Theo de Raadt <deraadt@openbsd.org>
2001-07-09 09:24:06 +00:00
Dag-Erling Smørgrav
5333a1958c Use getdtablesize() instead of OPEN_MAX.
Submitted by:	bde
2001-06-13 11:55:40 +00:00
Dag-Erling Smørgrav
2b67592fad Pass on the verbose option to fetchGetURL().
In the child that's set up to run tar(1), close all file descriptors except
stdin, stdout and stderr.

PR:		bin/27760
2001-06-11 14:18:26 +00:00
Maxim Sobolev
7f7ace8fb2 Style policy: reformat multiline comments to conform to style(9). 2001-05-17 10:12:45 +00:00
Kris Kennaway
ff7543ca42 Clean up some of the evil string handling in this code, replace
warnx()+exit() with errx() and replace a big if..then..else construct
to determine the package download directory with a lookup table.

Reviewed by:	jkh
MFC after:	2 weeks
2001-05-12 09:44:32 +00:00
Maxim Sobolev
c805813625 - Add which(1)-like functionality into pkg_info;
- fix a harmless bug in match_installed() function introduced in my last
  commit;
- uniformely reorder includes across files.

Submitted by:		Garrett Rooney <rooneg@electricjellyfish.net>
Not objected by:	jkh, -ports
2001-03-23 18:45:24 +00:00
Maxim Sobolev
a658650611 When creating a package sort dependencies in such a way that if dependency
A depends on dependency B then dependency A will be in all cases listed
before B, so ``pkg_add -r'' will fetch/install packages in the correct order.

Previously dependencies were sorted just by its names, which is why
``pkg_add -r'' never actually worked properly.

To be usefull, hovewer, this fix requires that all packages have been
rebuilt, so it will take some time until users would be able to feel
posititive improvements. For the same reasons it is desirable to propagate
these changes to the 4-stable package building cluster *before* 4.3 ports
freeze, so packages for 4.3-RELEASE would be properly prepared.

Prompted by:			kris
Insanely appreciated by:	obrien
Silently approved by:		jkh, -ports
2001-03-15 10:47:00 +00:00
Maxim Sobolev
6f8e863b0f When matching installed packages against glob keep track of which patterns
actually triggered a match and which did not, and add patterns that didn't
into resulting list, so caller will have a chance to notify user that package
isn't installed. This should fix current, POLA-breaking behaviour when user
doesn't receive a notification if he specifies several packages, some of which
aren't installed.
2001-03-14 19:46:43 +00:00
Maxim Sobolev
79f0014dd5 Properly detect and report malloc(3) failures. 2001-02-27 11:15:04 +00:00
Maxim Sobolev
29114b9283 - Merge recently added into pkg_info(1) regex/glob matching functionality into
pkg_delete(1) as well;
- add a new `-a' option for pkg_delete(1) to delete all installed packages;
- add a new `-i' option for pkg_delete(1) to request simple rm(1)-like
  interactive confirmation before attempting to delete each package.

Silently approved by:	jkh, -ports
2001-02-27 09:00:18 +00:00
Maxim Sobolev
acf6a4418d - Add ability to handle bzip2-compressed packages;
- fix cosmetics to shut-up compiler in -pedantic mode (axe several unused vars
  and provide default clause in several switch() statements).

No response from:	-ports
2001-01-22 12:01:55 +00:00
David E. O'Brien
1a37aa566b Add `_PATH_DEVZERO'.
Use _PATH_* where where possible.
2000-12-09 09:35:55 +00:00
Dag-Erling Smørgrav
badea70002 Insetad of using fileno(ftp) as stdin for tar, use a pipe and have the
parent pass the data received from the server to the child.
2000-10-29 15:39:51 +00:00
Jordan K. Hubbard
aed4d2d137 Cause fatal error messages to be a little more helpful to the programmer
concerning where they're taking place.

Switch from [r]index() to str[r]chr() functions, which are more ISO
compliant.

Prompted by:	Edward Welbourne <eddy@vortigen.demon.co.uk>
2000-10-22 09:53:27 +00:00
Maxim Sobolev
b2b064c2a0 Fix symlink-to-a-dir handling in pkg_delete.
Reviewed by:	-ports
Tested by:	bento
2000-09-18 07:41:48 +00:00
Dag-Erling Smørgrav
c66a7bdea9 Use libfetch instead of libftpio. This adds support for http and IPv6. 2000-06-27 11:00:07 +00:00
Sheldon Hearn
8d548e1f88 Do not preserve UIDs, permissions nor flags of package system files in
tar files.  This fixes clean-up problems during package creation and
does not affect the actual files to be included in the package.

The fix submitted on the attributed PR was identical to the one
obtained from NetBSD.

PR:		17386
Reported by:	Adrian Filipi-Martin <adrian@ubergeeks.com>
Obtained from:	NetBSD
2000-03-15 09:18:12 +00:00
Jordan K. Hubbard
ff6f5bfb91 1. If checking for directory-ness, check "dir" and "dir/" to catch
the case where we have a symlink pointing at a dir.

2. Restore stomped character before returning in make_hierarchy()
2000-02-19 08:58:54 +00:00
David E. O'Brien
e0908a9f34 Use lstat(2) rather than stat(2) in isdir(), so that a symlink to a
directory is not considered a directory.  I have a feeling all the other
stat(2) calls should instead be lstat(2) calls, but I have not suffiently
determined that the current behavior [especially in isfile()] isn't
depended upon by someone.

Ok'ed by:	JKH
2000-02-08 06:36:08 +00:00
Jordan K. Hubbard
481dc61302 Deal with package filenames which contain spaces.
Submitted by:	Ming-I Hsieh <mihs@wm28.csie.ncu.edu.tw>
PR:		15667
2000-01-04 05:08:58 +00:00
Peter Wemm
97d92980a9 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
Bill Fumerola
0845a96cd0 -Wall fixes. Ambigious if/elses, uninitialized values, missing headers,
missing prototypes, and empty format strings.
1999-08-11 20:55:42 +00:00
Jordan K. Hubbard
722678f1c8 Revive the PKG_ADD_BASE stuff a bit. 1999-05-12 06:06:49 +00:00
Jordan K. Hubbard
0440e20b71 Make it possible to have separate install scripts as well as have
an on-delete script.

Submitted by:	Rajesh Vaidheeswarran <rv@fore.com>
1998-12-16 13:59:31 +00:00
Satoshi Asami
cf144a3d4a Fix support for uncompressed (".tar") package types. It's not completely
fixed (chained dependency checking for pkg_add is broken, for one thing)
but at least you can now create one package and use it.
1998-12-05 06:29:03 +00:00
Jordan K. Hubbard
27f612d03f Revert 1.33; lstat() is indeed the wrong thing to do here. I'll
revisit this after release.
1998-10-14 18:52:04 +00:00
Jordan K. Hubbard
d0a638ae52 Use lstat() rather than stat in determining whether a file exists,
otherwise we'll miss the "symlink exists but points nowhere" case.
Submitted by:	asami and/or possibly <ru@ucb.crimea.ua>
1998-10-09 00:01:16 +00:00
Jordan K. Hubbard
375ca45770 correct usage of cleanup() everywhere - this became bogus when the warnx/errx
stuff was added and nobody seems to have noticed. :)
Noticed by:	Josh MacDonald <jmacd@paris.CS.Berkeley.EDU>
1998-09-11 07:26:58 +00:00
Jordan K. Hubbard
8c26c30381 o Set paths internally for pkg_add for tools we might want to invoke.
o Fix bogus suffix handling.
o Tell user when an FTP url is being xferred rather than being silent.
  This sort of violates "the unix way" but it stops people from whacking
  ^C when they think it's hung, too.  Sometimes visual indication of
  success is important.  Doesn't spit out anything if not on a TTY.
1998-09-08 10:42:26 +00:00
Jordan K. Hubbard
45878e4d34 Silence potentially bogus warning. 1998-09-01 06:58:11 +00:00
Jacques Vidrine
dd123c1609 Paranoia: use mkdtemp instead of mktemp
PR:		bin/3212
Reviewed by:	jkh@FreeBSD.ORG
1998-07-28 01:18:02 +00:00
Tim Vanderhoek
922fcd0032 Clarify "Cannot delete file as directory" errmessage.
PR:		bin/1985
1998-07-18 22:19:11 +00:00
Jordan K. Hubbard
90b14d4761 Fix dependent-package loading when pkg_adding with an FTP URL. I broke
this when I changed the playpen code to disallow recursion.  I know
this fixes a PR someplace but I can't seem to find it with the GNATs
search tool.
1998-04-12 16:01:10 +00:00