Coder Social home page Coder Social logo

Comments (14)

fredvs avatar fredvs commented on July 23, 2024

Hello TheLazyTomcat.

Well seen!

Yes, I have to check if Thomas has added new methods in the C header.

OK, I will add it asap.

Many thank to report it.

Fre;D

from uos.

fredvs avatar fredvs commented on July 23, 2024

Re-hello.

I will use the C header of last stable version: mpg123-1.25.12.

Fre;D

from uos.

TheLazyTomcat avatar TheLazyTomcat commented on July 23, 2024

Only quick look, but following seems to be missing:

mpg123_getformat2
mpg123_open_32
mpg123_open_64
mpg123_open_fd_32
mpg123_open_fd_64
mpg123_open_handle_32
mpg123_open_handle_64
mpg123_decode_frame_32
mpg123_decode_frame_64
mpg123_framebyframe_decode
mpg123_framebyframe_decode_32
mpg123_framebyframe_decode_64
mpg123_framebyframe_next
mpg123_framedata
mpg123_framepos
mpg123_framepos_32
mpg123_framepos_64
mpg123_tell_32
mpg123_tell_64
mpg123_tellframe_32
mpg123_tellframe_64
mpg123_seek_32
mpg123_seek_64
mpg123_feedseek_32
mpg123_feedseek_64
mpg123_seek_frame_32
mpg123_seek_frame_64
mpg123_timeframe_32
mpg123_timeframe_64
mpg123_index_32
mpg123_index_64
mpg123_set_index
mpg123_set_index_32
mpg123_set_index_64
mpg123_position_32
mpg123_position_64
mpg123_framelength
mpg123_framelength_32
mpg123_framelength_64
mpg123_length_32
mpg123_length_64
mpg123_set_filesize_32
mpg123_set_filesize_64
mpg123_spf
mpg123_chomp_string
mpg123_meta_free
mpg123_replace_reader
mpg123_replace_reader_32
mpg123_replace_reader_64
mpg123_replace_reader_handle
mpg123_replace_reader_handle_32
mpg123_replace_reader_handle_64

Hope i have not missed anything. Also, i have listed functions for explicit large/"normal" file access, whether you declare them is completely up to you, they are not essential.

from uos.

fredvs avatar fredvs commented on July 23, 2024

Ooops, lot of new methods!

OK, I will do it this week-end.

Fre;D

from uos.

fredvs avatar fredvs commented on July 23, 2024

Re-hello.

Sorry but I do not find in the mpg123.h header all the methods with *_32 or *_64, like you show:


mpg123_open_32
mpg123_open_64
mpg123_open_fd_32
mpg123_open_fd_64
etc...

There is something that I do not catch here...

Fre;D

from uos.

fredvs avatar fredvs commented on July 23, 2024

Hello.

OK I did add the missing methods with last commit 7ad1ae0

But I still wait before to add the *_32 and *_64 methods.

I have to check first in the binary-library of mpg123 if those methods are defined.

Fre;D

from uos.

TheLazyTomcat avatar TheLazyTomcat commented on July 23, 2024

They are for sure exported by the DLL, I know I have first noticed them when i was looking into what system DLLs it is using (which I do for every downloaded binary) and looked at export table.
They are not directly defined in mpg123.h, but at least the _64 suffix is documented (line 55 in the header) and used in macros for LFS.

EDIT
Also look into doc/LARGEFILE in the source of mpg123 (have to read it myself too, found it just now).

from uos.

fredvs avatar fredvs commented on July 23, 2024

Indeed:

$ nm -D /home/fred/uos/examples/lib/Linux/64bit/LibMpg123-64.so

gives: --->

               U cbrt
                U close
                U closedir
                U cos
                w __cxa_finalize
                U dlclose
                U dlopen
                U dlsym
                U __errno_location
                U fclose
                U fcntl
                U __fdelt_chk
                U fdopen
                U fopen
                U __fprintf_chk
                U free
                U fwrite
                U getenv
                w __gmon_start__
                U __isoc99_sscanf
                w _ITM_deregisterTMCloneTable
                w _ITM_registerTMCloneTable
                w _Jv_RegisterClasses
                U __log_finite
                U lseek
                U malloc
                U memcpy
                U memmove
                U memset
