Fix is_older_than a little better, and make is_newer_than correct.
This commit is contained in:
parent
a88a177f99
commit
157db50df7
@ -22,7 +22,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd Jun 03, 2008
|
||||
.Dd Jul 03, 2008
|
||||
.Dt RUNSCRIPT 8 SMM
|
||||
.Os OpenRC
|
||||
.Sh NAME
|
||||
@ -214,7 +214,7 @@ is a directory, then check all it's contents too.
|
||||
.It Ic is_older_than Ar file1 Ar file2 ...
|
||||
If
|
||||
.Ar file1
|
||||
is older than
|
||||
is newer than
|
||||
.Ar file2
|
||||
return 0, otherwise 1.
|
||||
If
|
||||
@ -441,6 +441,10 @@ show()
|
||||
}
|
||||
|
||||
.Ed
|
||||
.Sh BUGS
|
||||
is_older_than should return 0 on success.
|
||||
Instead we return 1 to be compliant with Gentoo baselayout.
|
||||
Users are encouraged to use the is_newer_than function which returns correctly.
|
||||
.Sh SEE ALSO
|
||||
.Xr einfo 3 ,
|
||||
.Xr rc 8 ,
|
||||
|
@ -408,7 +408,6 @@ static int do_shell_var(int argc, char **argv)
|
||||
void run_applets(int argc, char **argv)
|
||||
{
|
||||
int i = 2;
|
||||
bool (*is_than) (const char *, const char *);
|
||||
char *p;
|
||||
pid_t pid = 0;
|
||||
|
||||
@ -439,21 +438,25 @@ void run_applets(int argc, char **argv)
|
||||
|
||||
/* This test is perverted - historically the baselayout function
|
||||
* returns 0 on *failure*, which is plain wrong */
|
||||
if (strcmp(applet, "is_newer_than") == 0 ||
|
||||
strcmp(applet, "is_older_than") == 0)
|
||||
{
|
||||
if (strcmp(applet, "is_older_than") == 0) {
|
||||
if (argc < 3)
|
||||
exit (EXIT_FAILURE);
|
||||
if (strcmp(applet, "is_newer_than") == 0)
|
||||
is_than = &rc_older_than;
|
||||
else
|
||||
is_than = &rc_newer_than;
|
||||
while (i < argc) {
|
||||
if (!is_than(argv[1], argv[i++]))
|
||||
if (!rc_newer_than(argv[1], argv[i++]))
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
exit(EXIT_FAILURE);
|
||||
};
|
||||
/* This tets is correct as it's not present in baselayout */
|
||||
if (strcmp(applet, "is_newer_than") == 0) {
|
||||
if (argc < 3)
|
||||
exit (EXIT_FAILURE);
|
||||
while (i < argc) {
|
||||
if (!rc_newer_than(argv[1], argv[i++]))
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
exit(EXIT_SUCCESS);
|
||||
};
|
||||
|
||||
if (applet[0] == 'e' || (applet[0] == 'v' && applet[1] == 'e'))
|
||||
exit(do_e(argc, argv));
|
||||
|
Loading…
Reference in New Issue
Block a user