Esempio n. 1
0
int prerun(GList **config)
{
	// fix gtk graphical bug : forward button is clicked in
	set_page_completed();
	set_page_incompleted();
	long long *compsize = (long long*)data_get(*config,"compsizepkg");
	if(compsize != NULL)
		compressedsize = *compsize;

	makepath(TARGETDIR "/dev");
	fw_system("mount /dev -o bind " TARGETDIR "/dev");

	if(data_get(*config, "srcdev") != NULL) {
		if(install_pkgs_discs((GList*)data_get(*config, "packages"), (char*)data_get(*config, "srcdev")) == -1) {
			fwife_error(_("An error occurs during packages installation (see /var/log/fwife.log for more details)"));
			return -1;
		}
	} else {
		if(install_pkgs((GList*)data_get(*config, "packages")) == -1) {
			fwife_error(_("An error occurs during packages installation (see /var/log/fwife.log for more details)"));
			return -1;
		}
	}

	gtk_label_set_label(GTK_LABEL(labelpkg), _("Packages installation completed"));
	set_page_completed();
	return 0;
}
Esempio n. 2
0
void servo_update(void){
    if(data_get(SERVO_DONE)){
        int angle = T3_VALUE * 0.06 +
                (data_get(SERVO_ANGLE) * T3_VALUE *(0.24-0.06) / 90 );
        SetPulseOC1(0, angle);
        data_set(SERVO_DONE, 0);
    }
    
}   
Esempio n. 3
0
static ssize_t data_triplet_format_t_lookup(data_t *data, fastcall_crud *fargs) { // {{{
    ssize_t                ret;
    uintmax_t              offset;
    data_t                 converted;
    data_t                 d_key;
    data_t                *d_key_ptr         = &d_key;
    data_t                 storage_item;
    triplet_format_t      *fdata             = (triplet_format_t *)data->ptr;

    // fetch value from storage
    data_t          sl_key    = DATA_SLICET(fargs->key, 1, ~0);
    fastcall_lookup r_lookup = {
        { 4, ACTION_LOOKUP },
        &sl_key,
        &storage_item
    };
    if( (ret = data_query(&fdata->storage, &r_lookup)) < 0)
        return ret;

    // get offset for this data
    if(helper_key_current(fargs->key, &d_key) < 0) {
        d_key_ptr = fargs->key;
        data_get(ret, TYPE_UINTT, offset, d_key_ptr);
    } else {
        data_get(ret, TYPE_UINTT, offset, d_key_ptr);
        data_free(&d_key);
    }

    if(ret < 0)
        return ret;

    data_t                sl_value  = DATA_SLICET(&storage_item, offset, ~0);
    fastcall_unpack       r_unpack  = {
        { 4, ACTION_UNPACK },
        offset == 0 ?
        &storage_item :
        &sl_value,
        &converted,
        FORMAT(packed)
    };
    if( (ret = data_query(&fdata->slave, &r_unpack)) < 0)
        goto exit;

    *fargs->value = converted;
exit:
    data_free(&storage_item);
    return ret;
} // }}}
Esempio n. 4
0
int main(void)
{
    sleep(5);
    init_PWM();
    FILE *fd;
    char *data;

    while(1)
    {
	data = malloc(50);
	fd = fopen("/dev/shm/setariweb", "r");
	if(fd < 0)
	{
	    perror("Settings file open error");
	    exit(1);
	}
	fread(data, 1, 50, fd);
	data_get(data);
	if(activ)
	{
	    release_door();
	    sleep(5); //at least 5 seconds between feedings
	}
	else
	{
	    usleep(100000); //sleep to avoid massive cpu usage
	}
	fclose(fd);
	free(data);
    }
    return 0;
}
Esempio n. 5
0
File: api.c Progetto: samuell/frozen
ssize_t     action_write_to_fast(void *userdata, request_t *request, f_hash_to_fast callback){ // {{{
	ssize_t                ret;
	data_t                *r_buffer;
	data_t                *r_size;
	uintmax_t              offset            = 0;
	uintmax_t              size              = ~0;
	
	hash_data_get(ret, TYPE_UINTT, offset, request, HK(offset));
	
	if( (r_size   = hash_data_find(request, HK(size))) != NULL){
		data_get(ret, TYPE_UINTT, size, r_size);
	}
	
	if( (r_buffer = hash_data_find(request, HK(buffer))) == NULL)
		return -EINVAL;
	
	data_t                 d_slice    = DATA_SLICET(userdata, offset, size); // FIXME
	fastcall_convert_to    r_convert = { { 5, ACTION_CONVERT_TO }, &d_slice, FORMAT(native) };
	
	ret = data_query(r_buffer, &r_convert);
	
	fastcall_write         r_write           = { { 5, ACTION_WRITE }, 0, &r_convert.transfered, sizeof(r_convert.transfered) };
	if(r_size)
		data_query(r_size, &r_write);
	
	return ret;
} // }}}
Esempio n. 6
0
static ssize_t data_length_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	length_t              *fdata;
	
	if(dst->ptr != NULL)
		return -EINVAL;
	
	switch(fargs->format){
		case FORMAT(hash):;
			hash_t                *config;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return ret;
			
			if( (fdata = malloc(sizeof(length_t))) == NULL)
				return -ENOMEM;
			
			hash_holder_consume(ret, fdata->data, config, HK(data));
			if(ret != 0){
				free(fdata);
				return -EINVAL;
			}
			
			fdata->format = FORMAT(clean);
			hash_data_get(ret, TYPE_FORMATT, fdata->format, config, HK(format));
			
			dst->ptr = fdata;
			return 0;
			
		default:
			break;
	}
	return -ENOSYS;
} // }}}
Esempio n. 7
0
static ssize_t data_file_t_convert_from(data_t *data, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	
	if(fargs->src == NULL)
		return -EINVAL; 
		
	switch(fargs->format){
		case FORMAT(config):;
		case FORMAT(human):;
		case FORMAT(native):;
			request_t r_config[] = {
				{ HK(filename), *fargs->src },
				hash_end
			};
			return file_new((file_t **)&data->ptr, r_config);

		case FORMAT(hash):;
			hash_t            *config;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			return file_new((file_t **)&data->ptr, config);
			
		default:
			break;
	};
	return -ENOSYS;
} // }}}
Esempio n. 8
0
int run(GList **config)
{
	char *fn, *name, *from;
	gboolean toggled;
	GList *newmirrorlist = NULL;

	if(data_get(*config, "srcdev") != NULL)
		return 0;

	GtkTreeIter iter;
	GtkTreeView *treeview = (GtkTreeView *)viewserver;
  	GtkTreeModel *model = gtk_tree_view_get_model (treeview);

	fn = g_strdup_printf("%s/%s", PACCONFPATH, PACCONF);

	if(gtk_tree_model_get_iter_first (model, &iter) == FALSE) {
		return(0);
	} else {
		do {
			gtk_tree_model_get (model, &iter, COLUMN_USE, &toggled, COLUMN_NAME, &name, COLUMN_FROM, &from, -1);
			if(toggled == TRUE) {
				newmirrorlist = g_list_prepend(newmirrorlist, strdup(from));
				newmirrorlist = g_list_prepend(newmirrorlist, strdup(name));
			} else {
				newmirrorlist = g_list_append(newmirrorlist, strdup(name));
				newmirrorlist = g_list_append(newmirrorlist, strdup(from));
			}
		} while(gtk_tree_model_iter_next(model, &iter));
	}

	updateconfig(fn, newmirrorlist);
	free(fn);
	return(0);
}
Esempio n. 9
0
QByteArray VkGet::GET(QUrl r)   //Сетевое взаимодействие с сервером ВКонтакте
{

    try
    {
        QNetworkAccessManager* manager = new QNetworkAccessManager(this);
        connect(manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
                this, SLOT(SSLerror(QNetworkReply*,QList<QSslError>)));
        QNetworkReply* reply;
        reply = manager->get(QNetworkRequest(r));
        QEventLoop wait;
        connect(manager, SIGNAL(finished(QNetworkReply*)), &wait, SLOT(quit()));
        QTimer::singleShot(20000, &wait, SLOT(quit()));
        connect(manager, SIGNAL(finished(QNetworkReply*)), manager, SLOT(deleteLater()));
        wait.exec();

        QByteArray answer = " ";
        if(!reply->error())
            answer = reply->readAll();
        reply->deleteLater();

        emit data_get(answer);
        return answer;
    }
    catch(QException)
    {
        return "";
    }
}
Esempio n. 10
0
static ssize_t data_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct gpio_sw_classdev *gpio_sw_cdev = dev_get_drvdata(dev);
	gpio_sw_cdev->data = data_get(gpio_sw_cdev);
	
	return sprintf(buf, "%u\n", gpio_sw_cdev->data);
}
Esempio n. 11
0
data_t * _any_getattr(data_t *self, char _unused_ *func_name, arguments_t *args) {
  data_t  *attrname = arguments_get_arg(args, 0);
  name_t  *name = name_create(1, data_tostring(attrname));
  data_t  *ret;

  ret = data_get(self, name);
  name_free(name);
  return ret;
}
Esempio n. 12
0
int prerun(GList **config)
{
	struct stat buf;
	char *ptr;

	//* disable x configuration if no x server detected *//
	ptr = g_strdup_printf("%s/usr/bin/X", TARGETDIR);
	if(!stat(ptr, &buf))
	{
		gtk_widget_set_sensitive(pHBoxFrameX, TRUE);
		xlayout = (char*)data_get(*config, "xlayout");
		xvariant = (char*)data_get(*config, "xvariant");
	}

	// configure kernel modules	
	ptr = g_strdup_printf("chroot %s /sbin/depmod -a", TARGETDIR);
	fw_system(ptr);
	FREE(ptr);	

	return 0;
}
Esempio n. 13
0
static ssize_t data_emitter_t_handler (data_t *data, fastcall_header *hargs) { // {{{
    ssize_t                   ret            = 0;
    emitter_t                *fdata          = (emitter_t *)data->ptr;

    switch(hargs->action) {
    case ACTION_CONVERT_FROM:
        ;
        hash_t                   *parameters;
        fastcall_convert_from    *fargs            = (fastcall_convert_from *)hargs;

        data_get(ret, TYPE_HASHT, parameters, fargs->src);
        if(ret != 0)
            return -EINVAL;

        if(fdata == NULL) {
            if( (data->ptr = fdata = calloc(1, sizeof(emitter_t))) == NULL)
                return -ENOMEM;

            fdata->allocated = 1;
        }

        hash_data_consume(ret, TYPE_MACHINET, fdata->machine, parameters, HK(machine));
        hash_data_consume(ret, TYPE_HASHT,    fdata->request, parameters, HK(request));

        if(fdata->machine != NULL && fdata->request != NULL)
            break;

        fdata->request = NULL;
        ret = -EFAULT;
    // fall
    case ACTION_FREE:
        if(fdata == NULL)
            return -EFAULT;

        shop_destroy(fdata->machine);
        hash_free(fdata->request);
        if(fdata->allocated)
            free(data->ptr);

        data->ptr = NULL;
        break;

    default:
        if(fdata == NULL)
            return -EFAULT;

        return machine_query(fdata->machine, fdata->request);
    }
    return ret;
} // }}}
Esempio n. 14
0
static ssize_t data_machine_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	char                   buffer[DEF_BUFFER_SIZE];
	
	if(fargs->src == NULL)
		return -EINVAL;
	
	switch(fargs->format){
		case FORMAT(native):;
			if(fargs->src->type != TYPE_MACHINET)
				return -EFAULT;
			dst->ptr = fargs->src->ptr;
			machine_acquire(dst->ptr);
			return 0;

		case FORMAT(hash):;
			hash_t                *config;
			hash_t                *pipelines;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			if( (ret = pipelines_new(&pipelines, config)) < 0)
				return ret;
			
			*dst = pipelines[0].data;
			data_set_void(&pipelines[0].data);
			hash_free(pipelines);
			goto check;
		
		case FORMAT(config):;
		case FORMAT(human):;      // TODO data_convert call with FORMAT(native) :(
		default:;
			fastcall_read r_read = { { 5, ACTION_READ }, 0, &buffer, sizeof(buffer) - 1 };
			if(data_query(fargs->src, &r_read) != 0)
				return -EFAULT;
			
			buffer[r_read.buffer_size] = '\0';
			
			dst->ptr = machine_find(buffer);
			goto check;
	}

