Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ext/fileinfo: softmagic.c has error: expected identifier #10074

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

midoks
Copy link

@midoks midoks commented Dec 9, 2022

CentOS Linux 7.9.2009 (Core) 
To prevent build failures like:
/www/server/source/php/php82/ext/fileinfo/libmagic/softmagic.c:507:7: error: expected identifier or ‘(’ before ‘extension
char *strndup(const char *, size_t);
^
/www/server/source/php/php82/ext/fileinfo/libmagic/softmagic.c:510:1: error: expected identifier or ‘(’ before ‘extension
strndup(const char *str, size_t n)
^
make: *** [libmagic/softmagic.lo] Error 1
make: *** [libmagic/softmagic.lo] Error 1

i fix it.

@@ -512,6 +512,7 @@ check_fmt(struct magic_set *ms, const char *fmt)
# if defined(__aiws__) || defined(_AIX)
# define strndup aix_strndup /* aix is broken */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no point in defining this just to unset it later. I assume the implementation of strndup should've been in the #else block.

Copy link
Member

@devnexen devnexen Dec 9, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ve tried on my old centos 7 instance (which genuinely is old enough for not having its glibc with strndup) and the build passes without error tough. So you re right @iluuu1994 here anyway, it should be in a else block but even simpler I think the whole can be removed, estrndup is used instead anyway it seems what do you think ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, it's not even used. In that case removing it is definitely preferable.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just want to fix the compilation problem and make it pass. You have found the root problem. I tried removing the whole definition. Passed perfectly. Therefore, follow-up to your official handling of this issue.

Copy link
Member

@devnexen devnexen Dec 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the case @midoks still want to pursue this PR, just realised this fileinfo extension relies on patch appliance. In that case, it needs to port changes in here as well.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might even be better to provide the patch upstream; we could then update to the new libmagic version.

@Girgias
Copy link
Member

Girgias commented Dec 12, 2022

Submitted upstream as: https://bugs.astron.com/view.php?id=409

@Girgias
Copy link
Member

Girgias commented Jan 2, 2023

@midoks could you provide the preprocessor output cc -E of those lines? As this is what they seem to need upstream to investigate the report.

@midoks
Copy link
Author

midoks commented Jan 4, 2023

@Girgias
I tried to execute:

  • gcc -E ext/fileinfo/libmagic/softmagic.c
[root@VM-EtsmUAZgUPAH php82]# gcc -E ext/fileinfo/libmagic/softmagic.c
# 1 "ext/fileinfo/libmagic/softmagic.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "ext/fileinfo/libmagic/softmagic.c"
# 32 "ext/fileinfo/libmagic/softmagic.c"
# 1 "ext/fileinfo/libmagic/file.h" 1
# 36 "ext/fileinfo/libmagic/file.h"
# 1 "ext/fileinfo/libmagic/config.h" 1
In file included from ext/fileinfo/libmagic/file.h:36:0,
                 from ext/fileinfo/libmagic/softmagic.c:32:
ext/fileinfo/libmagic/config.h:1:17: fatal error: php.h: No such file or directory
 #include "php.h"
                 ^
compilation terminated.
  • Compile time error
libmagic/softmagic.dep -MT libmagic/softmagic.lo  -fPIC -DPIC -o libmagic/.libs/softmagic.o
In file included from /usr/include/string.h:633:0,
                 from /www/server/php/82/include/php/main/../main/php_config.h:2207,
                 from /www/server/php/82/include/php/Zend/zend_config.h:1,
                 from /www/server/php/82/include/php/Zend/zend_portability.h:43,
                 from /www/server/php/82/include/php/Zend/zend_types.h:25,
                 from /www/server/php/82/include/php/Zend/zend.h:27,
                 from /www/server/php/82/include/php/main/php.h:31,
                 from /www/server/source/php/php82/ext/fileinfo/libmagic/config.h:1,
                 from /www/server/source/php/php82/ext/fileinfo/libmagic/file.h:36,
                 from /www/server/source/php/php82/ext/fileinfo/libmagic/softmagic.c:32:
/www/server/source/php/php82/ext/fileinfo/libmagic/softmagic.c:507:7: error: expected identifier or ‘(’ before ‘__extension__’
 char *strndup(const char *, size_t);
       ^
/www/server/source/php/php82/ext/fileinfo/libmagic/softmagic.c:510:1: error: expected identifier or ‘(’ before ‘__extension__’
 strndup(const char *str, size_t n)
 ^
make: *** [libmagic/softmagic.lo] Error 1

I don't know if this is the information you want?

@Girgias
Copy link
Member

Girgias commented Jan 8, 2023

Thank you, hopefully this is indeed the wanted information and I have relayed it upstream.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants