Importing bin/ln
Change-Id: I318e79f2d02dcff10bda8af335d286a78be5c5a2
This commit is contained in:
		
							parent
							
								
									7104bb23a9
								
							
						
					
					
						commit
						c31c70743a
					
				| @ -1,7 +1,7 @@ | |||||||
| #	$NetBSD: Makefile,v 1.22 2007/12/31 15:31:24 ad Exp $
 | #	$NetBSD: Makefile,v 1.22 2007/12/31 15:31:24 ad Exp $
 | ||||||
| #	@(#)Makefile	8.1 (Berkeley) 5/31/93
 | #	@(#)Makefile	8.1 (Berkeley) 5/31/93
 | ||||||
| 
 | 
 | ||||||
| SUBDIR=	cat date echo ed expr kill \
 | SUBDIR=	cat date echo ed expr kill ln \
 | ||||||
| 	mkdir pax pwd rm rmdir test | 	mkdir pax pwd rm rmdir test | ||||||
| 
 | 
 | ||||||
| .include <bsd.subdir.mk> | .include <bsd.subdir.mk> | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								bin/ln/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								bin/ln/Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | #	$NetBSD: Makefile,v 1.10 1999/09/27 17:44:50 jdolecek Exp $
 | ||||||
|  | #	@(#)Makefile	8.2 (Berkeley) 5/31/93
 | ||||||
|  | 
 | ||||||
|  | PROG=	ln | ||||||
|  | MAN=	ln.1 | ||||||
|  | 
 | ||||||
|  | .include <bsd.prog.mk> | ||||||
							
								
								
									
										173
									
								
								bin/ln/ln.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								bin/ln/ln.1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,173 @@ | |||||||
