parent
3a4c6d43e4
commit
cfc67a8246
@ -0,0 +1,8 @@ |
|||||||
|
## |
||||||
|
## These are comments |
||||||
|
## |
||||||
|
|
||||||
|
host=localhost |
||||||
|
port=8080 |
||||||
|
paste_dir=./pastes |
||||||
|
templ_dir=./html |
@ -0,0 +1,83 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"os" |
||||||
|
"bufio" |
||||||
|
"regexp" |
||||||
|
"strings" |
||||||
|
"log" |
||||||
|
) |
||||||
|
|
||||||
|
|
||||||
|
type Config struct { |
||||||
|
host string |
||||||
|
port string |
||||||
|
paste_dir string |
||||||
|
templ_dir string |
||||||
|
log_fname string |
||||||
|
logger *log.Logger |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
func (c Config) String() string { |
||||||
|
|
||||||
|
var s string |
||||||
|
|
||||||
|
s+= "Host: " + c.host + "\n" |
||||||
|
s+= "Port: " + c.port + "\n" |
||||||
|
s+= "paste_dir: " + c.paste_dir + "\n" |
||||||
|
s+= "templ_dir: " + c.templ_dir + "\n" |
||||||
|
|
||||||
|
return s |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func parse_config (fname string, c *Config) error { |
||||||
|
|
||||||
|
|
||||||
|
f, err := os.Open(fname); |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
r := bufio.NewScanner(f) |
||||||
|
|
||||||
|
line := 0 |
||||||
|
for r.Scan (){ |
||||||
|
s := r.Text() |
||||||
|
line += 1 |
||||||
|
if matched, _ := regexp.MatchString("^([ \t]*)$", s); matched != true { |
||||||
|
// it's not a blank line
|
||||||
|
if matched, _ := regexp.MatchString("^#", s); matched != true { |
||||||
|
// This is not a comment...
|
||||||
|
if matched, _ := regexp.MatchString("^([a-z_]+)=.*", s); matched == true { |
||||||
|
// and contains an assignment
|
||||||
|
fields := strings.Split(s, "=") |
||||||
|
switch fields[0]{ |
||||||
|
case "host": |
||||||
|
c.host = fields[1] |
||||||
|
case "port": |
||||||
|
c.port = fields[1] |
||||||
|
case "paste_dir": |
||||||
|
c.paste_dir = fields[1]
|
||||||
|
case "templ_dir": |
||||||
|
c.templ_dir = fields[1] |
||||||
|
case "log_fname": |
||||||
|
c.log_fname = fields[1] |
||||||
|
default: |
||||||
|
fmt.Fprintf(os.Stderr, "Error reading config file %s at line %d: unknown variable '%s'\n", |
||||||
|
fname, line, fields[0]) |
||||||
|
} |
||||||
|
} else { |
||||||
|
fmt.Fprintf(os.Stderr, "Error reading config file %s at line %d: unknown statement '%s'\n", |
||||||
|
fname, line, s) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return nil |
||||||
|
} |
||||||
|
|
||||||
|
|
Loading…
Reference in new issue