000000000001be50 T mpg123_add_string
000000000001bd50 T mpg123_add_substring
000000000001c260 T mpg123_chomp_string
000000000001a0c0 T mpg123_clip
000000000001b4a0 T mpg123_close
000000000001bcf0 T mpg123_copy_string
0000000000014130 T mpg123_current_decoder
0000000000019d50 T mpg123_decode
00000000000199e0 T mpg123_decode_frame
000000000003c680 T mpg123_decode_frame_64
0000000000018d30 T mpg123_decoder
0000000000014160 T mpg123_decoders
000000000001b690 T mpg123_delete
00000000000081e0 T mpg123_delete_pars
000000000001b2c0 T mpg123_enc_from_id3
000000000000abc0 T mpg123_encodings
000000000000abe0 T mpg123_encsize
00000000000192d0 T mpg123_eq
000000000001b720 T mpg123_errcode
0000000000018c70 T mpg123_exit
000000000003c630 T mpg123_feature
0000000000019cf0 T mpg123_feed
000000000001a550 T mpg123_feedseek
000000000003c6f0 T mpg123_feedseek_64
000000000000bad0 T mpg123_fmt
000000000000b870 T mpg123_fmt_all
000000000000b730 T mpg123_fmt_none
000000000000bf00 T mpg123_fmt_support
000000000000bed0 T mpg123_format
000000000000baa0 T mpg123_format_all
000000000000b840 T mpg123_format_none
000000000000c1a0 T mpg123_format_support
00000000000198b0 T mpg123_framebyframe_decode
000000000003c690 T mpg123_framebyframe_decode_64
0000000000019980 T mpg123_framebyframe_next
0000000000008a40 T mpg123_framedata
000000000001aa70 T mpg123_framelength
000000000003c750 T mpg123_framelength_64
0000000000009e00 T mpg123_framepos
000000000003c6a0 T mpg123_framepos_64
000000000001bc10 T mpg123_free_string
0000000000019380 T mpg123_geteq
000000000001a2d0 T mpg123_getformat
0000000000019030 T mpg123_getpar
00000000000191d0 T mpg123_getparam
0000000000019200 T mpg123_getstate
0000000000009d70 T mpg123_getvolume
000000000001bcc0 T mpg123_grow_string
000000000001b260 T mpg123_icy
000000000001b2b0 T mpg123_icy2utf8
000000000001b1b0 T mpg123_id3
000000000001b3f0 T mpg123_index
000000000003c720 T mpg123_index_64
000000000001a0f0 T mpg123_info
0000000000018c30 T mpg123_init
000000000001bbf0 T mpg123_init_string
000000000001ab20 T mpg123_length
000000000003c760 T mpg123_length_64
000000000001b160 T mpg123_meta_check
000000000001b180 T mpg123_meta_free
0000000000018d20 T mpg123_new
00000000000080f0 T mpg123_new_pars
000000000003aad0 T mpg123_noise
000000000001b4f0 T mpg123_open
000000000003c650 T mpg123_open_64
000000000001b530 T mpg123_open_fd
000000000003c660 T mpg123_open_fd_64
000000000001b5d0 T mpg123_open_feed
000000000001b570 T mpg123_open_handle
000000000003c670 T mpg123_open_handle_64
0000000000019880 T mpg123_outblock
0000000000018de0 T mpg123_par
0000000000018f90 T mpg123_param
0000000000018c80 T mpg123_parnew
000000000001b6c0 T mpg123_plain_strerror
0000000000007dc0 T mpg123_position
000000000003c740 T mpg123_position_64
000000000000aba0 T mpg123_rates
000000000001a0a0 T mpg123_read
0000000000008400 T mpg123_replace_buffer
000000000001b600 T mpg123_replace_reader
000000000003c780 T mpg123_replace_reader_64
000000000001b640 T mpg123_replace_reader_handle
000000000003c790 T mpg123_replace_reader_handle_64
0000000000008200 T mpg123_reset_eq
000000000001bc40 T mpg123_resize_string
0000000000019870 T mpg123_safe_buffer
000000000001ac40 T mpg123_scan
000000000001ae40 T mpg123_seek
000000000003c6e0 T mpg123_seek_64
000000000001a840 T mpg123_seek_frame
000000000003c700 T mpg123_seek_frame_64
000000000001aa50 T mpg123_set_filesize
000000000003c770 T mpg123_set_filesize_64
000000000001b440 T mpg123_set_index
000000000003c730 T mpg123_set_index_64
000000000001beb0 T mpg123_set_string
000000000001be90 T mpg123_set_substring
0000000000007d30 T mpg123_spf
000000000001b2e0 T mpg123_store_utf8
000000000001b740 T mpg123_strerror
000000000001bed0 T mpg123_strlen
0000000000014170 T mpg123_supported_decoders
000000000001a3d0 T mpg123_tell
000000000003c6b0 T mpg123_tell_64
000000000001a4e0 T mpg123_tellframe
000000000003c6c0 T mpg123_tellframe_64
000000000001a530 T mpg123_tell_stream
000000000003c6d0 T mpg123_tell_stream_64
000000000001a360 T mpg123_timeframe
000000000003c710 T mpg123_timeframe_64
0000000000007d60 T mpg123_tpf
0000000000009d20 T mpg123_volume
0000000000009d50 T mpg123_volume_change
                U open
                U opendir
                U __pow_finite
                U read
                U readdir
                U realloc
                U select
                U sigaction
                U sigemptyset
                U sin
                U __stack_chk_fail
                U stderr
                U strcasecmp
                U strerror
                U strlen
                U strncasecmp
                U strncmp
                U __strncpy_chk
                U strtod
                U tan
                U write
                U __xstat

