diff options
Diffstat (limited to 'debian')
-rw-r--r-- | debian/changelog | 247 | ||||
-rw-r--r-- | debian/compat | 1 | ||||
-rw-r--r-- | debian/control | 36 | ||||
-rw-r--r-- | debian/copyright | 212 | ||||
-rw-r--r-- | debian/molly-guard.lintian-overrides | 8 | ||||
-rwxr-xr-x | debian/molly-guard.postrm | 49 | ||||
-rwxr-xr-x | debian/molly-guard.preinst | 48 | ||||
-rwxr-xr-x | debian/rules | 7 | ||||
-rw-r--r-- | debian/source/format | 1 |
9 files changed, 609 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..e0c2300 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,247 @@ +molly-guard (0.7.1) unstable; urgency=medium + + * Pass through "reboot -f" command (Closes: #870891) + + -- Simó Albert i Beltran <sim6@probeta.net> Sun, 06 Aug 2017 23:52:59 +0200 + +molly-guard (0.7) unstable; urgency=medium + + * New maintainer (Closes: #859596) + * Set https in Format field at debian/copyright + * Update Standards-Version + * Hostname case-insensitive (Closes: #856170) + * Update copyright holders of 30-query-hostname + * Update copyright holders at debian/copyright + * Pass through "halt -w" and "halt -f" commands (Closes: #867331) + + -- Simó Albert i Beltran <sim6@probeta.net> Sat, 29 Jul 2017 15:39:20 +0200 + +molly-guard (0.6.4) unstable; urgency=medium + + * Guard against non-existing /lib/molly-guard in postinst (closes: #834152) + * Bump Standards-Version up to 3.9.8 + + -- Francois Marier <francois@debian.org> Mon, 15 Aug 2016 22:16:18 -0700 + +molly-guard (0.6.3) unstable; urgency=medium + + * Move pm-utils diverts to /usr/sbin/ (closes: #812535) + * Disable pm-utils diverts until #812545 is fixed + * Use https for Vcs-Git URL (lintian warning) + + -- Francois Marier <francois@debian.org> Sun, 24 Jan 2016 12:19:45 -0800 + +molly-guard (0.6.2) unstable; urgency=medium + + * Add missing diverts for kexec-tools and pm-utils (closes: #797531) + + -- Francois Marier <francois@debian.org> Mon, 31 Aug 2015 08:10:12 -0700 + +molly-guard (0.6.1) unstable; urgency=medium + + * Upload to unstable + * Run wrap-and-sort + + -- Francois Marier <francois@debian.org> Sat, 29 Aug 2015 10:34:34 -0700 + +molly-guard (0.6.0) experimental; urgency=medium + + * Convert to a Debian native package + * Merge upstream and Debian changelogs + * Switch to a minimal debian/rules + * Rely on dh_installman to compress the manpage + + * Add support for mosh (closes: #705397) + * Add support for coldreboot from kexec-tools (closes: #735871) + Thanks to Daniel Baumann for the patch! + * Add support for quotes in shutdown message (closes: #699711) + * Add config option to require fully-qualified hostnames (closes: #658282) + Thanks to Andrew Pollock for the patch! + * Add support for the pm-utils commands (closes: #663655) + + -- Francois Marier <francois@debian.org> Sun, 23 Aug 2015 11:55:39 -0700 + +molly-guard (0.5.2-1) unstable; urgency=medium + + [ Josh Triplett ] + * New upstream release. + * Skip molly-guard's protection logic if we don't have the "tty" command to + determine the terminal. Avoids a spurious failure when invoked without + /usr mounted. (Closes: #771572) + + [ Francois Marier ] + * Take over maintenance with madduck's blessing + * Bump Standards-Version to 3.9.6 + * Bump debhelper version to 9 + * Install lintian override with dh_lintian + * Use standard template in postrm and preinst scripts + * Switch to machine-readable copyright file and add missing copyright holders + * Disable pristine-tar in debian/gbp.conf + * Add debian/source/format + * Update VCS URLs + * Fix the lintian overrides + + -- Francois Marier <francois@debian.org> Sun, 23 Aug 2015 11:22:14 -0700 + +molly-guard (0.5.1-1) unstable; urgency=low + + * New upstream release. + * Fix and rework prefix and etcdir handling to not embed the build directory + in the binary. (Closes: #768418) + + -- Josh Triplett <josh@joshtriplett.org> Fri, 07 Nov 2014 03:42:41 -0800 + +molly-guard (0.5-1) unstable; urgency=low + + * New upstream release. + * Improve handling for guarded commands that call other guarded commands: if + called recursively (detected via MOLLYGUARD_CMD environment variable), + unconditionally run the real command. Suggested by Sam Hartman at + DebConf. + * Install the molly-guard wrapper script to the same filesystem as the + programs that link to it. + * Support running the real utilities from a location other than /sbin, + determined at build time by passing REALPATH to make. + * Support setting an sbindir other than sbin in the prefix; this allows + setting a prefix of /usr but an sbindir of /sbin. + * Prevent gzip from interactively prompting about overwriting if + molly-guard.8.gz already exists. + * Drop lintian override for + depends-on-essential-package-without-using-version, since molly-guard no + longer depends on sysvinit. + * Add Enhances for init and systemd. + * Use diversions rather than /usr/sbin. Divert the guarded commands to + /lib/molly-guard, and install links in their place, rather than relying on + /usr/sbin's position in $PATH. This avoids installing different files to + /sbin and /usr/sbin. (Closes: #660064) + * Add myself as an uploader. + + -- Josh Triplett <josh@joshtriplett.org> Tue, 26 Aug 2014 10:41:06 -0700 + +molly-guard (0.4.5-1) unstable; urgency=low + + * New upstream release, which works properly with kFreeBSD + (closes: #548099). + - remove linuxism /proc/<pid>/fd/0; + - add check for ssh in the ancestry of the shell process. + * Add Uploader: Ludovico Gardenghi <garden@debian.org> + * Bump debhelper compatibility level to 7: + - replace dh_clean -k with dh_prep. + * Bump Standars-Version to 3.9.3: no other changes required. + * Add recommended build-indep and build-arch targets in debian/rules. + * Replace $(PWD) with $(CURDIR) in debian/rules. + + -- Ludovico Gardenghi <garden@debian.org> Fri, 24 Feb 2012 01:02:20 +0100 + +molly-guard (0.4.4-2) unstable; urgency=low + + * Remove dependency on sysvutils, which is essential, and upstart, which is + in experimental still (closes: #488722). + + -- martin f. krafft <madduck@debian.org> Tue, 01 Jul 2008 15:28:51 +0200 + +molly-guard (0.4.4-1) unstable; urgency=low + + * New upstream release, which now properly passes arguments to the real + commands (closes: #486945). + + -- martin f. krafft <madduck@debian.org> Thu, 19 Jun 2008 10:17:35 +0200 + +molly-guard (0.4.3-1) unstable; urgency=low + + * New upstream release, which properly detects sshd sessions, even if + ControlMaster is in use. + + -- martin f. krafft <madduck@debian.org> Sun, 01 Jun 2008 23:20:00 +0200 + +molly-guard (0.4.2-1) unstable; urgency=low + + * New upstream release, to unstable. + * Improved checking for ALWAYS_QUERY_HOSTNAME + + -- martin f. krafft <madduck@debian.org> Sat, 31 May 2008 16:20:35 +0200 + +molly-guard (0.4-1~exp.1) experimental; urgency=low + + * New upstream release, thanks a lot to Andrew Ruthven for his input and + patches. + - use run-parts to allow additional checks to be added easily. + - add setting to always molly-guard a host (closes: #470681, #471382). + - possibly print out a warning message before taking action + (closes: 476508). + * Add a molly-guard(8) manpage and migrate the content from README there. + + -- martin f. krafft <madduck@debian.org> Sat, 19 Apr 2008 15:36:36 +0200 + +molly-guard (0.3.2-1) unstable; urgency=low + + * New upstream release, which prevent set -u from falling over unset + SSH_CONNECTION variable (closes: #471129). + + -- martin f. krafft <madduck@debian.org> Sun, 16 Mar 2008 08:55:37 +0100 + +molly-guard (0.3.1-1) unstable; urgency=low + + [ martin f. krafft ] + * New upstream release (closes: #469951). + - Pass --short option to hostname to prevent the user from having + to type the whole FQDN at times. + - Check for the $SSH_CONNECTION variable in addition to the pty checks. + * Fix Vcs-* links, which now point to the new Git repo. + * Bump debhelper compatibility level to 6; no other changes required. + * Bump Standards-Version to 3.7.3; no other changes required. + * Add a basic README file. + + [ Thijs Kinkhorst ] + * Tweak description. + + -- martin f. krafft <madduck@debian.org> Wed, 12 Mar 2008 19:56:49 +0100 + +molly-guard (0.3-2) unstable; urgency=low + + * Pass --short option to hostname to prevent the user from having to type + the whole FQDN at times (closes: #431205). + + -- martin f. krafft <madduck@debian.org> Mon, 02 Jul 2007 18:26:09 +0200 + +molly-guard (0.3-1) unstable; urgency=low + + * Shield shutdown -h; I am terribly sorry, Andrew! (closes: #426107). + Now only shutdown -c and * --help are passed through regardless. + * Added --help option, which now prints a short molly-guard help message + followed by the actual command's help output. + * Now should also work in su/sudo sessions because it now checks whether the + creator of the current tty/pts is sshd, rather than the brittle check for + the environment. Thanks to Craig Small and Don Armstrong for their sparks + of brilliance (closes: #425831). + * Corrected a typo in the package description (closes: #408706). + * Added --pretend-ssh option to facilitate testing. + + -- martin f. krafft <madduck@debian.org> Sat, 26 May 2007 14:52:57 +0200 + +molly-guard (0.2.2-1) unstable; urgency=low + + * New upstream release: + - now also protects the poweroff command (closes: #401042). + * Added missing licence text to copyright file (closes: #399726). + + -- martin f. krafft <madduck@debian.org> Tue, 12 Dec 2006 12:58:55 +0100 + +molly-guard (0.2.1-1) unstable; urgency=low + + * New upstream release, which does better shell quoting. + + -- martin f. krafft <madduck@debian.org> Thu, 19 Oct 2006 18:17:14 +0200 + +molly-guard (0.2-1) unstable; urgency=low + + * New upstream release, which handles --help related options better. + + -- martin f. krafft <madduck@debian.org> Thu, 19 Oct 2006 17:27:14 +0200 + +molly-guard (0.1-1) unstable; urgency=low + + * Initial release + (see http://lists.debian.org/debian-devel/2006/10/msg00712.html) + + -- martin f. krafft <madduck@debian.org> Thu, 19 Oct 2006 11:47:24 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..9637719 --- /dev/null +++ b/debian/control @@ -0,0 +1,36 @@ +Source: molly-guard +Section: admin +Priority: extra +Maintainer: Simó Albert i Beltran <sim6@probeta.net> +Uploaders: Ludovico Gardenghi <garden@debian.org>, + Josh Triplett <josh@joshtriplett.org>, + Francois Marier <francois@debian.org> +Build-Depends: debhelper (>= 9), docbook-xsl, xsltproc +Standards-Version: 4.0.0 +Vcs-Git: https://anonscm.debian.org/git/collab-maint/molly-guard.git +Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/molly-guard.git + +Package: molly-guard +Architecture: all +Depends: procps, ${misc:Depends} +Enhances: init, + kexec-tools, + mosh, + openssh-server, + pm-utils, + systemd, + sysvinit, + upstart +Description: protects machines from accidental shutdowns/reboots + The package installs a shell script that overrides the existing + shutdown/reboot/halt/poweroff/coldreboot/pm-hibernate/pm-suspend* commands + and first runs a set of scripts, which all have to exit successfully, + before molly-guard invokes the real command. + . + One of the scripts checks for existing SSH sessions. If any of the four + commands are called interactively over an SSH session, the shell script + prompts you to enter the name of the host you wish to shut down. This should + adequately prevent you from accidental shutdowns and reboots. + . + molly-guard diverts the real binaries to /lib/molly-guard/. You can bypass + molly-guard by running those binaries directly. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..0db1c18 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,212 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ + +Files: * +Copyright: 2017 Simó Albert i Beltran <sim6@probeta.net> + 2015-2016 Francois Marier <francois@debian.org> + 2014 Josh Triplett <josh@joshtriplett.org> + 2012 Ludovico Gardenghi <garden@debian.org> + 2006-2008 Ludovico Gardenghi <garden@debian.org> +License: Artistic-2.0 + +License: Artistic-2.0 + The Artistic License 2.0 + . + Copyright (c) 2000-2006, The Perl Foundation. + . + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + . + Preamble + . + This license establishes the terms under which a given free software + Package may be copied, modified, distributed, and/or redistributed. + The intent is that the Copyright Holder maintains some artistic + control over the development of that Package while still keeping the + Package available as open source and free software. + . + You are always permitted to make arrangements wholly outside of this + license directly with the Copyright Holder of a given Package. If the + terms of this license do not permit the full use that you propose to + make of the Package, you should contact the Copyright Holder and seek + a different licensing arrangement. + . + Definitions + . + "Copyright Holder" means the individual(s) or organization(s) + named in the copyright notice for the entire Package. + . + "Contributor" means any party that has contributed code or other + material to the Package, in accordance with the Copyright Holder's + procedures. + . + "You" and "your" means any person who would like to copy, + distribute, or modify the Package. + . + "Package" means the collection of files distributed by the + Copyright Holder, and derivatives of that collection and/or of + those files. A given Package may consist of either the Standard + Version, or a Modified Version. + . + "Distribute" means providing a copy of the Package or making it + accessible to anyone else, or in the case of a company or + organization, to others outside of your company or organization. + . + "Distributor Fee" means any fee that you charge for Distributing + this Package or providing support for this Package to another + party. It does not mean licensing fees. + . + "Standard Version" refers to the Package if it has not been + modified, or has been modified only in ways explicitly requested + by the Copyright Holder. + . + "Modified Version" means the Package, if it has been changed, and + such changes were not explicitly requested by the Copyright + Holder. + . + "Original License" means this Artistic License as Distributed with + the Standard Version of the Package, in its current version or as + it may be modified by The Perl Foundation in the future. + . + "Source" form means the source code, documentation source, and + configuration files for the Package. + . + "Compiled" form means the compiled bytecode, object code, binary, + or any other form resulting from mechanical transformation or + translation of the Source form. + . + . + Permission for Use and Modification Without Distribution + . + (1) You are permitted to use the Standard Version and create and use + Modified Versions for any purpose without restriction, provided that + you do not Distribute the Modified Version. + . + . + Permissions for Redistribution of the Standard Version + . + (2) You may Distribute verbatim copies of the Source form of the + Standard Version of this Package in any medium without restriction, + either gratis or for a Distributor Fee, provided that you duplicate + all of the original copyright notices and associated disclaimers. At + your discretion, such verbatim copies may or may not include a + Compiled form of the Package. + . + (3) You may apply any bug fixes, portability changes, and other + modifications made available from the Copyright Holder. The resulting + Package will still be considered the Standard Version, and as such + will be subject to the Original License. + . + . + Distribution of Modified Versions of the Package as Source + . + (4) You may Distribute your Modified Version as Source (either gratis + or for a Distributor Fee, and with or without a Compiled form of the + Modified Version) provided that you clearly document how it differs + from the Standard Version, including, but not limited to, documenting + any non-standard features, executables, or modules, and provided that + you do at least ONE of the following: + . + (a) make the Modified Version available to the Copyright Holder + of the Standard Version, under the Original License, so that the + Copyright Holder may include your modifications in the Standard + Version. + . + (b) ensure that installation of your Modified Version does not + prevent the user installing or running the Standard Version. In + addition, the Modified Version must bear a name that is different + from the name of the Standard Version. + . + (c) allow anyone who receives a copy of the Modified Version to + make the Source form of the Modified Version available to others + under + . + (i) the Original License or + . + (ii) a license that permits the licensee to freely copy, + modify and redistribute the Modified Version using the same + licensing terms that apply to the copy that the licensee + received, and requires that the Source form of the Modified + Version, and of any works derived from it, be made freely + available in that license fees are prohibited but Distributor + Fees are allowed. + . + . + Distribution of Compiled Forms of the Standard Version + or Modified Versions without the Source + . + (5) You may Distribute Compiled forms of the Standard Version without + the Source, provided that you include complete instructions on how to + get the Source of the Standard Version. Such instructions must be + valid at the time of your distribution. If these instructions, at any + time while you are carrying out such distribution, become invalid, you + must provide new instructions on demand or cease further distribution. + If you provide valid instructions or cease distribution within thirty + days after you become aware that the instructions are invalid, then + you do not forfeit any of your rights under this license. + . + (6) You may Distribute a Modified Version in Compiled form without + the Source, provided that you comply with Section 4 with respect to + the Source of the Modified Version. + . + . + Aggregating or Linking the Package + . + (7) You may aggregate the Package (either the Standard Version or + Modified Version) with other packages and Distribute the resulting + aggregation provided that you do not charge a licensing fee for the + Package. Distributor Fees are permitted, and licensing fees for other + components in the aggregation are permitted. The terms of this license + apply to the use and Distribution of the Standard or Modified Versions + as included in the aggregation. + . + (8) You are permitted to link Modified and Standard Versions with + other works, to embed the Package in a larger work of your own, or to + build stand-alone binary or bytecode versions of applications that + include the Package, and Distribute the result without restriction, + provided the result does not expose a direct interface to the Package. + . + . + Items That are Not Considered Part of a Modified Version + . + (9) Works (including, but not limited to, modules and scripts) that + merely extend or make use of the Package, do not, by themselves, cause + the Package to be a Modified Version. In addition, such works are not + considered parts of the Package itself, and are not subject to the + terms of this license. + . + . + General Provisions + . + (10) Any use, modification, and distribution of the Standard or + Modified Versions is governed by this Artistic License. By using, + modifying or distributing the Package, you accept this license. Do not + use, modify, or distribute the Package, if you do not accept this + license. + . + (11) If your Modified Version has been derived from a Modified + Version made by someone other than you, you are nevertheless required + to ensure that your Modified Version complies with the requirements of + this license. + . + (12) This license does not grant you the right to use any trademark, + service mark, tradename, or logo of the Copyright Holder. + . + (13) This license includes the non-exclusive, worldwide, + free-of-charge patent license to make, have made, use, offer to sell, + sell, import and otherwise transfer the Package with respect to any + patent claims licensable by the Copyright Holder that are necessarily + infringed by the Package. If you institute patent litigation + (including a cross-claim or counterclaim) against any party alleging + that the Package constitutes direct or contributory patent + infringement, then this Artistic License to you shall terminate on the + date that such litigation is filed. + . + (14) Disclaimer of Warranty: + THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS + IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR + NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL + LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/molly-guard.lintian-overrides b/debian/molly-guard.lintian-overrides new file mode 100644 index 0000000..2a693f0 --- /dev/null +++ b/debian/molly-guard.lintian-overrides @@ -0,0 +1,8 @@ +molly-guard: binary-without-manpage sbin/coldreboot +molly-guard: binary-without-manpage sbin/halt +molly-guard: binary-without-manpage sbin/pm-hibernate +molly-guard: binary-without-manpage sbin/pm-suspend +molly-guard: binary-without-manpage sbin/pm-suspend-hybrid +molly-guard: binary-without-manpage sbin/poweroff +molly-guard: binary-without-manpage sbin/reboot +molly-guard: binary-without-manpage sbin/shutdown diff --git a/debian/molly-guard.postrm b/debian/molly-guard.postrm new file mode 100755 index 0000000..cdec65a --- /dev/null +++ b/debian/molly-guard.postrm @@ -0,0 +1,49 @@ +#!/bin/sh +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postrm> `remove' +# * <postrm> `purge' +# * <old-postrm> `upgrade' <new-version> +# * <new-postrm> `failed-upgrade' <old-version> +# * <new-postrm> `abort-install' +# * <new-postrm> `abort-install' <old-version> +# * <new-postrm> `abort-upgrade' <old-version> +# * <disappearer's-postrm> `disappear' <overwriter> +# <overwriter-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove) + for cmd in halt poweroff reboot shutdown coldreboot ; do + dpkg-divert --package molly-guard --rename --remove /sbin/$cmd + done + + # Disable diversions of pm-utils binaries until #812545 is fixed + #for cmd in pm-hibernate pm-suspend pm-suspend-hybrid ; do + # dpkg-divert --package molly-guard --rename --remove /usr/sbin/$cmd + #done + + (test -d /lib/molly-guard && rmdir --ignore-fail-on-non-empty /lib/molly-guard) || true + ;; + + purge|upgrade|failed-upgrade|abort-upgrade|abort-install|disappear) + # Nothing to do + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/molly-guard.preinst b/debian/molly-guard.preinst new file mode 100755 index 0000000..e999c74 --- /dev/null +++ b/debian/molly-guard.preinst @@ -0,0 +1,48 @@ +#!/bin/sh +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <new-preinst> `install' +# * <new-preinst> `install' <old-version> +# * <new-preinst> `upgrade' <old-version> +# * <old-preinst> `abort-upgrade' <new-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + mkdir -p /lib/molly-guard + + # Cleanup erroneous diversions added in 0.6.0 + for cmd in pm-hibernate pm-suspend pm-suspend-hybrid ; do + dpkg-divert --package molly-guard --rename --remove /sbin/$cmd + done + + for cmd in halt poweroff reboot shutdown coldreboot ; do + dpkg-divert --package molly-guard --divert /lib/molly-guard/$cmd --rename /sbin/$cmd + done + + # Disable diversions of pm-utils binaries until #812545 is fixed + #for cmd in pm-hibernate pm-suspend pm-suspend-hybrid ; do + # dpkg-divert --package molly-guard --divert /lib/molly-guard/$cmd --rename /usr/sbin/$cmd + #done + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..f3a57ad --- /dev/null +++ b/debian/rules @@ -0,0 +1,7 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#DH_VERBOSE = 1 + +%: + dh $@ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) |