- binary.BigEndian.PutUint32(fnwi.FileSize[:], uint32(len(dir)))
- copy(fnwi.Type[:], fileType[:])
+
+ if rFile.IsDir() {
+ dir, err := ioutil.ReadDir(filepath.Join(path, file.Name()))
+ if err != nil {
+ return fields, err
+ }
+
+ var c uint32
+ for _, f := range dir {
+ if !strings.HasPrefix(f.Name(), ".") {
+ c += 1
+ }
+ }
+
+ binary.BigEndian.PutUint32(fnwi.FileSize[:], c)
+ copy(fnwi.Type[:], []byte("fldr")[:])
+ copy(fnwi.Creator[:], fileCreator[:])
+ } else {
+ binary.BigEndian.PutUint32(fnwi.FileSize[:], uint32(rFile.Size()))
+ copy(fnwi.Type[:], []byte(fileTypeFromFilename(rFile.Name()).TypeCode)[:])
+ copy(fnwi.Creator[:], []byte(fileTypeFromFilename(rFile.Name()).CreatorCode)[:])
+ }
+
+ } else if file.IsDir() {
+ dir, err := ioutil.ReadDir(filepath.Join(path, file.Name()))
+ if err != nil {
+ return fields, err
+ }
+
+ var c uint32
+ for _, f := range dir {
+ if !strings.HasPrefix(f.Name(), ".") {
+ c += 1
+ }
+ }
+
+ binary.BigEndian.PutUint32(fnwi.FileSize[:], c)
+ copy(fnwi.Type[:], []byte("fldr")[:])