OK, I will do it asap.

Fre;D

from uos.

fredvs avatar fredvs commented on July 23, 2024

Huh, not so simple, there are not the same methods in the library 32 bit:
See, here there are *_64 but also *_32 methods.
In the library 64 bit, there are no *_32 methods.

nm -D /home/fred/uos/examples/lib/Linux/32bit/LibMpg123-32.so

gives: ---->

         U cbrt
         U close
         w __cxa_finalize
         U __errno_location
         U fcntl
         U __fprintf_chk
         U free
         U fwrite
         w __gmon_start__
         U __isoc99_sscanf
         w _Jv_RegisterClasses
         U lseek64
         U malloc
         U memcpy
         U memmove
         U memset
00018670 T mpg123_add_string
00018570 T mpg123_add_substring
00015e80 T mpg123_clip
00017860 T mpg123_close
000184e0 T mpg123_copy_string
00011230 T mpg123_current_decoder
00015c90 T mpg123_decode
00041270 T mpg123_decode_frame
000425e0 T mpg123_decode_frame_32
00015af0 T mpg123_decode_frame_64
00014be0 T mpg123_decoder
00011260 T mpg123_decoders
00017b10 T mpg123_delete
00006140 T mpg123_delete_pars
000175b0 T mpg123_enc_from_id3
00009160 T mpg123_encodings
00009190 T mpg123_encsize
00015270 T mpg123_eq
00017bc0 T mpg123_errcode
00014ad0 T mpg123_exit
00040f30 T mpg123_feature
00015bf0 T mpg123_feed
00041590 T mpg123_feedseek
00042760 T mpg123_feedseek_32
00016310 T mpg123_feedseek_64
0000a460 T mpg123_fmt
0000a190 T mpg123_fmt_all
0000a0a0 T mpg123_fmt_none
0000a9f0 T mpg123_fmt_support
0000a980 T mpg123_format
0000a400 T mpg123_format_all
0000a130 T mpg123_format_none
0000abe0 T mpg123_format_support
00041300 T mpg123_framebyframe_decode
00042620 T mpg123_framebyframe_decode_32
000159b0 T mpg123_framebyframe_decode_64
00015a80 T mpg123_framebyframe_next
00006c20 T mpg123_framedata
00041390 T mpg123_framepos
00042660 T mpg123_framepos_32
00008470 T mpg123_framepos_64
000183b0 T mpg123_free_string
00015310 T mpg123_geteq
00015ea0 T mpg123_getformat
00014fa0 T mpg123_getpar
00015150 T mpg123_getparam
000151c0 T mpg123_getstate
000083d0 T mpg123_getvolume
000184a0 T mpg123_grow_string
00017520 T mpg123_icy
00017580 T mpg123_icy2utf8
00017450 T mpg123_id3
00041730 T mpg123_index
00042820 T mpg123_index_32
00017750 T mpg123_index_64
00006a70 T mpg123_info
00014a80 T mpg123_init
00018390 T mpg123_init_string
00041f90 T mpg123_length
00042920 T mpg123_length_32
00016a90 T mpg123_length_64
000173e0 T mpg123_meta_check
00017400 T mpg123_meta_free
00014ba0 T mpg123_new
00006050 T mpg123_new_pars
00040cf0 T mpg123_noise
00042270 T mpg123_open
00042550 T mpg123_open_32
00017ab0 T mpg123_open_64
000423c0 T mpg123_open_fd
00042580 T mpg123_open_fd_32
00017a50 T mpg123_open_fd_64
00017980 T mpg123_open_feed
00042490 T mpg123_open_handle
000425b0 T mpg123_open_handle_32
000179d0 T mpg123_open_handle_64
00015970 T mpg123_outblock
00014cb0 T mpg123_par
00014eb0 T mpg123_param
00014ae0 T mpg123_parnew
00017b60 T mpg123_plain_strerror
00041ea0 T mpg123_position
000428b0 T mpg123_position_32
00005950 T mpg123_position_64
00009130 T mpg123_rates
00015e30 T mpg123_read
00006390 T mpg123_replace_buffer
00042030 T mpg123_replace_reader
00042990 T mpg123_replace_reader_32
00017930 T mpg123_replace_reader_64
00042170 T mpg123_replace_reader_handle
000429d0 T mpg123_replace_reader_handle_32
000178d0 T mpg123_replace_reader_handle_64
00006170 T mpg123_reset_eq
00018400 T mpg123_resize_string
00015960 T mpg123_safe_buffer
00016d80 T mpg123_scan
00041510 T mpg123_seek
00042720 T mpg123_seek_32
00016fe0 T mpg123_seek_64
00041640 T mpg123_seek_frame
000427b0 T mpg123_seek_frame_32
00016840 T mpg123_seek_frame_64
00041ff0 T mpg123_set_filesize
00042950 T mpg123_set_filesize_32
00016a50 T mpg123_set_filesize_64
00041b70 T mpg123_set_index
00042860 T mpg123_set_index_32
000177c0 T mpg123_set_index_64
00018710 T mpg123_set_string
000186c0 T mpg123_set_substring
000058a0 T mpg123_spf
000175e0 T mpg123_store_utf8
00017be0 T mpg123_strerror
00018750 T mpg123_strlen
00011280 T mpg123_supported_decoders
000413f0 T mpg123_tell
00042690 T mpg123_tell_32
00015fd0 T mpg123_tell_64
00041450 T mpg123_tellframe
000426c0 T mpg123_tellframe_32
00016220 T mpg123_tellframe_64
000414b0 T mpg123_tell_stream
000426f0 T mpg123_tell_stream_32
000162c0 T mpg123_tell_stream_64
000416c0 T mpg123_timeframe
000427f0 T mpg123_timeframe_32
00015f30 T mpg123_timeframe_64
000058f0 T mpg123_tpf
00008310 T mpg123_volume
00008380 T mpg123_volume_change
         U open64
         U pow
         U read
         U realloc
         U select
         U __stack_chk_fail
         U stderr
         U strcasecmp
         U __strdup
         U strerror
         U strlen
         U strncasecmp
         U strncmp
         U strncpy
         U strtod

