|
Lines 1395-1400
Link Here
|
| 1395 |
**/ |
1395 |
**/ |
| 1396 |
|
1396 |
|
| 1397 |
#ifdef USE_LASTLOG |
1397 |
#ifdef USE_LASTLOG |
|
|
1398 |
#ifdef __APPLE_UTMPX__ |
| 1399 |
int |
| 1400 |
lastlog_write_entry(struct logininfo *li) |
| 1401 |
{ |
| 1402 |
switch(li->type) { |
| 1403 |
case LTYPE_LOGIN: |
| 1404 |
return 1; /* lastlog written by pututxline */ |
| 1405 |
default: |
| 1406 |
logit("lastlog_write_entry: Invalid type field"); |
| 1407 |
return 0; |
| 1408 |
} |
| 1409 |
} |
| 1410 |
|
| 1411 |
int |
| 1412 |
lastlog_get_entry(struct logininfo *li) |
| 1413 |
{ |
| 1414 |
struct lastlogx l, *ll; |
| 1415 |
|
| 1416 |
if ((ll = getlastlogxbyname(li->username, &l)) == NULL) { |
| 1417 |
memset(&l, '\0', sizeof(l)); |
| 1418 |
ll = &l; |
| 1419 |
} |
| 1420 |
line_fullname(li->line, ll->ll_line, sizeof(li->line)); |
| 1421 |
strlcpy(li->hostname, ll->ll_host, |
| 1422 |
MIN_SIZEOF(li->hostname, ll->ll_host)); |
| 1423 |
li->tv_sec = ll->ll_tv.tv_sec; |
| 1424 |
li->tv_usec = ll->ll_tv.tv_usec; |
| 1425 |
return (1); |
| 1426 |
} |
| 1427 |
|
| 1428 |
#else /* !__APPLE_UTMPX__ */ |
| 1429 |
|
| 1398 |
#define LL_FILE 1 |
1430 |
#define LL_FILE 1 |
| 1399 |
#define LL_DIR 2 |
1431 |
#define LL_DIR 2 |
| 1400 |
#define LL_OTHER 3 |
1432 |
#define LL_OTHER 3 |
|
Lines 1551-1554
Link Here
|
| 1551 |
/* NOTREACHED */ |
1583 |
/* NOTREACHED */ |
| 1552 |
return (0); |
1584 |
return (0); |
| 1553 |
} |
1585 |
} |
|
|
1586 |
#endif /* __APPLE_UTMPX__ */ |
| 1554 |
#endif /* USE_LASTLOG */ |
1587 |
#endif /* USE_LASTLOG */ |