Source code of ln command

Greg 'groggy' Lehey grog at FreeBSD.org
Thu May 6 18:18:49 PDT 2004


On Wednesday,  5 May 2004 at  9:10:27 -0400, Bill Moran wrote:
> Thuan Truong wrote:
>>
>> I would like to have the source code of 'ln' (make hard or symbolic
>> links to files) command from Free-BSD ftp site.  Please let me know
>> how and where to unload it.
>
> If you installed source on your FreeBSD system, it's in /usr/src/bin/ln
>
> Otherwise, you can download any version you want from cvs:
> http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/ln/

Note that ln(1) is a relatively simple interface to link(2), which is
in the kernel.  Here's the complete source of the version supplied
with the Sixth Edition of UNIX:

main(argc, argv)
char **argv;
{
	static struct ibuf statb;
	register char *np;

	if (argc<2) {
		write(1, "Usage: ln target [ newname ]\n", 29);
		exit(1);
	}
	if (argc==2) {
		np = argv[1];
		while(*np++);
		while (*--np!='/' && np>argv[1]);
		np++;
		argv[2] = np;
	}
	stat(argv[1], &statb);
	if ((statb.iflags&FMT) == DIR) {
		write(1, "No directory link\n", 18);
		exit(1);
	}
	if (link(argv[1], argv[2])<0) {
		write(1, "Can't link\n", 11);
		exit(1);
	}
	exit(0);
}

Greg
--
Note: I discard all HTML mail unseen.
Finger grog at FreeBSD.org for PGP public key.
See complete headers for address and phone numbers.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20040507/5e704fc4/attachment.bin


More information about the freebsd-questions mailing list