extensions-tool: Handle NULL input when prompting for metadata
g_data_input_stream_read_line_utf8() may return NULL, for example when interrupting the prompt with ^D. Handle that case and keep prompting until we got a line. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
This commit is contained in:
parent
6c0bd207e9
commit
b6262f0666
@ -188,42 +188,54 @@ prompt_metadata (char **uuid, char **name, char **description)
|
|||||||
|
|
||||||
if (name != NULL && *name == NULL)
|
if (name != NULL && *name == NULL)
|
||||||
{
|
{
|
||||||
char *line;
|
char *line = NULL;
|
||||||
|
|
||||||
g_print (
|
g_print (
|
||||||
_("Name should be a very short (ideally descriptive) string.\n"
|
_("Name should be a very short (ideally descriptive) string.\n"
|
||||||
"Examples are: %s"),
|
"Examples are: %s"),
|
||||||
"“Click To Focus”, “Adblock”, “Shell Window Shrinker”\n");
|
"“Click To Focus”, “Adblock”, “Shell Window Shrinker”\n");
|
||||||
g_print ("%s: ", _("Name"));
|
|
||||||
|
|
||||||
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
while (line == NULL)
|
||||||
|
{
|
||||||
|
g_print ("%s: ", _("Name"));
|
||||||
|
|
||||||
|
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
*name = g_strdelimit (line, "\n", '\0');
|
*name = g_strdelimit (line, "\n", '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (description != NULL && *description == NULL)
|
if (description != NULL && *description == NULL)
|
||||||
{
|
{
|
||||||
char *line;
|
char *line = NULL;
|
||||||
|
|
||||||
g_print (
|
g_print (
|
||||||
_("Description is a single-sentence explanation of what your extension does.\n"
|
_("Description is a single-sentence explanation of what your extension does.\n"
|
||||||
"Examples are: %s"),
|
"Examples are: %s"),
|
||||||
"“Make windows visible on click”, “Block advertisement popups”, “Animate windows shrinking on minimize”\n");
|
"“Make windows visible on click”, “Block advertisement popups”, “Animate windows shrinking on minimize”\n");
|
||||||
g_print ("%s: ", _("Description"));
|
|
||||||
|
|
||||||
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
while (line == NULL)
|
||||||
|
{
|
||||||
|
g_print ("%s: ", _("Description"));
|
||||||
|
|
||||||
|
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
*description = g_strdelimit (line, "\n", '\0');
|
*description = g_strdelimit (line, "\n", '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uuid != NULL && *uuid == NULL)
|
if (uuid != NULL && *uuid == NULL)
|
||||||
{
|
{
|
||||||
char *line;
|
char *line = NULL;
|
||||||
|
|
||||||
g_print (
|
g_print (
|
||||||
_("UUID is a globally-unique identifier for your extension.\n"
|
_("UUID is a globally-unique identifier for your extension.\n"
|
||||||
"This should be in the format of an email address (clicktofocus@janedoe.example.com)\n"));
|
"This should be in the format of an email address (clicktofocus@janedoe.example.com)\n"));
|
||||||
g_print ("UUID: ");
|
|
||||||
|
|
||||||
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
while (line == NULL)
|
||||||
|
{
|
||||||
|
g_print ("UUID: ");
|
||||||
|
|
||||||
|
line = g_data_input_stream_read_line_utf8 (istream, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
*uuid = g_strdelimit (line, "\n", '\0');
|
*uuid = g_strdelimit (line, "\n", '\0');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user