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