← Commit list

da9212667

Denys Vlasenko
Denys Vlasenko
2015-01-05
SUCCESS Duration: 136s

Subject

libbb: code shrink by factoring out common update_utmp_DEAD_PROCESS

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/libbb.h+2 -0
@@ -921,9 +921,11 @@ void die_if_bad_username(const char* name) FAST_FUNC;
#if ENABLE_FEATURE_UTMP
void FAST_FUNC write_new_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname);
void FAST_FUNC update_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname);
+void FAST_FUNC update_utmp_DEAD_PROCESS(pid_t pid);
#else
# define write_new_utmp(pid, new_type, tty_name, username, hostname) ((void)0)
# define update_utmp(pid, new_type, tty_name, username, hostname) ((void)0)
+# define update_utmp_DEAD_PROCESS(pid) ((void)0)
#endif
init/init.c+1 -5
@@ -538,11 +538,7 @@ static struct init_action *mark_terminated(pid_t pid)
struct init_action *a;
if (pid > 0) {
- update_utmp(pid, DEAD_PROCESS,
- /*tty_name:*/ NULL,
- /*username:*/ NULL,
- /*hostname:*/ NULL
- );
+ update_utmp_DEAD_PROCESS(pid);
for (a = init_action_list; a; a = a->next) {
if (a->pid == pid) {
a->pid = 0;
libbb/utmp.c+14 -0
@@ -130,3 +130,17 @@ void FAST_FUNC update_utmp(pid_t pid, int new_type, const char *tty_name, const
updwtmp(bb_path_wtmp_file, &utent);
#endif
}
+
+/* man utmp:
+ * When init(8) finds that a process has exited, it locates its utmp entry
+ * by ut_pid, sets ut_type to DEAD_PROCESS, and clears ut_user, ut_host
+ * and ut_time with null bytes.
+ * [same applies to other processes which maintain utmp entries, like telnetd]
+ *
+ * We do not bother actually clearing fields:
+ * it might be interesting to know who was logged in and from where
+ */
+void FAST_FUNC update_utmp_DEAD_PROCESS(pid_t pid)
+{
+ update_utmp(pid, DEAD_PROCESS, NULL, NULL, NULL);
+}
loginutils/login.c+1 -1
@@ -454,7 +454,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
else {
if (safe_waitpid(child_pid, NULL, 0) == -1)
bb_perror_msg("waitpid");
- update_utmp(child_pid, DEAD_PROCESS, NULL, NULL, NULL);
+ update_utmp_DEAD_PROCESS(child_pid);
}
IF_PAM(login_pam_end(pamh);)
return 0;
networking/telnetd.c+2 -10
@@ -462,15 +462,7 @@ static void handle_sigchld(int sig UNUSED_PARAM)
while (ts) {
if (ts->shell_pid == pid) {
ts->shell_pid = -1;
-// man utmp:
-// When init(8) finds that a process has exited, it locates its utmp entry
-// by ut_pid, sets ut_type to DEAD_PROCESS, and clears ut_user, ut_host
-// and ut_time with null bytes.
-// [same applies to other processes which maintain utmp entries, like telnetd]
-//
-// We do not bother actually clearing fields:
-// it might be interesting to know who was logged in and from where
- update_utmp(pid, DEAD_PROCESS, /*tty_name:*/ NULL, /*username:*/ NULL, /*hostname:*/ NULL);
+ update_utmp_DEAD_PROCESS(pid);
break;
}
ts = ts->next;
@@ -739,7 +731,7 @@ int telnetd_main(int argc UNUSED_PARAM, char **argv)
continue;
kill_session:
if (ts->shell_pid > 0)
- update_utmp(ts->shell_pid, DEAD_PROCESS, /*tty_name:*/ NULL, /*username:*/ NULL, /*hostname:*/ NULL);
+ update_utmp_DEAD_PROCESS(ts->shell_pid);
free_session(ts);
ts = next;
}