"trondd" <tro...@kagu-tsuchi.com> writes:

> On Sun, May 15, 2016 1:22 pm, Juan Francisco Cantero Hurtado wrote:
>> On Sun, May 15, 2016 at 06:43:16PM +0200, Jeremie Courreges-Anglas wrote:
>>> "Ted Unangst" <t...@tedunangst.com> writes:
>>>
>>> > i'm tired of seeing bug reports with no subject. i also get a fair bit
>>> of spam
>>> > with no subject and i am easily confused. something is better than
>>> nothing.
>>>
>>> I fear that after that change all bug reports will only have [bug
>>> report] as Subject.  Something that wouldn't catch the eye of people
>>> that might be able to understand and fix the problem.
>>
>
> Why not make Subject a required field?  Might want to also add a comment
> there like Category and Synopsis have.

I like this idea, but those are not "required" fields.  Also I don't
find the warning message helpful.

Here's a patch that builds up on Tim's diff.  Tell the user which fields
should be filled in, in the order where they are found in the bugreport.


Index: sendbug.c
===================================================================
RCS file: /cvs/src/usr.bin/sendbug/sendbug.c,v
retrieving revision 1.74
diff -u -p -p -u -r1.74 sendbug.c
--- sendbug.c   17 Mar 2016 19:40:43 -0000      1.74
+++ sendbug.c   15 May 2016 21:53:39 -0000
@@ -30,7 +30,7 @@
 #define BEGIN64 "begin-base64 "
 #define END64 "===="
 
-int    checkfile(const char *);
+void   checkfile(const char *);
 void   debase(void);
 void   dmesg(FILE *);
 int    editit(const char *);
@@ -164,8 +164,7 @@ main(int argc, char *argv[])
                errx(1, "report unchanged, nothing sent");
 
  prompt:
-       if (!checkfile(tmppath))
-               fprintf(stderr, "fields are blank, must be filled in\n");
+       checkfile(tmppath);
        c = prompt();
        switch (c) {
        case 'a':
@@ -508,26 +507,37 @@ matchline(const char *s, const char *lin
 /*
  * Are all required fields filled out?
  */
-int
+void
 checkfile(const char *pathname)
 {
        FILE *fp;
        size_t len;
-       int category = 0, synopsis = 0;
+       int category = 0, synopsis = 0, subject = 0;
        char *buf;
 
        if ((fp = fopen(pathname, "r")) == NULL) {
                warn("%s", pathname);
-               return (0);
+               return;
        }
        while ((buf = fgetln(fp, &len))) {
                if (matchline(">Category:", buf, len))
                        category = 1;
                else if (matchline(">Synopsis:", buf, len))
                        synopsis = 1;
+               else if (matchline("Subject:", buf, len))
+                       subject = 1;
        }
        fclose(fp);
-       return (category && synopsis);
+       if (!category || !synopsis || !subject) {
+               fprintf(stderr, "Some fields are blank, please fill them in: ");
+               if (!subject)
+                       fprintf(stderr, "Subject ");
+               if (!synopsis)
+                       fprintf(stderr, "Synopsis ");
+               if (!category)
+                       fprintf(stderr, "Category ");
+               fputc('\n', stderr);
+       }
 }
 
 void

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to