+static int pushed_ppp;
+static int closed_stdio;
+
+extern int hungup; /* has the physical layer been disconnected? */
+extern int kdebugflag;
+extern int default_device;
+extern int restore_term;
+
+#define PAI_FLAGS_B7_0 0x100
+#define PAI_FLAGS_B7_1 0x200
+#define PAI_FLAGS_PAR_EVEN 0x400
+#define PAI_FLAGS_PAR_ODD 0x800
+#define PAI_FLAGS_HIBITS 0xF00
+
+/*
+ * daemon - Detach us from the terminal session.
+ */
+int
+daemon(nochdir, noclose)
+ int nochdir, noclose;
+{
+ int pid;
+
+ if ((pid = fork()) < 0)
+ return -1;
+ if (pid != 0)
+ exit(0); /* parent dies */
+ setsid();
+ if (!nochdir)
+ chdir("/");
+ if (!noclose) {
+ fclose(stdin); /* don't need stdin, stdout, stderr */
+ fclose(stdout);
+ fclose(stderr);
+ }
+ return 0;
+}
+
+
+/*
+ * ppp_available - check if this kernel supports PPP.
+ */
+int
+ppp_available()
+{
+ int fd, ret;
+
+ fd = open("/dev/tty", O_RDONLY, 0);
+ if (fd < 0)
+ return 1; /* can't find out - assume we have ppp */
+ ret = ioctl(fd, I_FIND, "pppasync") >= 0;
+ close(fd);
+ return ret;
+}