/* signame.c -- get the name of a signal Copyright 2012 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. */ #include #include "runtime.h" #include "arch.h" #include "malloc.h" String Signame (intgo sig) __asm__ (GOSYM_PREFIX "syscall.Signame"); String Signame (intgo sig) { const char* s = NULL; char buf[100]; size_t len; byte *data; String ret; #if defined(HAVE_STRSIGNAL) s = strsignal (sig); #endif if (s == NULL) { snprintf(buf, sizeof buf, "signal %ld", (long) sig); s = buf; } len = __builtin_strlen (s); data = runtime_mallocgc (len, nil, false); __builtin_memcpy (data, s, len); // lowercase first letter: Bad -> bad, but STREAM -> STREAM. if ('A' <= data[0] && data[0] <= 'Z' && 'a' <= data[1] && data[1] <= 'z') data[0] += 'a' - 'A'; ret.str = data; ret.len = len; return ret; }