* Copyright (c) 1989, 1993
* 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
* 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. 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
static char sccsid
[] = "@(#)ls.c 8.1 (Berkeley) 6/6/93";
/* Derived from the print routines in the ls(1) source code. */
static void printlink
__P((char *));
static void printtime
__P((time_t));
printlong(name
, accpath
, sb
)
char *name
; /* filename to print */
char *accpath
; /* current valid path to filename */
struct stat
*sb
; /* stat buffer */
char modep
[15], *user_from_uid(), *group_from_gid();
(void)printf("%6lu %4qd ", sb
->st_ino
, (long long)sb
->st_blocks
);
(void)strmode(sb
->st_mode
, modep
);
(void)printf("%s %3u %-*s %-*s ", modep
, sb
->st_nlink
, UT_NAMESIZE
,
user_from_uid(sb
->st_uid
, 0), UT_NAMESIZE
,
group_from_gid(sb
->st_gid
, 0));
if (S_ISCHR(sb
->st_mode
) || S_ISBLK(sb
->st_mode
))
(void)printf("%3d, %3d ", major(sb
->st_rdev
),
(void)printf("%8qd ", (long long)sb
->st_size
);
(void)printf("%s", name
);
if (S_ISLNK(sb
->st_mode
))
char *longstring
, *ctime();
longstring
= ctime((long *)&ftime
);
(void)putchar(longstring
[i
]);
#define SIXMONTHS ((DAYSPERNYEAR / 2) * SECSPERDAY)
if (ftime
+ SIXMONTHS
> time((time_t *)NULL
))
for (i
= 11; i
< 16; ++i
)
(void)putchar(longstring
[i
]);
for (i
= 20; i
< 24; ++i
)
(void)putchar(longstring
[i
]);
char path
[MAXPATHLEN
+ 1];
if ((lnklen
= readlink(name
, path
, MAXPATHLEN
)) == -1) {
(void)printf(" -> %s", path
);