func (c *Camera) ListFiles(folder string) ([]string, int) { if folder == "" { folder = "/" } if !strings.HasSuffix(folder, "/") { folder = folder + "/" } var cameraList *C.CameraList C.gp_list_new(&cameraList) defer C.free(unsafe.Pointer(cameraList)) cFolder := C.CString(folder) defer C.free(unsafe.Pointer(cFolder)) err := C.gp_camera_folder_list_files(c.camera, cFolder, cameraList, c.context) fileNameMap, _ := cameraListToMap(cameraList) names := make([]string, len(fileNameMap)) i := 0 for key, _ := range fileNameMap { names[i] = key i += 1 } return names, int(err) }
func (camera *Camera) findAllFilesInDir(basedirPath *string) ([]string, error) { var err error returnedSlice := []string{} gpDirPath := C.CString(*basedirPath) defer C.free(unsafe.Pointer(gpDirPath)) gpFileList, err := newGphotoList() if err != nil { return nil, err } defer C.gp_list_free(gpFileList) if retval := C.gp_camera_folder_list_files(camera.gpCamera, gpDirPath, gpFileList, camera.gpContext); retval != gpOk { return nil, fmt.Errorf("Cannot get file list from dir %s, error code %v", *basedirPath, retval) } listSize := int(C.gp_list_count(gpFileList)) for i := 0; i < listSize; i++ { var gpListElementName *C.char C.gp_list_get_name(gpFileList, (C.int)(i), (**C.char)(&gpListElementName)) returnedSlice = append(returnedSlice, C.GoString(gpListElementName)) } return returnedSlice, nil }