from uos.

TheLazyTomcat avatar TheLazyTomcat commented on July 23, 2024

In 64bit non-windows system, the type off_t is always 64bits wide, therefore there cannot be _32 variants as there is no way of passing 32 wide offset. Remember, I am developing only for windows, so my binaries all have both varians (_32 and _64) - in win64 the off_t is still 32bits wide.

To sum it up...

  • win32 - off_t is 32bits wide, all variants present (*, *_32, *_64)
  • win64 - off_t is 32bits wide, all variants
  • *nix32 - off_t is 32bits wide, all variants
  • *nix64 - off_t is 64bits wide, only non-suffixed and *_64 variants

It is all because of different definition of off_t on different system. Generally, off_t is defined as long...
https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models
https://docs.oracle.com/cd/E19620-01/805-3024/lp64-1/index.html

So either add only _64 bit variants, as they are everywhere, or add _32 into condition blocks for windows only.

from uos.

fredvs avatar fredvs commented on July 23, 2024

Hello.

OK, _32 and _64 methods commited with commit 34ff927..ec72b2c

I hope it is ok.

Fre;D

from uos.

TheLazyTomcat avatar TheLazyTomcat commented on July 23, 2024

There were some mistakes, I've tried to correct them: #28

from uos.

fredvs avatar fredvs commented on July 23, 2024

OK, pull request done!
Many thanks.
I did try some _64 methods with success.
But, on my Linux Debian 64 bit I do not feel any difference using for example mpg123_seek vs mpg123_seek_64, or mpg123_open vs mpg123_open_64

Anyway, it works!

from uos.

TheLazyTomcat avatar TheLazyTomcat commented on July 23, 2024

On 64bit linux, *_64 suffixed functions are probably just wrappers for non-suffixed functions (i have not studied the code in such details).
As it is resolved, let's close this issue. Many thanks for cooperation!

from uos.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.