# sd_journal_get_cursor

## NAME



           sd_journal_get_cursor, sd_journal_test_cursor - Get cursor string
           for or test cursor string against the current journal entry
    


## SYNOPSIS



           **#include <systemd/sd-journal.h>**
    
           **int sd_journal_get_cursor(sd_journal ***_j_**, char ****_ret_cursor_**);**
    
           **int sd_journal_test_cursor(sd_journal ***_j_**, const char ***_cursor_**);**
    


## DESCRIPTION



           **sd_journal_get_cursor()** returns a cursor string for the current
           journal entry. A cursor is a serialization of the current journal
           position formatted as text. The string only contains printable
           characters and can be passed around in text form. The cursor
           identifies a journal entry globally and in a stable way and may be
           used to later seek to it via sd_journal_seek_cursor(3). The cursor
           string should be considered opaque and not be parsed by clients.
           Seeking to a cursor position without the specific entry being
           available locally will seek to the next closest (in terms of time)
           available entry. The call takes two arguments: a journal context
           object and a pointer to a string pointer where the cursor string
           will be placed. The string is allocated via libc malloc(3) and
           should be freed after use with free(3). The _ret_cursor_ parameter
           may be passed as **NULL** in which case the cursor string is not
           generated, however the return value will indicate whether the
           journal context is currently positioned on an entry, and thus has
           a cursor associated.
    
           **sd_journal_test_cursor()** may be used to check whether the current
           position in the journal matches the specified cursor. This is
           useful since cursor strings do not uniquely identify an entry: the
           same entry might be referred to by multiple different cursor
           strings, and hence string comparing cursors is not possible. Use
           this call to verify after an invocation of
           sd_journal_seek_cursor(3), whether the entry being sought to was
           actually found in the journal or the next closest entry was used
           instead.
    
           Note that **sd_journal_get_cursor()** and **sd_journal_test_cursor()**
           will not work before sd_journal_next(3) (or one of the other
           functions which move to an entry) has been called at least once to
           position the read pointer at a valid entry.
    


## RETURN VALUE



           **sd_journal_get_cursor()** returns 0 on success or a negative
           errno-style error code.  **sd_journal_test_cursor()** returns positive
           if the current entry matches the specified cursor, 0 if it does
           not match the specified cursor or a negative errno-style error
           code on failure.
    
       **Errors**
           Returned errors may indicate the following problems:
    
           **-EADDRNOTAVAIL**
               The journal context is currently not positioned on any entry,
               and hence no cursor string can be generated.
    
           **-EINVAL**
               The journal context parameter is **NULL**.
    
           **-ECHILD**
               The journal context object has been allocated in a different
               process than it is being used in now.
    


## NOTES



           All functions listed here are thread-agnostic and only a single
           specific thread may operate on a given object during its entire
           lifetime. It is safe to allocate multiple independent objects and
           use each from a specific thread in parallel. However, it is not
           safe to allocate such an object in one thread, and operate or free
           it from any other, even if locking is used to ensure these threads
           do not operate on it at the very same time.
    
           Functions described here are available as a shared library, which
           can be compiled against and linked to with the
           **libsystemd pkg-config**(1) file.
    


* * *