|  | .\"	$NetBSD: ln.1,v 1.25 2012/03/22 07:58:17 wiz Exp $ | ||||||
|  | .\" | ||||||
|  | .\" Copyright (c) 1980, 1990, 1993 | ||||||
|  | .\"	The Regents of the University of California.  All rights reserved. | ||||||
|  | .\" | ||||||
|  | .\" This code is derived from software contributed to Berkeley by | ||||||
|  | .\" the Institute of Electrical and Electronics Engineers, Inc. | ||||||
|  | .\" | ||||||
|  | .\" Redistribution and use in source and binary forms, with or without | ||||||
|  | .\" modification, are permitted provided that the following conditions | ||||||
|  | .\" are met: | ||||||
|  | .\" 1. Redistributions of source code must retain the above copyright | ||||||
|  | .\"    notice, this list of conditions and the following disclaimer. | ||||||
|  | .\" 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  | .\"    notice, this list of conditions and the following disclaimer in the | ||||||
|  | .\"    documentation and/or other materials provided with the distribution. | ||||||
|  | .\" 3. Neither the name of the University nor the names of its contributors | ||||||
|  | .\"    may be used to endorse or promote products derived from this software | ||||||
|  | .\"    without specific prior written permission. | ||||||
|  | .\" | ||||||
|  | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||||||
|  | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||||
|  | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||||
|  | .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||||||
|  | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||||
|  | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||||
|  | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||||
|  | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||||
|  | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||||
|  | .\" SUCH DAMAGE. | ||||||
|  | .\" | ||||||
|  | .\"	@(#)ln.1	8.2 (Berkeley) 12/30/93 | ||||||
|  | .\" | ||||||
|  | .Dd October 29, 2007 | ||||||
|  | .Dt LN 1 | ||||||
|  | .Os | ||||||
|  | .Sh NAME | ||||||
|  | .Nm ln | ||||||
|  | .Nd make links | ||||||
|  | .Sh SYNOPSIS | ||||||
|  | .Nm | ||||||
|  | .Op Fl fhinsv | ||||||
|  | .Ar source_file | ||||||
|  | .Op Ar target_file | ||||||
|  | .Nm | ||||||
|  | .Op Fl fhinsv | ||||||
|  | .Ar source_file ... target_dir | ||||||
|  | .Sh DESCRIPTION | ||||||
|  | The | ||||||
|  | .Nm | ||||||
|  | utility creates a new directory entry (linked file) which has the | ||||||
|  | same modes as the original file. | ||||||
|  | It is useful for maintaining multiple copies of a file in many places | ||||||
|  | at once without using up storage for the | ||||||
|  | .Dq copies ; | ||||||
|  | instead, a link | ||||||
|  | .Dq points | ||||||
|  | to the original copy. | ||||||
|  | There are two types of links: hard links and symbolic links. | ||||||
|  | How a link | ||||||
|  | .Dq points | ||||||
|  | to a file is one of the differences between a hard or symbolic link. | ||||||
|  | .Pp | ||||||
|  | The options are as follows: | ||||||
|  | .Bl -tag -width flag | ||||||
|  | .It Fl f | ||||||
|  | Unlink any already existing file, permitting the link to occur. | ||||||
|  | .It Fl h | ||||||
|  | If the | ||||||
|  | .Ar target_file | ||||||
|  | or | ||||||
|  | .Ar target_dir | ||||||
|  | is a symbolic link, do not follow it. | ||||||
|  | This is most useful with the | ||||||
|  | .Fl f | ||||||
|  | option, to replace a symlink which may point to a directory. | ||||||
|  | .It Fl i | ||||||
|  | Cause | ||||||
|  | .Nm | ||||||
|  | to write a prompt to standard error if the target file exists. | ||||||
|  | If the response from the standard input begins with the character | ||||||
|  | .Sq Li y | ||||||
|  | or | ||||||
|  | .Sq Li Y , | ||||||
|  | then unlink the target file so that the link may occur. | ||||||
|  | Otherwise, do not attempt the link. | ||||||
|  | (The | ||||||
|  | .Fl i | ||||||
|  | option overrides any previous | ||||||
|  | .Fl f | ||||||
|  | options.) | ||||||
|  | .It Fl n | ||||||
|  | Same as | ||||||
|  | .Fl h , | ||||||
|  | for compatibility with other | ||||||
|  | .Nm | ||||||
|  | implementations, namely GNU coreutils. | ||||||
|  | .It Fl s | ||||||
|  | Create a symbolic link. | ||||||
|  | .It Fl v | ||||||
|  | Cause | ||||||
|  | .Nm | ||||||
|  | to be verbose, showing files as they are processed. | ||||||
|  | .El | ||||||
|  | .Pp | ||||||
|  | By default | ||||||
|  | .Nm | ||||||
|  | makes | ||||||
|  | .Em hard | ||||||
|  | links. | ||||||
|  | A hard link to a file is indistinguishable from the original directory entry; | ||||||
|  | any changes to a file are effective independent of the name used to reference | ||||||
|  | the file. | ||||||
|  | Hard links may not normally refer to directories and may not span file systems. | ||||||
|  | .Pp | ||||||
|  | A symbolic link contains the name of the file to | ||||||
|  | which it is linked. | ||||||
|  | The referenced file is used when an | ||||||
|  | .Xr open 2 | ||||||
|  | operation is performed on the link. | ||||||
|  | A | ||||||
|  | .Xr stat 2 | ||||||
|  | on a symbolic link will return the linked-to file; an | ||||||
|  | .Xr lstat 2 | ||||||
|  | must be done to obtain information about the link. | ||||||
|  | The | ||||||
|  | .Xr readlink 2 | ||||||
|  | call may be used to read the contents of a symbolic link. | ||||||
|  | Symbolic links may span file systems and may refer to directories. | ||||||
|  | .Pp | ||||||
|  | Given one or two arguments, | ||||||
|  | .Nm | ||||||
|  | creates a link to an existing file | ||||||
|  | .Ar source_file  . | ||||||
|  | If | ||||||
|  | .Ar target_file | ||||||
|  | is given, the link has that name; | ||||||
|  | .Ar target_file | ||||||
|  | may also be a directory in which to place the link; | ||||||
|  | otherwise it is placed in the current directory. | ||||||
|  | If only the directory is specified, the link will be made | ||||||
|  | to the last component of | ||||||
|  | .Ar source_file  . | ||||||
|  | .Pp | ||||||
|  | Given more than two arguments, | ||||||
|  | .Nm | ||||||
|  | makes links in | ||||||
|  | .Ar target_dir | ||||||
|  | to all the named source files. | ||||||
|  | The links made will have the same name as the files being linked to. | ||||||
|  | .Sh SEE ALSO | ||||||
|  | .Xr link 2 , | ||||||
|  | .Xr lstat 2 , | ||||||
|  | .Xr readlink 2 , | ||||||
|  | .Xr stat 2 , | ||||||
|  | .Xr symlink 2 , | ||||||
|  | .Xr symlink 7 | ||||||
|  | .Sh STANDARDS | ||||||
|  | The | ||||||
|  | .Nm | ||||||
|  | utility conforms to | ||||||
|  | .St -p1003.2-92 . | ||||||
|  | .Pp | ||||||
|  | The | ||||||
|  | .Fl v | ||||||
|  | option is an extension to | ||||||
|  | .St -p1003.2-92 . | ||||||
|  | .Sh HISTORY | ||||||
|  | A | ||||||
|  | .Nm | ||||||
|  | utility appeared in | ||||||
|  | .At v6 . | ||||||
							
								
								
									
										230
									
								
								bin/ln/ln.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										230
									
								
								bin/ln/ln.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,230 @@ | |||||||
