1*d4e7c603Sniklas /* $OpenBSD: ex_equal.c,v 1.3 2001/01/29 01:58:42 niklas Exp $ */ 2*d4e7c603Sniklas 3df930be7Sderaadt /*- 4df930be7Sderaadt * Copyright (c) 1992, 1993, 1994 5df930be7Sderaadt * The Regents of the University of California. All rights reserved. 645f2ab88Sderaadt * Copyright (c) 1992, 1993, 1994, 1995, 1996 745f2ab88Sderaadt * Keith Bostic. All rights reserved. 8df930be7Sderaadt * 945f2ab88Sderaadt * See the LICENSE file for redistribution information. 10df930be7Sderaadt */ 11df930be7Sderaadt 1245f2ab88Sderaadt #include "config.h" 1345f2ab88Sderaadt 14df930be7Sderaadt #ifndef lint 1545f2ab88Sderaadt static const char sccsid[] = "@(#)ex_equal.c 10.10 (Berkeley) 3/6/96"; 16df930be7Sderaadt #endif /* not lint */ 17df930be7Sderaadt 18df930be7Sderaadt #include <sys/types.h> 19df930be7Sderaadt #include <sys/queue.h> 20df930be7Sderaadt 21df930be7Sderaadt #include <bitstring.h> 22df930be7Sderaadt #include <limits.h> 23df930be7Sderaadt #include <stdio.h> 24df930be7Sderaadt 2545f2ab88Sderaadt #include "../common/common.h" 26df930be7Sderaadt 27df930be7Sderaadt /* 28df930be7Sderaadt * ex_equal -- :address = 2945f2ab88Sderaadt * 3045f2ab88Sderaadt * PUBLIC: int ex_equal __P((SCR *, EXCMD *)); 31df930be7Sderaadt */ 32df930be7Sderaadt int 3345f2ab88Sderaadt ex_equal(sp, cmdp) 34df930be7Sderaadt SCR *sp; 3545f2ab88Sderaadt EXCMD *cmdp; 36df930be7Sderaadt { 37df930be7Sderaadt recno_t lno; 38df930be7Sderaadt 3945f2ab88Sderaadt NEEDFILE(sp, cmdp); 4045f2ab88Sderaadt 41df930be7Sderaadt /* 42df930be7Sderaadt * Print out the line number matching the specified address, 43df930be7Sderaadt * or the number of the last line in the file if no address 44df930be7Sderaadt * specified. 45df930be7Sderaadt * 46df930be7Sderaadt * !!! 47df930be7Sderaadt * Historically, ":0=" displayed 0, and ":=" or ":1=" in an 48df930be7Sderaadt * empty file displayed 1. Until somebody complains loudly, 49df930be7Sderaadt * we're going to do it right. The tables in excmd.c permit 50df930be7Sderaadt * lno to get away with any address from 0 to the end of the 51df930be7Sderaadt * file, which, in an empty file, is 0. 52df930be7Sderaadt */ 5345f2ab88Sderaadt if (F_ISSET(cmdp, E_ADDR_DEF)) { 5445f2ab88Sderaadt if (db_last(sp, &lno)) 55df930be7Sderaadt return (1); 56df930be7Sderaadt } else 57df930be7Sderaadt lno = cmdp->addr1.lno; 58df930be7Sderaadt 5945f2ab88Sderaadt (void)ex_printf(sp, "%ld\n", lno); 60df930be7Sderaadt return (0); 61df930be7Sderaadt } 62