1/*	$NetBSD: ex_stop.c,v 1.2 2013/11/22 15:52:05 christos Exp $	*/
2/*-
3 * Copyright (c) 1993, 1994
4 *	The Regents of the University of California.  All rights reserved.
5 * Copyright (c) 1992, 1993, 1994, 1995, 1996
6 *	Keith Bostic.  All rights reserved.
7 *
8 * See the LICENSE file for redistribution information.
9 */
10
11#include "config.h"
12
13#include <sys/cdefs.h>
14#if 0
15#ifndef lint
16static const char sccsid[] = "Id: ex_stop.c,v 10.11 2001/06/25 15:19:20 skimo Exp  (Berkeley) Date: 2001/06/25 15:19:20 ";
17#endif /* not lint */
18#else
19__RCSID("$NetBSD$");
20#endif
21
22#include <sys/types.h>
23#include <sys/queue.h>
24
25#include <bitstring.h>
26#include <errno.h>
27#include <limits.h>
28#include <stdio.h>
29#include <string.h>
30#include <unistd.h>
31
32#include "../common/common.h"
33
34/*
35 * ex_stop -- :stop[!]
36 *	      :suspend[!]
37 *	Suspend execution.
38 *
39 * PUBLIC: int ex_stop __P((SCR *, EXCMD *));
40 */
41int
42ex_stop(SCR *sp, EXCMD *cmdp)
43{
44	int allowed;
45
46	/* For some strange reason, the force flag turns off autowrite. */
47	if (!FL_ISSET(cmdp->iflags, E_C_FORCE) && file_aw(sp, FS_ALL))
48		return (1);
49
50	if (sp->gp->scr_suspend(sp, &allowed))
51		return (1);
52	if (!allowed)
53		ex_emsg(sp, NULL, EXM_NOSUSPEND);
54	return (0);
55}
56