|  | /* $NetBSD: ln.c,v 1.35 2011/08/29 14:38:30 joerg Exp $ */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 1987, 1993, 1994 | ||||||
|  |  *	The Regents of the University of California.  All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions | ||||||
|  |  * are met: | ||||||
|  |  * 1. Redistributions of source code must retain the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer. | ||||||
|  |  * 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer in the | ||||||
|  |  *    documentation and/or other materials provided with the distribution. | ||||||
|  |  * 3. Neither the name of the University nor the names of its contributors | ||||||
|  |  *    may be used to endorse or promote products derived from this software | ||||||
|  |  *    without specific prior written permission. | ||||||
|  |  * | ||||||
|  |  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||||||
|  |  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||||
|  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||||
|  |  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||||||
|  |  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||||
|  |  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||||
|  |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||||
|  |  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||||
|  |  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||||
|  |  * SUCH DAMAGE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <sys/cdefs.h> | ||||||
|  | #ifndef lint | ||||||
|  | __COPYRIGHT("@(#) Copyright (c) 1987, 1993, 1994\
 | ||||||
|  |  The Regents of the University of California.  All rights reserved."); | ||||||
|  | #endif /* not lint */ | ||||||
|  | 
 | ||||||
|  | #ifndef lint | ||||||
|  | #if 0 | ||||||
|  | static char sccsid[] = "@(#)ln.c	8.2 (Berkeley) 3/31/94"; | ||||||
|  | #else | ||||||
|  | __RCSID("$NetBSD: ln.c,v 1.35 2011/08/29 14:38:30 joerg Exp $"); | ||||||
|  | #endif | ||||||
|  | #endif /* not lint */ | ||||||
|  | 
 | ||||||
|  | #include <sys/param.h> | ||||||
|  | #include <sys/stat.h> | ||||||
|  | 
 | ||||||
|  | #include <err.h> | ||||||
|  | #include <errno.h> | ||||||
|  | #include <locale.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | 
 | ||||||
|  | static int	fflag;				/* Unlink existing files. */ | ||||||
|  | static int	hflag;				/* Check new name for symlink first. */ | ||||||
|  | static int	iflag;				/* Interactive mode. */ | ||||||
|  | static int	sflag;				/* Symbolic, not hard, link. */ | ||||||
|  | static int	vflag;                          /* Verbose output */ | ||||||
|  | 
 | ||||||
|  | 					/* System link call. */ | ||||||
|  | static int (*linkf)(const char *, const char *); | ||||||
|  | static char   linkch; | ||||||
|  | 
 | ||||||
|  | static int	linkit(const char *, const char *, int); | ||||||
|  | __dead static void	usage(void); | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	struct stat sb; | ||||||
|  | 	int ch, exitval; | ||||||
|  | 	char *sourcedir; | ||||||
|  | 
 | ||||||
|  | 	setprogname(argv[0]); | ||||||
|  | 	(void)setlocale(LC_ALL, ""); | ||||||
|  | 
 | ||||||
|  | 	while ((ch = getopt(argc, argv, "fhinsv")) != -1) | ||||||
|  | 		switch (ch) { | ||||||
|  | 		case 'f': | ||||||
|  | 			fflag = 1; | ||||||
|  | 			iflag = 0; | ||||||
|  | 			break; | ||||||
|  | 		case 'h': | ||||||
|  | 		case 'n': | ||||||
|  | 			hflag = 1; | ||||||
|  | 			break; | ||||||
|  | 		case 'i': | ||||||
|  | 			iflag = 1; | ||||||
|  | 			fflag = 0; | ||||||
|  | 			break; | ||||||
|  | 		case 's': | ||||||
|  | 			sflag = 1; | ||||||
|  | 			break; | ||||||
|  | 		case 'v':                | ||||||
|  | 			vflag = 1; | ||||||
|  | 			break; | ||||||
|  | 		case '?': | ||||||
|  | 		default: | ||||||
|  | 			usage(); | ||||||
|  | 			/* NOTREACHED */ | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 	argv += optind; | ||||||
|  | 	argc -= optind; | ||||||
|  | 
 | ||||||
|  | 	if (sflag) { | ||||||
|  | 		linkf  = symlink; | ||||||
|  | 		linkch = '-'; | ||||||
|  | 	} else { | ||||||
|  | 		linkf  = link; | ||||||
|  | 		linkch = '='; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	switch(argc) { | ||||||
|  | 	case 0: | ||||||
|  | 		usage(); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	case 1:				/* ln target */ | ||||||
|  | 		exit(linkit(argv[0], ".", 1)); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	case 2:				/* ln target source */ | ||||||
|  | 		exit(linkit(argv[0], argv[1], 0)); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 					/* ln target1 target2 directory */ | ||||||
|  | 	sourcedir = argv[argc - 1]; | ||||||
|  | 	if (hflag && lstat(sourcedir, &sb) == 0 && S_ISLNK(sb.st_mode)) { | ||||||
|  | 		/* we were asked not to follow symlinks, but found one at
 | ||||||
|  | 		   the target--simulate "not a directory" error */ | ||||||
|  | 		errno = ENOTDIR; | ||||||
|  | 		err(EXIT_FAILURE, "%s", sourcedir); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	} | ||||||
|  | 	if (stat(sourcedir, &sb)) { | ||||||
|  | 		err(EXIT_FAILURE, "%s", sourcedir); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	} | ||||||
|  | 	if (!S_ISDIR(sb.st_mode)) { | ||||||
|  | 		usage(); | ||||||
|  | 		/* NOTREACHED */ | ||||||
|  | 	} | ||||||
|  | 	for (exitval = 0; *argv != sourcedir; ++argv) | ||||||
|  | 		exitval |= linkit(*argv, sourcedir, 1); | ||||||
|  | 	exit(exitval); | ||||||
|  | 	/* NOTREACHED */ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static int | ||||||
|  | linkit(const char *target, const char *source, int isdir) | ||||||
|  | { | ||||||
|  | 	struct stat sb; | ||||||
|  | 	const char *p; | ||||||
|  | 	char path[MAXPATHLEN]; | ||||||
|  | 	int ch, exists, first; | ||||||
|  | 
 | ||||||
|  | 	if (!sflag) { | ||||||
|  | 		/* If target doesn't exist, quit now. */ | ||||||
|  | 		if (stat(target, &sb)) { | ||||||
|  | 			warn("%s", target); | ||||||
|  | 			return (1); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/* If the source is a directory (and not a symlink if hflag),
 | ||||||
|  | 	   append the target's name. */ | ||||||
|  | 	if (isdir || | ||||||
|  | 	    (!lstat(source, &sb) && S_ISDIR(sb.st_mode)) || | ||||||
|  | 	    (!hflag && !stat(source, &sb) && S_ISDIR(sb.st_mode))) { | ||||||
|  | 		if ((p = strrchr(target, '/')) == NULL) | ||||||
|  | 			p = target; | ||||||
|  | 		else | ||||||
|  | 			++p; | ||||||
|  | 		(void)snprintf(path, sizeof(path), "%s/%s", source, p); | ||||||
|  | 		source = path; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	exists = !lstat(source, &sb); | ||||||
|  | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * If the file exists, then unlink it forcibly if -f was specified | ||||||
|  | 	 * and interactively if -i was specified. | ||||||
|  | 	 */ | ||||||
|  | 	if (fflag && exists) { | ||||||
|  | 		if (unlink(source)) { | ||||||
|  | 			warn("%s", source); | ||||||
|  | 			return (1); | ||||||
|  | 		} | ||||||
|  | 	} else if (iflag && exists) { | ||||||
|  | 		fflush(stdout); | ||||||
|  | 		(void)fprintf(stderr, "replace %s? ", source); | ||||||
|  | 
 | ||||||
|  | 		first = ch = getchar(); | ||||||
|  | 		while (ch != '\n' && ch != EOF) | ||||||
|  | 			ch = getchar(); | ||||||
|  | 		if (first != 'y' && first != 'Y') { | ||||||
|  | 			(void)fprintf(stderr, "not replaced\n"); | ||||||
|  | 			return (1); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (unlink(source)) { | ||||||
|  | 			warn("%s", source); | ||||||
|  | 			return (1); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/* Attempt the link. */ | ||||||
|  | 	if ((*linkf)(target, source)) { | ||||||
|  | 		warn("%s", source); | ||||||
|  | 		return (1); | ||||||
|  | 	} | ||||||
|  | 	if (vflag) | ||||||
|  | 		(void)printf("%s %c> %s\n", source, linkch, target); | ||||||
|  | 
 | ||||||
|  | 	return (0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | usage(void) | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | 	(void)fprintf(stderr, | ||||||
|  | 	    "usage:\t%s [-fhinsv] file1 file2\n\t%s [-fhinsv] file ... directory\n", | ||||||
|  | 	    getprogname(), getprogname()); | ||||||
|  | 	exit(1); | ||||||
|  | 	/* NOTREACHED */ | ||||||
|  | } | ||||||
| @ -5,7 +5,6 @@ BINDIR=	/bin | |||||||
| MAN= | MAN= | ||||||
| 
 | 
 | ||||||
| LINKS+=      ${BINDIR}/cp ${BINDIR}/mv | LINKS+=      ${BINDIR}/cp ${BINDIR}/mv | ||||||
| LINKS+=      ${BINDIR}/cp ${BINDIR}/ln |  | ||||||
| LINKS+=      ${BINDIR}/cp ${BINDIR}/clone | LINKS+=      ${BINDIR}/cp ${BINDIR}/clone | ||||||
| LINKS+=      ${BINDIR}/cp ${BINDIR}/cpdir | LINKS+=      ${BINDIR}/cp ${BINDIR}/cpdir | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,16 @@ | |||||||
|  | 20130201: | ||||||
|  | 	Replace our native ln with NetBSD version. | ||||||
|  | 
 | ||||||
|  | 	As our native ln is a hard link to cp, simply overwriting ln with | ||||||
|  | 	the new version would cause mv, cp, etc to stop working. | ||||||
|  | 
 | ||||||
|  | 	Do this BEFORE a 'make build': | ||||||
|  | 
 | ||||||
|  | 	# rm /bin/ln | ||||||
|  | 	# cp /bin/cp /bin/ln | ||||||
|  | 
 | ||||||
|  | 	Then 'make build' as usual. | ||||||
|  | 
 | ||||||
| 20130130: | 20130130: | ||||||
| 	With the shell update, and following update of 'test', some | 	With the shell update, and following update of 'test', some | ||||||
| 	modifications are needed in .profile and .ashrc. | 	modifications are needed in .profile and .ashrc. | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ | |||||||
| 2012/01/16 18:47:57,bin/ed | 2012/01/16 18:47:57,bin/ed | ||||||
| 2012/10/17 12:00:00,bin/expr | 2012/10/17 12:00:00,bin/expr | ||||||
| 2012/10/17 12:00:00,bin/kill | 2012/10/17 12:00:00,bin/kill | ||||||
|  | 2012/10/17 12:00:00,bin/ln | ||||||
| 2012/10/17 12:00:00,bin/Makefile | 2012/10/17 12:00:00,bin/Makefile | ||||||
| 2012/10/17 12:00:00,bin/Makefile.inc | 2012/10/17 12:00:00,bin/Makefile.inc | ||||||
| 2008/07/20 00:52:40,bin/mkdir | 2008/07/20 00:52:40,bin/mkdir | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Lionel Sambuc
						Lionel Sambuc