xiaoxiang781216 commented on code in PR #2300:
URL: https://github.com/apache/nuttx-apps/pull/2300#discussion_r1501638151


##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"

Review Comment:
   remove too



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))
+
+#define SUFFIX_MAX  (CONFIG_NSH_PROMPT_SUFFIX_MAX)
+#define PROMPT_MAX  (CONFIG_NSH_PROMPT_MAX - SUFFIX_MAX)
+
+/****************************************************************************
+ * Private Variables
+ ****************************************************************************/
+
+static char g_nshprompt[CONFIG_NSH_PROMPT_MAX] = CONFIG_NSH_PROMPT_STRING;
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nsh_update_prompt
+ *
+ * Description:
+ *   This function updates g_nshprompt with latest data based on prioritized
+ *   sources, from highest to lowest priority:
+ *
+ *   - non-empty NSH_PROMPT_STRING w/o appending suffix
+ *   - non-empty NSH_PROMPT_ENV variable value with suffix appended
+ *   - non-empty HOSTNAME with g_prompt_suffix appended
+ *   - g_prompt_suffix
+ *
+ * Results:
+ *   - updated g_nsh_prompt value if necessary.
+ *
+ ****************************************************************************/
+
+void nsh_update_prompt(void)
+{
+  size_t i;     /* position to appending the suffix */
+
+  if (CONFIG_NSH_PROMPT_STRING[0] == '\0')
+    {
+#ifndef CONFIG_DISABLE_ENVIRON
+      if (getenv(CONFIG_NSH_PROMPT_ENV))
+        {
+          strlcpy(g_nshprompt, getenv(CONFIG_NSH_PROMPT_ENV),
+                  sizeof(g_nshprompt));

Review Comment:
   ```suggestion
                     NSH_PROMPT_MAX);
   ```



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))

Review Comment:
   remove MIN



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))
+
+#define SUFFIX_MAX  (CONFIG_NSH_PROMPT_SUFFIX_MAX)

