Giter VIP home page Giter VIP logo

nickelhook's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

nickelhook's Issues

Improved failsafe API

The failsafe works perfectly fine right now, but there's room for improvement. It would also be nice to be able to use the failsafe at times other than just startup.

I'm thinking of having an API like:

  • nh_failsafe_t *nh_failsafe_create(const char *fn, const char *fn_temp) - creates a new failsafe for the specified file
  • nh_failsafe_t *nh_failsafe_global() - returns or creates the global instance
  • nh_failsafe_claim_t nh_failsafe_claim(nh_failsafe_t*, int timeout) - creates a claim with an optional timeout, activates the failsafe if it isn't active, and extends the it to remain active while the claim exists
  • void nh_failsafe_release(nh_failsafe_t*, nh_failsafe_claim_t, int delay) - releases a claim after an optional delay
  • void nh_failsafe_trigger(nh_failsafe_t*) - triggers the failsafe (works even when there aren't any claims)
  • void nh_failsafe_uninstall(nh_failsafe_t*) - deletes the temporary file
  • NH_FAILSAFE(failsafe, timeout, delay) - macro to create a claim and use the GCC cleanup attribute to release it when it goes out of scope

Versions/upgrades

I noticed your little note regarding a versioning mechanism. Is it too early to discuss this? ๐Ÿ˜€

One option is to do something similar to what I prototyped in NDB. Another potential option might be some sort of external version file(s).

Ideally, a mod should be able to be included in a KoboRoot.tgz without fear of clobbering a newer version that is already installed.

Having trouble setting up.

Hi,

I have been struggling with this for a few days now - and I'm sure it's something trivial I am doing wrong, but I am frustrated.

I am having difficulties setting things up. I can correctly combine, and I can correctly edit the preload to get the library to load.

When I do I get the following error:

fatal: dlopen libnickel: libQtSolutions_IOCompressor-2.3.so.1: cannot open shared object file: No such file or directory

I can get past this by opening the files it throws for before the lib nickel is opened.

dlopen("/usr/local/Kobo/libQtSolutions_IOCompressor-2.3.so.1", RTLD_LAZY|RTLD_NODELETE);
dlopen("/usr/local/Kobo/libsunpinyin.so.3", RTLD_LAZY|RTLD_NODELETE);
dlopen("/usr/local/Kobo/librmsdk.so.1", RTLD_LAZY|RTLD_NODELETE);

It seems to then load, it informs me that the symbol has been replaced.

However, it seems to just keep loading itself over and over.

All I am currently doing is printing, and then returning the original implementation. Absolutely nothing is printed. I originally thought this might be a null or something similar, but I'd expect it to log before this happens.

https://gist.github.com/Podginator/8bb19abf009673abc8eb1cf9f19afe05

I am probably doing something wrong, but I have had similar issues trying to load the examples in kobo_mods, and NickelClock.

Any help is greatly appreciated.

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.