Add setisodate utility.
This utility is capable of setting the system clock, taking its argument in ISO8601 format.
This commit is contained in:
		
							parent
							
								
									64c5ce0d65
								
							
						
					
					
						commit
						21adf7acf0
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
app c setisodate sbin
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
/* libiso8601/src/setisodate/000_TopSource.c
 | 
			
		||||
 *
 | 
			
		||||
 *  (c)2007, Laurence Withers, <l@lwithers.me.uk>.
 | 
			
		||||
 *  Released under the GNU GPLv2. See file COPYING or
 | 
			
		||||
 *  http://www.gnu.org/copyleft/gpl.html for details.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* Below are all the includes used throughout the application. */
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include "iso8601.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(int argc, char* argv[])
 | 
			
		||||
{
 | 
			
		||||
    struct iso8601_date d;
 | 
			
		||||
    char str[100];
 | 
			
		||||
 | 
			
		||||
    if(argc != 2) {
 | 
			
		||||
        fputs("Expecting one argument: date/time (in ISO8601 format) to set.\n", stderr);
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(iso8601_parse(argv[1], &d, 0, 0)) {
 | 
			
		||||
        fputs("Cannot parse date.\n", stderr);
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    printf("Setting date to %s.\n",
 | 
			
		||||
        iso8601_print(str, sizeof(str), &d, 0));
 | 
			
		||||
 | 
			
		||||
    if(iso8601_set_sysclock(&d)) {
 | 
			
		||||
        perror("iso8601_set_sysclock");
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* options for text editors
 | 
			
		||||
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
 | 
			
		||||
vim: expandtab:ts=4:sw=4
 | 
			
		||||
*/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
# These are external variables, and shouldn't clash with anything else
 | 
			
		||||
#  setisodate
 | 
			
		||||
#  setisodate_BUILT
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
build_target libiso8601
 | 
			
		||||
 | 
			
		||||
if [ -z ${setisodate_BUILT} ]
 | 
			
		||||
then
 | 
			
		||||
    setisodate="obj/setisodate"
 | 
			
		||||
    EXTRAS="${libiso8601} ${libiso8601_DEP_CFLAGS} ${libiso8601_DEP_LIBS}"
 | 
			
		||||
 | 
			
		||||
    echo "Building application ${setisodate}..."
 | 
			
		||||
 | 
			
		||||
    do_cmd source src/setisodate/build.monolithic || return 1
 | 
			
		||||
 | 
			
		||||
    MODIFIED=0
 | 
			
		||||
    for test in ${MONOLITHIC_TESTS} ${SRC}
 | 
			
		||||
    do
 | 
			
		||||
        if [ ${test} -nt ${setisodate} ]
 | 
			
		||||
        then
 | 
			
		||||
            MODIFIED=1
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    if [ ${MODIFIED} -ne 0 ]
 | 
			
		||||
    then
 | 
			
		||||
        echo " Compiling..."
 | 
			
		||||
 | 
			
		||||
        do_cmd ${CC} ${CFLAGS} -I obj -o "${setisodate}" ${SRC} ${EXTRAS} || return 1
 | 
			
		||||
 | 
			
		||||
        print_success "Application built"
 | 
			
		||||
    else
 | 
			
		||||
        print_success "Application up to date"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    setisodate_BUILT=1
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# kate: replace-trailing-space-save true; space-indent true; tab-width 4;
 | 
			
		||||
# vim: syntax=sh:expandtab:ts=4:sw=4
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
source src/setisodate/build.app
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
source src/setisodate/build.install-app
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
build_target setisodate
 | 
			
		||||
 | 
			
		||||
# make paths (this is for Gentoo in particular)
 | 
			
		||||
build_dir_tree "${SBINDIR}" || return 1
 | 
			
		||||
 | 
			
		||||
# install binary
 | 
			
		||||
echo "Installing binaries into '${SBINDIR}'"
 | 
			
		||||
install_file "${setisodate}" "${SBINDIR}" 0755 || return 1
 | 
			
		||||
print_success "Done"
 | 
			
		||||
 | 
			
		||||
# kate: replace-trailing-space-save true; space-indent true; tab-width 4;
 | 
			
		||||
# vim: syntax=sh:expandtab:ts=4:sw=4
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
# These are external variables, and shouldn't clash with anything else
 | 
			
		||||
#  setisodate_MONOLITHIC
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
SRC="obj/setisodate.c"
 | 
			
		||||
MONOLITHIC_TESTS="src/setisodate/build.app src/setisodate/build.monolithic"
 | 
			
		||||
 | 
			
		||||
if [ -z "${setisodate_MONOLITHIC}" ]
 | 
			
		||||
then
 | 
			
		||||
    MONOLITHIC_SOURCE="$(echo src/setisodate/*.c)"
 | 
			
		||||
    make_monolithic ${SRC} C || return 1
 | 
			
		||||
 | 
			
		||||
    setisodate_MONOLITHIC=1
 | 
			
		||||
    MONOLITHIC_DOC="${MONOLITHIC_DOC} ${SRC}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# kate: replace-trailing-space-save true; space-indent true; tab-width 4;
 | 
			
		||||
# vim: syntax=sh:expandtab:ts=4:sw=4
 | 
			
		||||
		Loading…
	
		Reference in New Issue