Changeset 591 in code for trunk


Ignore:
Timestamp:
Sep 19, 2021, 2:55:12 PM (4 years ago)
Author:
hubert
Message:

msgstore_fs: escape "." and ".."

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/msgstore_fs.go

    r558 r591  
    1717const fsMessageStoreMaxTries = 100
    1818
    19 var escapeFilename = strings.NewReplacer("/", "-", "\\", "-")
     19func escapeFilename(unsafe string) (safe string) {
     20        if unsafe == "." {
     21                return "-"
     22        } else if unsafe == ".." {
     23                return "--"
     24        } else {
     25                return strings.NewReplacer("/", "-", "\\", "-").Replace(unsafe)
     26        }
     27}
    2028
    2129type date struct {
     
    7078func newFSMessageStore(root, username string) *fsMessageStore {
    7179        return &fsMessageStore{
    72                 root:  filepath.Join(root, escapeFilename.Replace(username)),
     80                root:  filepath.Join(root, escapeFilename(username)),
    7381                files: make(map[string]*os.File),
    7482        }
     
    7886        year, month, day := t.Date()
    7987        filename := fmt.Sprintf("%04d-%02d-%02d.log", year, month, day)
    80         return filepath.Join(ms.root, escapeFilename.Replace(network.GetName()), escapeFilename.Replace(entity), filename)
     88        return filepath.Join(ms.root, escapeFilename(network.GetName()), escapeFilename(entity), filename)
    8189}
    8290
     
    440448
    441449func (ms *fsMessageStore) ListTargets(network *network, start, end time.Time, limit int) ([]chatHistoryTarget, error) {
    442         rootPath := filepath.Join(ms.root, escapeFilename.Replace(network.GetName()))
     450        rootPath := filepath.Join(ms.root, escapeFilename(network.GetName()))
    443451        root, err := os.Open(rootPath)
    444452        if err != nil {
Note: See TracChangeset for help on using the changeset viewer.