123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /* 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 <string.h>
- #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;
- }
|