Lines Matching +full:trim +full:- +full:hs +full:- +full:current

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
33 * w - print system status (who and what)
82 static time_t now; /* the current time of day */
86 static int header = 1; /* true if -h flag: don't print heading */
87 static int nflag; /* true if -n flag: don't convert addrs */
88 static int dflag; /* true if -d flag: output debug info */
109 #define debugproc(p) *(&((struct kinfo_proc *)p)->ki_udata)
159 while ((ch = getopt(argc, argv, p)) != -1) in main()
181 xo_warnx("-%c no longer supported", ch); in main()
187 argc -= optind; in main()
212 if (utmp->ut_type != USER_PROCESS) in main()
214 if (!(stp = ttystat(utmp->ut_line))) in main()
225 if (!strcmp(utmp->ut_user, *user)) in main()
233 nextp = &ep->next; in main()
234 memmove(&ep->utmp, utmp, sizeof *utmp); in main()
235 ep->tdev = stp->st_rdev; in main()
240 if (ep->tdev == 0) { in main()
244 (void)sysctlbyname("machdep.consdev", &ep->tdev, &size, NULL, 0); in main()
246 touched = stp->st_atime; in main()
247 if (touched < ep->utmp.ut_tv.tv_sec) { in main()
249 touched = ep->utmp.ut_tv.tv_sec; in main()
251 if ((ep->idle = now - touched) < 0) in main()
252 ep->idle = 0; in main()
254 save_p = p = *ep->utmp.ut_host ? ep->utmp.ut_host : "-"; in main()
265 if (inet_pton(AF_INET6, p, &lsin6->sin6_addr) == 1) { in main()
266 lsin6->sin6_len = sizeof(*lsin6); in main()
267 lsin6->sin6_family = AF_INET6; in main()
269 } else if (inet_pton(AF_INET, p, &lsin->sin_addr) == 1) { in main()
270 lsin->sin_len = sizeof(*lsin); in main()
271 lsin->sin_family = AF_INET; in main()
277 sa->sa_len) == HOSTNAME_FOUND) in main()
289 if (res->ai_next == NULL && in main()
290 getnameinfo(res->ai_addr, res->ai_addrlen, in main()
302 ep->from = strdup(p); in main()
306 ep->save_from = strdup(save_p); in main()
325 xo_open_container("uptime-information"); in main()
330 xo_close_container("uptime-information"); in main()
337 xo_emit("{T:/%-*.*s} {T:/%-*.*s} {T:/%-*.*s} {T:/%s}", in main()
347 if (kp->ki_stat == SIDL || kp->ki_stat == SZOMB || in main()
348 kp->ki_tdev == NODEV) in main()
350 for (ep = ehead; ep != NULL; ep = ep->next) { in main()
351 if (ep->tdev == kp->ki_tdev) { in main()
355 if (ep->kp == NULL && kp->ki_pgid == kp->ki_tpgid) { in main()
359 if (proc_compare(ep->kp, kp)) in main()
360 ep->kp = kp; in main()
368 dkp = ep->dkp; in main()
369 ep->dkp = kp; in main()
374 if ((ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1 && in main()
375 ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1 && in main()
376 ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) == -1) || ws.ws_col == 0) in main()
379 ttywidth = ws.ws_col - 1; in main()
380 argwidth = ttywidth - WUSED; in main()
386 for (ep = ehead; ep != NULL; ep = ep->next) { in main()
387 if (ep->kp == NULL) { in main()
388 ep->args = strdup("-"); in main()
391 ep->args = fmt_argv(kvm_getargv(kd, ep->kp, argwidth), in main()
392 ep->kp->ki_comm, NULL, MAXCOMLEN); in main()
393 if (ep->args == NULL) in main()
404 (*nextp) && from->idle >= (*nextp)->idle; in main()
405 nextp = &(*nextp)->next) in main()
408 from = from->next; in main()
409 save->next = *nextp; in main()
414 xo_open_container("user-table"); in main()
415 xo_open_list("user-entry"); in main()
417 for (ep = ehead; ep != NULL; ep = ep->next) { in main()
420 xo_open_instance("user-entry"); in main()
423 xo_open_container("process-table"); in main()
424 xo_open_list("process-entry"); in main()
426 for (dkp = ep->dkp; dkp != NULL; dkp = debugproc(dkp)) { in main()
430 dkp->ki_comm, NULL, MAXCOMLEN); in main()
432 ptr = "-"; in main()
433 xo_open_instance("process-entry"); in main()
434 xo_emit("\t\t{:process-id/%-9d/%d} " in main()
435 "{:command/%hs}\n", dkp->ki_pid, ptr); in main()
436 xo_close_instance("process-entry"); in main()
438 xo_close_list("process-entry"); in main()
439 xo_close_container("process-table"); in main()
441 xo_emit("{:user/%-*.*s/%@**@s} {:tty/%-*.*s/%@**@s} ", in main()
442 W_DISPUSERSIZE, W_DISPUSERSIZE, ep->utmp.ut_user, in main()
444 *ep->utmp.ut_line ? in main()
445 (strncmp(ep->utmp.ut_line, "tty", 3) && in main()
446 strncmp(ep->utmp.ut_line, "cua", 3) ? in main()
447 ep->utmp.ut_line : ep->utmp.ut_line + 3) : "-"); in main()
449 if (ep->save_from) in main()
450 xo_attr("address", "%s", ep->save_from); in main()
451 xo_emit("{:from/%-*.*s/%@**@s} ", in main()
452 (int)fromwidth, (int)fromwidth, ep->from); in main()
453 t = ep->utmp.ut_tv.tv_sec; in main()
455 longidle = pr_idle(ep->idle); in main()
456 xo_emit("{:command/%.*hs/%@*@hs}\n", in main()
457 (int)argwidth - longidle - longattime, in main()
458 ep->args); in main()
460 xo_close_instance("user-entry"); in main()
463 xo_close_list("user-entry"); in main()
464 xo_close_container("user-table"); in main()
465 xo_close_container("uptime-information"); in main()
490 /* trim leading whitespace */ in pr_header()
494 xo_emit("{:time-of-day/%s} ", s); in pr_header()
500 if (clock_gettime(CLOCK_UPTIME, &tp) != -1) { in pr_header()
542 e = s + sbuf_len(&upbuf) - 1; in pr_header()
543 /* trim leading whitespace */ in pr_header()
546 /* trim trailing comma */ in pr_header()
550 xo_emit("{:uptime-human/%s}", s); in pr_header()
560 if (getloadavg(avenrun, nitems(avenrun)) == -1) in pr_header()
564 " {:load-average-1/%.2f}", in pr_header()
565 " {:load-average-5/%.2f}", in pr_header()
566 " {:load-average-15/%.2f}", in pr_header()
594 xo_error("usage: w [-dhin] [-M core] [-N system] [user ...]\n"); in usage()