Port synccommon.GetAllEntryData (partial implementation)

This commit is contained in:
2026-01-31 22:47:46 -05:00
parent 079ecb64d0
commit 308fb7f046
2 changed files with 30 additions and 1 deletions
+1 -1
View File
@@ -116,6 +116,6 @@ int main() {
- [X] ~~ShearAgeFileLocal(vanityPath string) error~~ (not for use outside of libmutton) - [X] ~~ShearAgeFileLocal(vanityPath string) error~~ (not for use outside of libmutton)
- [X] ~~ShearLocal(vanityPath, clientDeviceID string, onlyShearAgeFile bool) (string, bool, error)~~ (not for use outside of libmutton) - [X] ~~ShearLocal(vanityPath, clientDeviceID string, onlyShearAgeFile bool) (string, bool, error)~~ (not for use outside of libmutton)
- [X] WalkEntryDir() ([]string, []string, error) - [X] WalkEntryDir() ([]string, []string, error)
- [X] ~~GetAllEntryData() (EntryMapT, error)~~ (not easy to port to C; also not needed) - [X] GetAllEntryData() (EntryMapT, error)
- [ ] syncserver - [ ] syncserver
- [ ] GetRemoteDataFromServer(clientDeviceID string) - [ ] GetRemoteDataFromServer(clientDeviceID string)
+29
View File
@@ -4,6 +4,9 @@ package main
// #include "types.h" // #include "types.h"
import "C" import "C"
import ( import (
"unsafe"
"github.com/rwinkhart/libmutton/age"
"github.com/rwinkhart/libmutton/synccommon" "github.com/rwinkhart/libmutton/synccommon"
) )
@@ -26,3 +29,29 @@ func WalkEntryDir() (*C.char, *C.PascalString, C.int, *C.PascalString, C.int) {
} }
return nil, getCPascalStringArrayFromStringSlice(files), C.int(len(files)), getCPascalStringArrayFromStringSlice(dirs), C.int(len(dirs)) return nil, getCPascalStringArrayFromStringSlice(files), C.int(len(files)), getCPascalStringArrayFromStringSlice(dirs), C.int(len(dirs))
} }
// GetAllEntryData returns:
// r0: err
//
// r1: vanityPaths (pointer to C-allocated array)
//
// r2: vanityPaths length
//
// r3: translatedAges (pointer to C-allocated array)
//
// r4: translatedAges length
//
//export GetAllEntryData
func GetAllEntryData() (*C.char, *C.PascalString, C.int, *uint8, C.int) {
entryMap, err := synccommon.GetAllEntryData()
if err != nil {
return C.CString(err.Error()), nil, 0, nil, 0
}
var vanityPaths []string
var translatedAges []uint8
for k, v := range entryMap {
vanityPaths = append(vanityPaths, k)
translatedAges = append(translatedAges, age.TranslateAgeTimestamp(v.AgeTimestamp))
}
return nil, getCPascalStringArrayFromStringSlice(vanityPaths), C.int(len(vanityPaths)), (*uint8)(unsafe.Pointer(&translatedAges[0])), C.int(len(translatedAges))
}