119304Speter/*-
219304Speter * Copyright (c) 1993, 1994
319304Speter *	The Regents of the University of California.  All rights reserved.
419304Speter * Copyright (c) 1992, 1993, 1994, 1995, 1996
519304Speter *	Keith Bostic.  All rights reserved.
619304Speter *
719304Speter * See the LICENSE file for redistribution information.
819304Speter */
919304Speter
1019304Speter#include "config.h"
1119304Speter
1219304Speter#ifndef lint
13254225Speterstatic const char sccsid[] = "$Id: ex_stop.c,v 10.11 2001/06/25 15:19:20 skimo Exp $";
1419304Speter#endif /* not lint */
1519304Speter
1619304Speter#include <sys/types.h>
1719304Speter#include <sys/queue.h>
18254225Speter#include <sys/time.h>
1919304Speter
2019304Speter#include <bitstring.h>
2119304Speter#include <errno.h>
2219304Speter#include <limits.h>
2319304Speter#include <stdio.h>
2419304Speter#include <string.h>
2519304Speter#include <unistd.h>
2619304Speter
2719304Speter#include "../common/common.h"
2819304Speter
2919304Speter/*
3019304Speter * ex_stop -- :stop[!]
3119304Speter *	      :suspend[!]
3219304Speter *	Suspend execution.
3319304Speter *
3419304Speter * PUBLIC: int ex_stop __P((SCR *, EXCMD *));
3519304Speter */
3619304Speterint
37254225Speterex_stop(SCR *sp, EXCMD *cmdp)
3819304Speter{
3919304Speter	int allowed;
4019304Speter
4119304Speter	/* For some strange reason, the force flag turns off autowrite. */
4219304Speter	if (!FL_ISSET(cmdp->iflags, E_C_FORCE) && file_aw(sp, FS_ALL))
4319304Speter		return (1);
4419304Speter
4519304Speter	if (sp->gp->scr_suspend(sp, &allowed))
4619304Speter		return (1);
4719304Speter	if (!allowed)
4819304Speter		ex_emsg(sp, NULL, EXM_NOSUSPEND);
4919304Speter	return (0);
5019304Speter}
51