check:
	if(dst->ptr != NULL)
		return 0;
	
	return -EFAULT;
} // }}}
Esempio n. 15
0
int main(void) {
	int i;
	_config = config_create(FILE_CONFIG);
	_log = log_create(FILE_LOG, "Nodo", false, LOG_LEVEL_INFO);

	_data = data_get(config_get_string_value(_config, CONFIG_ARCHIVO_BIN));
	bloques_set();
	////////////////////////

	pthread_t p_fs;
	if (pthread_create(&p_fs, NULL, (void*) fs_conectar, NULL) != 0) {
		perror("pthread_create");
		exit(1);
	}

	pthread_join(p_fs, (void**) NULL);

	/*
	 void* saludo = malloc(BLOQUE_SIZE);
	 strcpy(saludo, "ahora cambio el mensaje!");
	 setBloque(0, saludo);

	 void* dataget = getBloque(0);
	 char* saludoget =(char*) malloc(strlen(saludo)+1);
	 memcpy(saludoget, dataget, strlen(saludo)+1);
	 printf("%s\n", saludoget);

	 free_null(saludo);
	 free_null(saludoget);
	 free_null(dataget);
	 */

	/*
	 char *d = NULL;
	 d = getFileContent("hola");

	 for(i=0;i<10;i++)
	 printf("%c", d[i]);

	 file_mmap_free(d, "hola");
	 */

	data_destroy();
	config_destroy(_config);

	printf("fin ok");
	//while (true);
	return EXIT_SUCCESS;
}
Esempio n. 16
0
File: api.c Progetto: samuell/frozen
ssize_t     data_list_query(data_t *data, request_t *list){ // {{{
	ssize_t                ret;
	action_t               action;
	
	data_get(ret, TYPE_ACTIONT, action, &list->data);
	if(
		ret != 0 ||
		action >= ACTION_INVALID
	)
		return -ENOSYS;
	
	hash_rename(list, api_data_from_list[action]);
	
	return data_hash_query(data, list);
} // }}}
Esempio n. 17
0
int prerun(GList **config)
{
	GtkTreeIter iter;
	char *fn, *testurl;
	int i;

	// get the branch used
	PACCONF = data_get(*config, "pacconf");

	if(run_discs_config(config) == 1)
		return 0;

	while(run_net_config(config) == -1) {}

	if(mirrorlist == NULL) {
		fn = g_strdup_printf("%s/%s", PACCONFPATH, PACCONF);
		mirrorlist = getmirrors(fn);
		free(fn);

		GtkWidget *cellview = gtk_cell_view_new ();
		GdkPixbuf *pixgood = gtk_widget_render_icon(cellview, GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON, NULL);
		GdkPixbuf *pixbad = gtk_widget_render_icon(cellview, GTK_STOCK_NO, GTK_ICON_SIZE_BUTTON, NULL);

		for(i=0; i < g_list_length(mirrorlist); i+=3) {
			gtk_list_store_append(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter);

			testurl = strdup(((char*)g_list_nth_data(mirrorlist, i)) + 6);
			strchr(testurl, '/')[0] = '\0';

			if(is_connected(testurl, 80, 1) < 1) {
				gtk_list_store_set(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter,
								COLUMN_USE, (gboolean)(GPOINTER_TO_INT(g_list_nth_data(mirrorlist, i+2))),
								COLUMN_STATUS, pixbad,
								COLUMN_NAME, (gchar*)g_list_nth_data(mirrorlist, i),
								COLUMN_FROM, (gchar*)g_list_nth_data(mirrorlist, i+1), -1);
			} else {
				gtk_list_store_set(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter,
								COLUMN_USE, (gboolean)(GPOINTER_TO_INT(g_list_nth_data(mirrorlist, i+2))),
								COLUMN_STATUS, pixgood,
								COLUMN_NAME, (gchar*)g_list_nth_data(mirrorlist, i),
								COLUMN_FROM, (gchar*)g_list_nth_data(mirrorlist, i+1), -1);
			}
			free(testurl);
		}
	}

	return 0;
}
Esempio n. 18
0
void category_changed(GtkTreeSelection *selection, gpointer data)
{
	GtkTreeModel *model;
	GtkTreeIter iter;
	char *selected;
	gboolean checked = FALSE;
	int i;
	gtk_label_set_label(GTK_LABEL(package_info), "");

	if (gtk_tree_selection_get_selected (selection, &model, &iter))
	{
		gtk_tree_model_get (model, &iter, 1, &selected, -1);
		gtk_tree_model_get (model, &iter, 0, &checked, -1);
		if(all_packages)
			packages_current = (GList*)data_get(all_packages, selected);
		if(packages_current)
		{
			gtk_list_store_clear(
				GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(package_list)))
			);

			for(i=0; i < g_list_length(packages_current); i+=4 ) {
				gtk_list_store_append(
					GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(package_list))),
					&iter
				);

				gtk_list_store_set(
					GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(package_list))),
					&iter,
					0, (gboolean)GPOINTER_TO_INT(g_list_nth_data(packages_current, i+3)),
					1, (char*)g_list_nth_data(packages_current, i),
					2, (char*)g_list_nth_data(packages_current, i+1), -1
				);
			}
		}

		/* disable package selection if category unselected */
		if(checked == FALSE)
			g_object_set (package_list, "sensitive", FALSE, NULL);
		else
			g_object_set (package_list, "sensitive", TRUE, NULL);
	}
}
Esempio n. 19
0
static ssize_t data_pcre_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	pcre_t                *fdata;
	
	if(fargs->src == NULL)
		return -EINVAL;
	
	switch( fargs->format ){
		case FORMAT(hash):;
			hash_t                *config;
			data_t                 data;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			if( (ret = pcre_t_new((pcre_t **)&dst->ptr, config)) < 0)
				return ret;
			
			fdata = (pcre_t *)dst->ptr;
			
			hash_holder_consume(ret, data, config, HDK(data));
			if(ret == 0){
				fdata->freeit = data;
				fdata->data   = &fdata->freeit;
			}
			return 0;

		case FORMAT(config):;
		case FORMAT(human):;
			request_t r_config[] = {
				{ HDK(regexp), *fargs->src },
				hash_end
			};
			return pcre_t_new((pcre_t **)&dst->ptr, r_config);
		
		default:
			break;
	};
	return -ENOSYS;
} // }}}
Esempio n. 20
0
static ssize_t data_complexkey_t_lookup(data_t *data, fastcall_lookup *fargs){ // {{{
	ssize_t                ret;
	uintmax_t              key               = 0;
	data_t                 d_key             = DATA_PTR_UINTT(&key);
	complexkey_t          *fdata             = (complexkey_t *)data->ptr;
	
	if(fargs->value == NULL)
		return -EINVAL;
	
	data_get(ret, TYPE_UINTT, key, fargs->key);
	if(ret < 0)
		return ret;
	
	if(key == 0)
		return data_notconsumable_t(fargs->value, fdata->value);
	
	key--;
	
	fastcall_lookup r_lookup = { { 4, ACTION_LOOKUP }, &d_key, fargs->value };
	return data_query(&fdata->cnext, &r_lookup);
} // }}}
Esempio n. 21
0
static ssize_t data_allocator_fixed_t_convert_from(data_t *data, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	
	if(fargs->src == NULL)
		return -EINVAL; 
		
	switch(fargs->format){
		case FORMAT(hash):;
			hash_t            *config;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			return allocator_new((allocator_fixed_t **)&data->ptr, config);
			
		default:
			break;
	};
	return -ENOSYS;
} // }}}
Esempio n. 22
0
static ssize_t data_list_t_lookup(data_t *data, fastcall_lookup *fargs){ // {{{
	ssize_t                ret;
	uintmax_t              key_uint;
	data_t                 d_key;
	data_t                *d_key_ptr         = &d_key;
	list_t                *fdata             = (list_t *)data->ptr;
	
	if(fargs->key == NULL || fargs->value == NULL)
		return -EINVAL;
	
	if(helper_key_current(fargs->key, &d_key) < 0)
		d_key_ptr = fargs->key;
	
	data_get(ret, TYPE_UINTT, key_uint, d_key_ptr);
	if(ret == 0){
		ctx_lookup ctx = { key_uint };
		if(list_t_enum(fdata, (list_t_callback)&iter_list_t_lookup, &ctx) != 0)
			return data_notconsumable_t(fargs->value, ctx.output);
	}
	return -EINVAL;
} // }}}
Esempio n. 23
0
static ssize_t data_triplet_format_t_convert_from(data_t *dst, fastcall_convert_from *fargs) { // {{{
    ssize_t                ret;

    switch(fargs->format) {
    case FORMAT(hash):
        ;
        hash_t                *config;

        if(dst->ptr != NULL)
            return -EINVAL;

        data_get(ret, TYPE_HASHT, config, fargs->src);
        if(ret != 0)
            return -EINVAL;

        return data_triplet_format_t_from_config(dst, config);

    default:
        break;
    }
    return -ENOSYS;
} // }}}
Esempio n. 24
0
int mountdev(char *dev, char *mountpoint, GList **config)
{
	char *type=NULL;
	char *tmp=NULL;
	FILE* fp;

	// open fstab
	if ((fp = fopen((char*)data_get(*config, "fstab"), "a")) == NULL)
	{
		perror(_("Could not open output file for writing"));
		return(-1);
	}

	// mount
	tmp = g_strdup_printf("%s/%s", TARGETDIR, mountpoint);
	makepath(tmp);
	FREE(tmp);

	umount_if_needed(mountpoint);
	tmp = g_strdup_printf("mount %s %s/%s",
			dev, TARGETDIR, mountpoint);
	fw_system(tmp);
	FREE(tmp);
	// unlink a possible stale lockfile
	tmp = g_strdup_printf("%s/%s/tmp/pacman-g2.lck", TARGETDIR, mountpoint);
	unlink(tmp);
	FREE(tmp);

	// make fstab entry
	type = findmount(dev, 0);
	char *uuid = get_uuid(dev);
	fprintf(fp, "%-16s %-16s %-11s %-16s %-3s %s\n", uuid, mountpoint,
		type, "defaults", "1", "1");
	free(uuid);
	free(type);
	fclose(fp);
	return(0);
}
Esempio n. 25
0
static ssize_t data_ref_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	
	if(dst->ptr != NULL)
		return data_ref_t_handler(dst, (fastcall_header *)fargs);  // already inited - pass to underlying data
	
	switch(fargs->format){
		case FORMAT(hash):;
			hash_t                *config;
			data_t                 data;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			hash_holder_consume(ret, data, config, HK(data));
			
			return ( (dst->ptr = ref_t_alloc(&data)) == NULL ) ? -EFAULT : 0;

		default:
			break;
	}
	return -ENOSYS;
} // }}}
Esempio n. 26
0
void msg_processing(uint8_t * mess) {
    int data;
    // Fonction:
    // 0x01 pour READ
    // 0x10 pour WRITE
    switch(mess[FUNC]) {
        case READ:
            data = data_get(mess[ADDR]);
            PutCharInFifo ( &descrFifoTX, START_BYTE);
            PutCharInFifo ( &descrFifoTX, mess[FUNC]);
            PutCharInFifo ( &descrFifoTX, mess[ADDR]);
            PutCharInFifo ( &descrFifoTX, data);

            break;
        case WRITE:
            data_set(mess[ADDR], mess[VALUE]);
            break;
        default:
            break;
    }



}
Esempio n. 27
0
int run(GList **config)
{
	GList *partlist;
	char **nrdevs, *ptr, *op, *np, *dest;
	int ret;
	char my_buffer[MAX_LEN + 1] = "";

	detect_parts(0);

	// select swap partitions to use
	partlist = selswap();

	// format swap partitions
	if(doswap(partlist, config) == -1)
		return(-1);

	// root partition
	ptr = selrootdev();
	if(ptr == NULL)
		return(-1);
	if(formatdev(ptr) == -1)
		return(-1);
	mountdev(ptr, "/", config);

	// move temporarily stuff to the final location
	chdir(TARGETDIR);
	np = g_strdup_printf("%s/%s", TARGETDIR, "/etc/profile.d");
	makepath(np);
	FREE(np);
	op = (char*)data_get(*config, "fstab");
	np = g_strdup_printf("%s/%s", TARGETDIR, "/etc/fstab");
	copyfile(op, np);
	unlink(op);
	chmod (np, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
	data_put(config, "fstab", strdup(np));
	FREE(np);

	np = g_strdup_printf("%s/%s", TARGETDIR, "/etc/sysconfig");
	makepath(np);
	FREE(np);

	// so that 1) the user can't mount a partition as /dev because
	// it'll be used 2) install scriptlets will be able to do
	// >/dev/null
	makepath(TARGETDIR "/dev");
	makepath(TARGETDIR "/proc");
	makepath(TARGETDIR "/sys");
	fw_system("mount none -t devtmpfs " TARGETDIR "/dev");
	fw_system("mount none -t proc " TARGETDIR "/proc");
	fw_system("mount none -t sysfs " TARGETDIR "/sys");

	// non-root partitions
	dialog_vars.backtitle=gen_backtitle(_("Selecting other partitions"));
	while(1)
	{
		dialog_vars.input_result = my_buffer;
		nrdevs = parts2dialog(parts);
		dlg_put_backtitle();
		dlg_clear();
		dialog_vars.cancel_label = _("Continue");
		dialog_vars.input_result = my_buffer;
		dialog_vars.input_result[0]='\0';
		ret = dialog_menu(
		_("Select other Linux partitions for /etc/fstab"),
		_("You may use your other partitions to distribute your Linux "
		"system across more than one partition. Currently, you have "
		"only mounted your / partition. You might want to mount "
		"directories such as /boot, /home or /usr/local on separate "
		"partitions. You should not try to mount /usr, /etc, /sbin or "
		"/bin on their own partitions since they contain utilities "
		"needed to bring the system up and mount partitions. Also, "
		"do not reuse a partition that you've already entered before. "
		"Please select one of the partitions listed below, or if "
		"you're done, hit Continue."),
		0, 0, 0, g_list_length(parts)/2, nrdevs);
		dialog_vars.cancel_label = '\0';
		FREE(nrdevs);
		if (ret != DLG_EXIT_CANCEL)
		{
			if(!strcmp(_("(in use)"), dialog_vars.input_result))
				continue;
			ptr = strdup(dialog_vars.input_result);
			if(formatdev(ptr) == -1)
				return(-1);
			dest = asktowhere(ptr);
			if(dest == NULL)
				return(-1);
			mountdev(ptr, dest, config);
			FREE(dest);
			FREE(ptr);
		}
		else
			break;
	}

	makepath(g_strdup_printf("%s/%s", TARGETDIR, "/var/log"));
	np = g_strdup_printf("%s/%s", TARGETDIR, LOGFILE);
	copyfile(LOGFILE, np);
	unlink(LOGFILE);
	chmod (np, S_IRUSR|S_IWUSR);
	FREE(np);

	// disable caching for cds
	// this is needed here since when the cds is loaded we had no
	// formatted root partition
	if((char*)data_get(*config, "netinstall")==NULL)
	{
		char *pacbindir = g_strdup_printf("%s/frugalware-%s", SOURCEDIR, ARCH);
		char *ptr;

		ptr = g_strdup_printf("%s/var/cache/pacman-g2/pkg", TARGETDIR);
		makepath(ptr);
		FREE(ptr);
		disable_cache(pacbindir);
		FREE(pacbindir);
	}
	return(0);
}
Esempio n. 28
0
static ssize_t data_list_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret               = 0;
	list_t                *fdata;
	uintmax_t              transfered        = 0;
	data_t                 sl_input          = DATA_SLIDERT(fargs->src, 0);
	
	switch(fargs->format){
		case FORMAT(native):
		case FORMAT(human):
		case FORMAT(config):;
			return data_list_t(dst);
			
		case FORMAT(hash):;
			hash_t                *config;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			if((fdata = dst->ptr) == NULL){
				if( (fdata = dst->ptr = list_t_alloc()) == NULL)
					return -ENOMEM;
			}

			if(hash_iter(config, (hash_iterator)&iter_list_t_convert_from, dst, 0) != ITER_OK){
				list_t_free(dst->ptr);
				return -EFAULT;
			}
			return 0;
			
		case FORMAT(packed):;
			data_t                 item;
			data_t                 d_item    = DATA_PTR_DATAT(&item);
			
			if((fdata = dst->ptr) == NULL){
				if( (fdata = dst->ptr = list_t_alloc()) == NULL)
					return -ENOMEM;
			}
			
			while(1){
				data_set_void(&item);
				
				fastcall_convert_from r_convert = { { 5, ACTION_CONVERT_FROM }, &sl_input, FORMAT(packed) };
				if( (ret = data_query(&d_item, &r_convert)) < 0)
					break;
				
				data_slider_t_set_offset(&sl_input, r_convert.transfered, SEEK_CUR);
				
				if(item.type == TYPE_LISTENDT)
					break;
				
				if( (ret = list_t_push(fdata, &item)) < 0)
					break;
			}
			transfered = data_slider_t_get_offset(&sl_input);
			break;

		default:
			return -ENOSYS;
	};
	if(fargs->header.nargs >= 5)
		fargs->transfered = transfered;
	
	return ret;
} // }}}
Esempio n. 29
0
int run(GList **config)
{
	GList *drives=NULL;
	int i;
	int found = 0;
	char *ptr;

	umount_if_needed(SOURCEDIR);

	dialog_vars.backtitle=gen_backtitle(_("Selecting source media"));
	dlg_put_backtitle();
	dlg_clear();
	dialog_msgbox(_("Scanning"), _("Scanning for a CD/DVD drive containing "
		"a Frugalware install disc..."), 0, 0, 0);
	
	drives = grep_drives("/proc/sys/dev/cdrom/info");
	for (i=0; i<g_list_length(drives); i++)
	{
		ptr = get_blkid((char*)g_list_nth_data(drives, i));
		if(ptr && !strcmp(ptr, "Frugalware Install"))
		{
			LOG("install medium found in %s", (char*)g_list_nth_data(drives, i));
			FREE(ptr);
			ptr = g_strdup_printf("mount -o ro -t iso9660 /dev/%s %s", (char*)g_list_nth_data(drives, i),
					SOURCEDIR);
			fw_system(ptr);
			data_put(config, "srcdev", (char*)g_list_nth_data(drives, i));
			dlg_put_backtitle();
			dialog_msgbox(_("CD/DVD drive found"), g_strdup_printf(_("A Frugalware install disc was found in device /dev/%s."), (char*)g_list_nth_data(drives, i)), 0, 0, 0);
			if(is_netinstall(SOURCEDIR))
			{
				data_put(config, "netinstall", "");
				LOG("install medium contains no packages, performing a network installation");
			}
			else
				LOG("install medium contains packages, performing an offline installation");
			found = 1;
			break;
		}
		else
			LOG("skipping non-install medium in %s", (char*)g_list_nth_data(drives, i));
		FREE(ptr);
	}
	if(!found)
	{
		LOG("no package database found, performing a network installation");
		data_put(config, "netinstall", "");
	}
	// disable caching for cds
	if((char*)data_get(*config, "netinstall")==NULL)
	{
		char *pacbindir = g_strdup_printf("%s/frugalware-%s", SOURCEDIR, ARCH);
		disable_cache(pacbindir);
		FREE(pacbindir);
	}
	if(data_get(*config, "srcdev")==NULL)
	{
		LOG("no cd/dvd drive found, this is normal if you are running setup from a pendrive or in an emulator");
	}
	return(0);
}