From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751054AbbD3KxK (ORCPT ); Thu, 30 Apr 2015 06:53:10 -0400 Received: from mail-wi0-f182.google.com ([209.85.212.182]:35530 "EHLO mail-wi0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750729AbbD3KxG (ORCPT ); Thu, 30 Apr 2015 06:53:06 -0400 From: Bartosz Golaszewski To: LKML Cc: linux-kbuild , Bartosz Golaszewski Subject: [RFC] scripts: kerrno.sh - errno translator Date: Thu, 30 Apr 2015 12:53:35 +0200 Message-Id: <1430391215-13768-1-git-send-email-bgolaszewski@baylibre.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Shell script allowing to find errno definitions and descriptions in the kernel source. Signed-off-by: Bartosz Golaszewski --- This is a simple script I use when seeing messages like: some_func() failed: -123 to find out the actual errno meaning. The usage is very simple - just call 'scripts/kerrno.sh 1 4 -50 (...)'. I'm sending this as RFC in order to find out if there's any interest in merging this script with the kernel code. scripts/kerrno.sh | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 scripts/kerrno.sh diff --git a/scripts/kerrno.sh b/scripts/kerrno.sh new file mode 100755 index 0000000..ebdc8da --- /dev/null +++ b/scripts/kerrno.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +# Get preprocessor definitions and descriptions of errno numbers from the +# Linux kernel source. +# +# This script parses all the C headers containing errno definitions in the +# Linux source tree and extracts their definitions and corresponding +# descriptions in order to quickly give users an idea on what kind of +# an error they're dealing with. +# +# Example: +# scripts/kerrno.sh 43 -12 3 +# +# Should be called from the top of the source tree. +# +# Copyright (C) 2015 Bartosz Golaszewski + +FILEPTRN=".*errno.*\.[ch]$" +ERRNOPTRN="\#define[\ \t]+E[A-Z0-9]+[\ \t]+[0-9]+[\ \t]+" + +usage() +{ + echo "$0: get info for error numbers" + echo + echo "Usage:" + echo "\t$0 " + echo + echo "\tExample: $0 -18 34 128" + echo +} + +if [ "$#" -eq "0" ] || ([ "$#" -eq "1" ] && [ "$1" = "--help" ]) +then + usage + exit +fi + +for WANTED in $@ +do + case ${WANTED#-} in + ''|*[!0-9]*) + echo "$WANTED: not a number"; + continue; + ;; + esac + + test "$WANTED" -lt "0" && WANTED=$(echo -n $WANTED | cut -d'-' -f2) + + echo "Errno $WANTED:" + find ./ -regex "$FILEPTRN" -exec grep -nPH "$ERRNOPTRN" {} \; \ + | tr -s ':' ' ' \ + | tr -s '\t' ' ' \ + | cut -d' ' -f1,2,4,5 | while read FILE LINE ERRNO NUM + do + if [ "$NUM" -eq "$WANTED" ] + then + echo -n "\t$ERRNO (" + echo -n "$(head $FILE -n $LINE | tail -1 | cut -d'*' -f2)" + echo ") defined in $FILE:$LINE" + fi + done +done -- 2.1.4