How to write a wrapper function for open, which takes variable number of arguments?Passing variable number of arguments aroundHow to make a variadic macro (variable number of arguments)How do I reimplement (or wrap) a syscall function on Linux?execve() and environment variablesTrace/wrap open system callHow stdio system call wrapper of open implemented?C `execlp` falls even if the executable file existsRelaying optional arguments in a wrapper for a variadic functiongdb catch syscall condition and string comparissonMaking integer from a pointer without a cast

Restoring order in a deck of playing cards

Why do Russians call their women expensive ("дорогая")?

SQL Server (JOIN) all from first with NULLs from 2nd

What is the difference between nullifying your vote and not going to vote at all?

What is a subpixel in Super Mario Bros, and how does it relate to wall clipping?

How does apt-get work, in detail?

Why did this prime-sequence puzzle not work?

shutdown at specific date

Is floating in space similar to falling under gravity?

Crossword gone overboard

1960s sci-fi novella with a character who is treated as invisible by being ignored

The Passive Wisdom (Perception) score of my character on D&D Beyond seems too high

How is character development a major role in the plot of a story

What is the best linguistic term for describing the kw > p / gw > b change, and its usual companion s > h

Why does the UK have more political parties than the US?

Tic-Tac-Toe for the terminal

How do Russian speakers idiomatically express the idea of "Ce n’est pas donné à tout le monde de ..." in French?

What does the behaviour of water on the skin of an aircraft in flight tell us?

Leading and Suffering Numbers

Were pen cap holes designed to prevent death by suffocation if swallowed?

What does uniform continuity mean exactly?

Could I be denied entry into Ireland due to medical and police situations during a previous UK visit?

Can non-English-speaking characters use wordplay specific to English?

Is it ok for women to use creatine supplement?



How to write a wrapper function for open, which takes variable number of arguments?


Passing variable number of arguments aroundHow to make a variadic macro (variable number of arguments)How do I reimplement (or wrap) a syscall function on Linux?execve() and environment variablesTrace/wrap open system callHow stdio system call wrapper of open implemented?C `execlp` falls even if the executable file existsRelaying optional arguments in a wrapper for a variadic functiongdb catch syscall condition and string comparissonMaking integer from a pointer without a cast






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















I want to implement a wrapper over the open system call, and I'm using the LD_PRELOAD trick to call my new open.



The problem is that open expects a variable number of arguments, and I cannot figure out how to call open with the same set of arguments, as open cannot take a va_list pointer as an argument(or I do not know of any such function).



How could I achieve this?



code so far:



#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

typedef int (*open_func_t)(const char*, int, ...)

int open(const char *pathname, int flags, ...)
// some custom code

// what args should I supply to dlsym?
return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);










share|improve this question






















  • Then why not make your open wrapper accept va_list*?

    – JiaHao Xu
    Mar 24 at 8:53











  • What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

    – Tanmay Sachan
    Mar 24 at 9:13






  • 1





    Process flags like open() and then call your function with 2 or 3 parameters. open

    – chux
    Mar 24 at 9:17












  • Yes, that's probably what I'll end up doing if nothing else works.

    – Tanmay Sachan
    Mar 24 at 9:22











  • @Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

    – JiaHao Xu
    Mar 24 at 9:35

















0















I want to implement a wrapper over the open system call, and I'm using the LD_PRELOAD trick to call my new open.



The problem is that open expects a variable number of arguments, and I cannot figure out how to call open with the same set of arguments, as open cannot take a va_list pointer as an argument(or I do not know of any such function).



How could I achieve this?



code so far:



#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

typedef int (*open_func_t)(const char*, int, ...)

int open(const char *pathname, int flags, ...)
// some custom code

// what args should I supply to dlsym?
return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);










share|improve this question






















  • Then why not make your open wrapper accept va_list*?

    – JiaHao Xu
    Mar 24 at 8:53











  • What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

    – Tanmay Sachan
    Mar 24 at 9:13






  • 1





    Process flags like open() and then call your function with 2 or 3 parameters. open

    – chux
    Mar 24 at 9:17












  • Yes, that's probably what I'll end up doing if nothing else works.

    – Tanmay Sachan
    Mar 24 at 9:22











  • @Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

    – JiaHao Xu
    Mar 24 at 9:35













0












0








0








I want to implement a wrapper over the open system call, and I'm using the LD_PRELOAD trick to call my new open.



The problem is that open expects a variable number of arguments, and I cannot figure out how to call open with the same set of arguments, as open cannot take a va_list pointer as an argument(or I do not know of any such function).



How could I achieve this?



code so far:



#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

typedef int (*open_func_t)(const char*, int, ...)

int open(const char *pathname, int flags, ...)
// some custom code

// what args should I supply to dlsym?
return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);










share|improve this question














I want to implement a wrapper over the open system call, and I'm using the LD_PRELOAD trick to call my new open.



The problem is that open expects a variable number of arguments, and I cannot figure out how to call open with the same set of arguments, as open cannot take a va_list pointer as an argument(or I do not know of any such function).



How could I achieve this?



code so far:



#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

typedef int (*open_func_t)(const char*, int, ...)

int open(const char *pathname, int flags, ...)
// some custom code

// what args should I supply to dlsym?
return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);







c system-calls variadic






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 24 at 8:41









Tanmay SachanTanmay Sachan

714




714












  • Then why not make your open wrapper accept va_list*?

    – JiaHao Xu
    Mar 24 at 8:53











  • What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

    – Tanmay Sachan
    Mar 24 at 9:13






  • 1





    Process flags like open() and then call your function with 2 or 3 parameters. open

    – chux
    Mar 24 at 9:17












  • Yes, that's probably what I'll end up doing if nothing else works.

    – Tanmay Sachan
    Mar 24 at 9:22











  • @Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

    – JiaHao Xu
    Mar 24 at 9:35

















  • Then why not make your open wrapper accept va_list*?

    – JiaHao Xu
    Mar 24 at 8:53











  • What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

    – Tanmay Sachan
    Mar 24 at 9:13






  • 1





    Process flags like open() and then call your function with 2 or 3 parameters. open

    – chux
    Mar 24 at 9:17












  • Yes, that's probably what I'll end up doing if nothing else works.

    – Tanmay Sachan
    Mar 24 at 9:22











  • @Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

    – JiaHao Xu
    Mar 24 at 9:35
















Then why not make your open wrapper accept va_list*?

– JiaHao Xu
Mar 24 at 8:53





Then why not make your open wrapper accept va_list*?

– JiaHao Xu
Mar 24 at 8:53













What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

– Tanmay Sachan
Mar 24 at 9:13





What exactly do you mean by that? Shouldn't my wrapper expect the exact same args as the call itself?

– Tanmay Sachan
Mar 24 at 9:13




1




1





Process flags like open() and then call your function with 2 or 3 parameters. open

– chux
Mar 24 at 9:17






Process flags like open() and then call your function with 2 or 3 parameters. open

– chux
Mar 24 at 9:17














Yes, that's probably what I'll end up doing if nothing else works.

– Tanmay Sachan
Mar 24 at 9:22





Yes, that's probably what I'll end up doing if nothing else works.

– Tanmay Sachan
Mar 24 at 9:22













@Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

– JiaHao Xu
Mar 24 at 9:35





@Tanmay Sachan The code you show here that use dlsym, does jt call syscall open or your wrapper? I am confused

– JiaHao Xu
Mar 24 at 9:35












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55322007%2fhow-to-write-a-wrapper-function-for-open-which-takes-variable-number-of-argumen%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55322007%2fhow-to-write-a-wrapper-function-for-open-which-takes-variable-number-of-argumen%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현