HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux dev1 5.15.83-1-pve #1 SMP PVE 5.15.83-1 (2022-12-15T00:00Z) x86_64
User: safarimaris (1000)
PHP: 7.2.34-54+ubuntu22.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //bin/dh_installsysusers
#!/usr/bin/perl -w

=head1 NAME

dh_installsysusers - install and integrates systemd sysusers files

=cut

use strict;
use warnings;
use Debian::Debhelper::Dh_Lib;

our $VERSION = DH_BUILTIN_VERSION;

=head1 SYNOPSIS

B<dh_installsysusers> [S<I<debhelper options>>]

=head1 DESCRIPTION

B<dh_installsysusers> is a debhelper program that is responsible for
installing package maintainer supplied systemd sysusers files.

It also finds the systemd sysusers files installed in a package and
generates relevant integration snippets for enabling the users on
installation.  These snippets are added to the package by
L<dh_installdeb(1)>.

=head1 FILES

=over 4

=item debian/I<package>.sysusers

If the file exist, it will be installed as
F<< /usr/lib/sysusers.d/I<package>.conf >>.

=back

=head1 OPTIONS

=over 4

=item B<--name=>I<name>

When this parameter is used, B<dh_installsysusers> looks for and
installs files named debian/I<package>.I<name>.sysusers instead
of the usual debian/I<package>.sysusers.

Furthermore, the file is installed as F<< /usr/lib/sysusers.d/I<name>.conf >>
rather than F<< /usr/lib/sysusers.d/I<package>.conf >>.

=back

=head1 NOTES

This command is not idempotent. L<dh_prep(1)> should be called between
invocations of this command (with the same arguments). Otherwise, it
may cause multiple instances of the same text to be added to
maintainer scripts.

=cut

init();


# PROMISE: DH NOOP WITHOUT pkgfile(sysusers) tmp(usr/lib/sysusers.d) cli-options()


foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmpdir = tmpdir($package);
	my $sysusers = pkgfile($package,"sysusers");
	my $sysusers_targetdir = "${tmpdir}/usr/lib/sysusers.d";
	my $target = $dh{NAME} // $package;
	my $typoed_name = pkgfile($package, "sysuser");

	if ($sysusers eq '' and $typoed_name ne '') {
		# Warn people in case they typo this as much as I did.
		my $correct_name = $typoed_name;
		$correct_name =~ s{^(?:.*[./])\Ksysuser}{sysusers};
		warning("Possible typo in ${typoed_name} (expected ${correct_name}): File has been ignored");
	}

	if ($sysusers ne '') {
		install_dir($sysusers_targetdir);
		install_file($sysusers, "${sysusers_targetdir}/${target}.conf");
	}

	if (! $dh{NOSCRIPTS} && ($sysusers ne '' || -d $sysusers_targetdir)) {
		my $has_sysuser = 0;
		opendir(my $dir_fd, $sysusers_targetdir) or error("opendir(${sysusers_targetdir}) failed: $!");
		while (defined(my $entry = readdir($dir_fd))) {
			next if $entry eq '.' or $entry eq '..' or $entry !~ m{[.]conf$};
			autoscript($package, 'postinst', 'postinst-sysusers', { 'CONFILE_BASENAME' => $entry });
			$has_sysuser = 1;
		}
		closedir($dir_fd);
		addsubstvar($package, "misc:Depends", "systemd | systemd-standalone-sysusers | systemd-sysusers")
			if $has_sysuser;
	}

}



=head1 SEE ALSO

L<debhelper(7)>

=cut