/* $NetBSD: db_write_cmd.c,v 1.27 2015/06/06 22:06:05 matt Exp $ */ /* * Mach Operating System * Copyright (c) 1991,1990 Carnegie Mellon University * All Rights Reserved. * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. * * Carnegie Mellon requests users of this software to return to * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 * * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * * Author: David B. Golub, Carnegie Mellon University * Date: 7/90 */ #include __KERNEL_RCSID(0, "$NetBSD: db_write_cmd.c,v 1.27 2015/06/06 22:06:05 matt Exp $"); #include #include #include /* * Write to file. */ /*ARGSUSED*/ void db_write_cmd(db_expr_t address, bool have_addr, db_expr_t count, const char *modif) { db_addr_t addr; db_expr_t old_value; db_expr_t new_value; int size; bool wrote_one; bool show_old_val; addr = (db_addr_t) address; wrote_one = false; show_old_val = islower((unsigned char)modif[0]); switch (tolower((unsigned char)modif[0])) { case 'b': size = 1; break; case 'h': size = 2; break; case 'l': case '\0': size = 4; break; case 'q': if (sizeof(db_expr_t) != sizeof(uint64_t)) { size = -1; db_error("q not supported\n"); /*NOTREACHED*/ } case 'L': size = sizeof(db_expr_t); break; default: size = -1; db_error("Unknown size\n"); /*NOTREACHED*/ } while (db_expression(&new_value)) { db_printsym(addr, DB_STGY_ANY, db_printf); if (show_old_val) { old_value = db_get_value(addr, size, false); db_printf("\t\t%s = ", db_num_to_str(old_value)); db_printf("%s\n", db_num_to_str(new_value)); } else db_printf("\t\t= %s\n", db_num_to_str(new_value)); db_put_value(addr, size, new_value); addr += size; wrote_one = true; } if (!wrote_one) { db_error("Nothing written.\n"); /*NOTREACHED*/ } db_next = addr; db_prev = addr - size; db_skip_to_eol(); } ohover'>AgeCommit message (Expand)Author 2011-09-01reinstate NULL cast by request, where the NULL was being passed as a varargplunky 2011-08-31NULL does not need a castplunky 2011-08-06Fix up still more casts; use NULL instead of (char *)0.dholland 2011-08-06Remove more silly casts.dholland 2011-08-06Use the right type for the malloc wrapper function, and don't cast thedholland 2011-08-06<sys/wait.h> is standard, so just use it instead of fiddling about withdholland 2011-05-23Correctly print variables as strings, not as format string.joerg 2010-02-03Userland now builds and uses terminfo instead of termcap.roy 2009-08-12sprinkle staticdholland 2009-06-07ANSIfy function declarations. All object file diffs inspected.dholland 2007-12-15convert __attribute__s to applicable cdefs.h macrosperry 2006-04-24Coverity CID 3032: Prevent double free: Next to the call of page_more()christos 2006-04-02Coverity CID 2791: Fix file pointer leak.christos 2006-03-29Fix Coverity issue 891 -- FORWARD_NULL.jnemeth 2003-04-02Hack is now BSD-licensed. Thanks to Andries Brouwer, Jay Fenlason andjsm 2001-03-25Make mostly gcc -W clean, and other cleanup:jsm 1997-10-19WARNsify...christos 1995-03-23merge with Lite, new RCS id conventions, etc.cgd 1995-02-28change <sys/signal.h> to <signal.h>jtc