Monthly Archives: October 2016

Shotwell moving along

I have released 0.25.0 on Monday.

Contrast Tool

contrast-toolA new feature that was included is a contrast slider in the enhancement tool, moving on with integrating patches hanging around on Bugzilla for quite some time.

SSL certificate handlingcertificate-warning

A second enhancement that was introduced is the option to override invalid SSL certificates. This is currenly only available in the Piwigo publisher and might be added to Gallery3 in future, i.e. all services that might be self-hosted on self-signed cerfificates.

 

Enhanced ACDSEE support

0.25 introduces the support of reading ACDSEE’s proprietary image tags such as titles, categories and hierarchical tags!
If you want to try it, there’s a new, unstable, PPA for Shotwell at https://launchpad.net/~yg-jensge/+archive/ubuntu/shotwell-unstable
 

Quiztime!

Say you have a shared library with versioned symbols that has the function init(int *param) defined in two versions, where new_init is made the default for init (that’s what the  @@ means):

#include "shared1.h"
void new_init (int *param)
{
    *param = 0;
}
void old_init (int *param)
{
    *param = -1;
}
__asm__(".symver new_init,init@@VERS_2");
__asm__(".symver old_init,init@VERS_1");

Say you have a second shared library that provides a function do_something() uses that init from the first shared library:

#include "shared1.h"
int do_something ()
{
    int var;
    init (&var);
    return var;
}

And you have an app that just prints the result:

#include "shared2.h"
#include 
int main(int argc, char *argv[])
{
    printf ("Result: %d\n", do_something ());
    return 0;
}

And all of this is cobbled together with the following Makefile:

all: app
libshared.so: shared1.c shared1.h
    cc -o $@ $< -shared -fPIC -Wl,--version-script=version.script
libmoreshared.so: libshared.so shared2.c
    cc -o $@ shared2.c -shared -fPIC
app: libmoreshared.so app.c
    cc -o $@ -L. app.c -lmoreshared -lshared

What's the output of

LD_LIBRARY_PATH=. ./app

Update: Try to answer it without compiling and running it at first.
Update2: I forgot the version.script, sorry.

VERS_1 {
    local:
        old_init;
};
VERS_2 {
    local:
        new_init;
} VERS_1;