Convert a room name to ctdl.xx.xx style newsgroup name if no dots appear at all
authorArt Cancro <ajc@uncensored.citadel.org>
Sun, 27 Apr 2014 19:09:12 +0000 (15:09 -0400)
committerArt Cancro <ajc@uncensored.citadel.org>
Sun, 27 Apr 2014 19:09:12 +0000 (15:09 -0400)
citadel/modules/nntp/serv_nntp.c

index db3e1dc22d6afe9f7db612f30e4af373ab4ccbbf..1e686d3bc1cc92b53299c66af109333f2507a74d 100644 (file)
@@ -74,6 +74,7 @@ extern long timezone;
 int is_valid_newsgroup_name(char *name) {
        char *ptr = name;
        int has_a_letter = 0;
+       int num_dots = 0;
 
        if (!ptr) return(0);
        if (!strncasecmp(name, "ctdl.", 5)) return(0);
@@ -84,6 +85,10 @@ int is_valid_newsgroup_name(char *name) {
                        has_a_letter = 1;
                }
 
+               if (ptr[0] == '.') {
+                       ++num_dots;
+               }
+
                if (    (isalnum(ptr[0]))
                        || (ptr[0] == '.')
                        || (ptr[0] == '+')
@@ -95,7 +100,7 @@ int is_valid_newsgroup_name(char *name) {
                        return(0);
                }
        }
-       return(has_a_letter);
+       return( (has_a_letter) && (num_dots >= 1) ) ;
 }
 
 
@@ -123,7 +128,7 @@ void room_to_newsgroup(char *target, char *source, size_t target_size) {
                        || (ch == '.')
                        || (ch == '-')
                ) {
-                       target[len++] = ch;
+                       target[len++] = tolower(ch);
                        target[len] = 0;
                }
                else {