/**************************************************************************** * apps/nshlib/nsh_prompt.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. The * ASF licenses this file to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * ****************************************************************************/ /**************************************************************************** * Included Files ****************************************************************************/ #include #include #include #include #include "nsh.h" /**************************************************************************** * Preprocessor Macros ****************************************************************************/ #define NSH_PROMPT_SIZE (CONFIG_NSH_PROMPT_MAX + 1 - \ sizeof(CONFIG_NSH_PROMPT_SUFFIX)) /**************************************************************************** * Private Variables ****************************************************************************/ static char g_nshprompt[CONFIG_NSH_PROMPT_MAX] = CONFIG_NSH_PROMPT_STRING; /**************************************************************************** * Public Functions ****************************************************************************/ /**************************************************************************** * Name: nsh_update_prompt * * Description: * This updates g_nshprompt from multiple sources, in the following order: * * - non-empty NSH_PROMPT_ENV variable and suffix * - non-empty NSH_PROMPT_STRING * - non-empty HOSTNAME and suffix * * Note that suffix has higher priority when used to help clearly separate * prompts from command line inputs. * * Results: * - updated g_nsh_prompt value. * ****************************************************************************/ void nsh_update_prompt(void) { static_assert(CONFIG_NSH_PROMPT_MAX > sizeof(CONFIG_NSH_PROMPT_STRING), "NSH_PROMPT_STRING too long!"); static_assert(CONFIG_NSH_PROMPT_MAX > sizeof(CONFIG_NSH_PROMPT_SUFFIX), "NSH_PROMPT_SUFFIX too long!"); #ifndef CONFIG_DISABLE_ENVIRON if (getenv(CONFIG_NSH_PROMPT_ENV)) { strlcpy(g_nshprompt, getenv(CONFIG_NSH_PROMPT_ENV), NSH_PROMPT_SIZE); strcat(g_nshprompt, CONFIG_NSH_PROMPT_SUFFIX); } else #endif if (CONFIG_NSH_PROMPT_STRING[0]) { strcpy(g_nshprompt, CONFIG_NSH_PROMPT_STRING); } else { gethostname(g_nshprompt, NSH_PROMPT_SIZE); strcat(g_nshprompt, CONFIG_NSH_PROMPT_SUFFIX); } } /**************************************************************************** * Name: nsh_prompt * * Description: * This function returns latest prompt string. * It is needed as g_nshprompt is no longer public. * ****************************************************************************/ FAR const char *nsh_prompt(void) { return g_nshprompt; }