Review Comment:
   remove SUFFIX_MAX



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))
+
+#define SUFFIX_MAX  (CONFIG_NSH_PROMPT_SUFFIX_MAX)
+#define PROMPT_MAX  (CONFIG_NSH_PROMPT_MAX - SUFFIX_MAX)
+
+/****************************************************************************
+ * Private Variables
+ ****************************************************************************/
+
+static char g_nshprompt[CONFIG_NSH_PROMPT_MAX] = CONFIG_NSH_PROMPT_STRING;
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nsh_update_prompt
+ *
+ * Description:
+ *   This function updates g_nshprompt with latest data based on prioritized
+ *   sources, from highest to lowest priority:
+ *
+ *   - non-empty NSH_PROMPT_STRING w/o appending suffix
+ *   - non-empty NSH_PROMPT_ENV variable value with suffix appended
+ *   - non-empty HOSTNAME with g_prompt_suffix appended
+ *   - g_prompt_suffix
+ *
+ * Results:
+ *   - updated g_nsh_prompt value if necessary.
+ *
+ ****************************************************************************/
+
+void nsh_update_prompt(void)
+{
+  size_t i;     /* position to appending the suffix */
+
+  if (CONFIG_NSH_PROMPT_STRING[0] == '\0')
+    {
+#ifndef CONFIG_DISABLE_ENVIRON
+      if (getenv(CONFIG_NSH_PROMPT_ENV))
+        {
+          strlcpy(g_nshprompt, getenv(CONFIG_NSH_PROMPT_ENV),
+                  sizeof(g_nshprompt));
+        }
+      else
+#endif
+        {
+          gethostname(g_nshprompt, sizeof(g_nshprompt));

Review Comment:
   ```suggestion
             gethostname(g_nshprompt, NSH_PROMPT_MAX);
   ```



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))
+
+#define SUFFIX_MAX  (CONFIG_NSH_PROMPT_SUFFIX_MAX)
+#define PROMPT_MAX  (CONFIG_NSH_PROMPT_MAX - SUFFIX_MAX)
+
+/****************************************************************************
+ * Private Variables
+ ****************************************************************************/
+
+static char g_nshprompt[CONFIG_NSH_PROMPT_MAX] = CONFIG_NSH_PROMPT_STRING;
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nsh_update_prompt
+ *
+ * Description:
+ *   This function updates g_nshprompt with latest data based on prioritized
+ *   sources, from highest to lowest priority:
+ *
+ *   - non-empty NSH_PROMPT_STRING w/o appending suffix
+ *   - non-empty NSH_PROMPT_ENV variable value with suffix appended
+ *   - non-empty HOSTNAME with g_prompt_suffix appended
+ *   - g_prompt_suffix
+ *
+ * Results:
+ *   - updated g_nsh_prompt value if necessary.
+ *
+ ****************************************************************************/
+
+void nsh_update_prompt(void)
+{
+  size_t i;     /* position to appending the suffix */
+
+  if (CONFIG_NSH_PROMPT_STRING[0] == '\0')
+    {
+#ifndef CONFIG_DISABLE_ENVIRON
+      if (getenv(CONFIG_NSH_PROMPT_ENV))
+        {
+          strlcpy(g_nshprompt, getenv(CONFIG_NSH_PROMPT_ENV),
+                  sizeof(g_nshprompt));
+        }
+      else
+#endif
+        {
+          gethostname(g_nshprompt, sizeof(g_nshprompt));
+        }
+
+      i = MIN(strlen(g_nshprompt), PROMPT_MAX);
+      strlcpy(&g_nshprompt[i], CONFIG_NSH_PROMPT_SUFFIX, SUFFIX_MAX);

Review Comment:
   ```suggestion
         strcat(g_nshprompt, CONFIG_NSH_PROMPT_SUFFIX);
   ```
   and remove i



##########
nshlib/Kconfig:
##########
@@ -66,7 +66,38 @@ config NSH_PROMPT_STRING
        string "Prompt String"
        default "nsh> "
        ---help---
-               Provide the shell prompt string, default is "nsh> ".
+               Provide the shell prompt string with size limit NSH_PROMPT_MAX.
+               default is "nsh> ".
+
+config NSH_PROMPT_MAX
+       int "Maximum Size of Prompt String"
+       default NAME_MAX
+       ---help---
+               The maximum size of shell prompt string, including ending null.
+
+config NSH_PROMPT_ENV
+       string "Prompt String Environment Variable"
+       default "PS1"
+       depends on !DISABLE_ENVIRON
+       ---help---
+               The environment variable name containing prompt string.
+               Only used when NSH_PROMPT_STRING is empty.
+
+config NSH_PROMPT_SUFFIX
+       string "Suffix used to derive fallback prompt string"
+       default "> "
+       ---help---
+               When NSH_PROMPT_STRING is empty, the environment variable 
defined
+               by NSH_PROMPT_ENV or hostname will be used to derive the prompt 
string
+               at runtime. This suffix will be also used to clearly separate 
prompt
+               string from input commands.
+
+config NSH_PROMPT_SUFFIX_MAX

Review Comment:
   why need NSH_PROMPT_SUFFIX_MAX? which can be computed from 
sizeof(CONFIG_NSH_PROMPT_SUFFIX)



##########
nshlib/nsh_prompt.c:
##########
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * 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 <nuttx/config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef CONFIG_NSH_CLE
+#  include "system/readline.h"
+#endif
+
+#include "nsh.h"
+
+/****************************************************************************
+ * Preprocessor Macros
+ ****************************************************************************/
+
+#define MIN(a,b)   (((a) < (b)) ? (a) : (b))
+
+#define SUFFIX_MAX  (CONFIG_NSH_PROMPT_SUFFIX_MAX)
+#define PROMPT_MAX  (CONFIG_NSH_PROMPT_MAX - SUFFIX_MAX)

Review Comment:
   ```suggestion
   #define NSH_PROMPT_MAX  (CONFIG_NSH_PROMPT_MAX - 
sizeof(CONFIG_NSH_PROMPT_SUFFIX) - 1)
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to