[Gambas-user] Calling library functions in Gambas2

ron ronstk at ...239...
Thu Aug 30 01:56:54 CEST 2007


On Thursday 30 August 2007 01:43, easuter wrote:
> 
> Thanks Ron, but I'm not sure this is working out too well, lol 
> 
> What I need is to use parted to get the name (eg: xfs, reiserfs or ext3) of
> the filesystem of a partition.
> I've been battling to figure out which function in libparted exactly I need
> and how to declare it (even after looking at the source code, which is
> mostly lost on me since I haven no experience with C, just a few of the
> basics).
> I think that I need ped_filesystem_type_get
> (http://www.gnu.org/software/parted/api/group__PedFileSystem.html#g7aedfb472456048086ebacb6c0f03836),
> but have no idea how it should be declared in gambas to work properly.
> 
> Also, I'm not sure that this feature works 100%. 
> 
> For example, the simplest of all I tried just to test the EXTERN functions
> in general it was:
> 
> PUBLIC EXTERN printf(stest AS String, itest AS Integer) AS String IN
> "libc:6"
> 
> PUBLIC SUB main()
>    PRINT printf("Testing string, now testing integer: %d", 5)
> END
> 
> returns: Testing string, now testing integer: 5
> 
> That worked fine. However, calling the simplest function in libparted
> (ped_get_version) did not return anything useful, but then again, I'm
> probably doing something wrong.
> 
> PUBLIC EXTERN ped_get_version() AS String IN "libparted"
> 
> PUBLIC SUB main()
>    PRINT ped_get_version()
> END
> 
> returns an empty string.
> If I make the extern declaration use an Integer as the return data-type for
> ped_get_version, then a very useless number is returned (-1212003088).
> Same happens when made to use Pointer and if I use
> StrPtr(ped_get_version()), then the same empty string is returned as when I
> use the String datatype.
> 
> I'd really appreciate any help in pointing out mistakes here, and if
> possible some indicators as to what can be done about the
> ped_filesystem_type_get function.
> 
> Cheers,
> 
> Eugéne

To see the filesystem type you can do 
  fdisk -l /dev/hda (lowercase L!!)
The /dev/hda should be a block device with a filesystem on it.

This can be used in gambas with the EXEC or SHELL statement.
search the help for it, I have no out of the box example in mind. :)

Ron










More information about the User mailing list