コード例 #1
0
void levantarArchivoAMemoriaYDistribuirANodos(char* pathLocal, char* nombreArchivo, int padre) {
	int local_fd;
	int envioNodoCorrectamente = 1;
	int cantidadBolquesEnviados = 0;
	struct stat file_stat;
	char *data;
	t_list* listaDeBloques = list_create();
	t_archivo *archivoNuevo;

	if (pathLocal != NULL) {
		if ((local_fd = open(pathLocal, O_RDONLY)) != -1) {

			fstat(local_fd, &file_stat);
			data = mmap((caddr_t) 0, file_stat.st_size, PROT_READ, MAP_SHARED, local_fd, 0);
			if (data == (caddr_t) (-1)) {
				perror("mmap");
				exit(1);

			}

			//Acá se pone a mandar bloques de arch a nodos y demás
			envioNodoCorrectamente = mandarBloquesANodos(data, &cantidadBolquesEnviados,
					&listaDeBloques);

			if (close(local_fd) == -1)
				perror("close");

			if (envioNodoCorrectamente != -1) {	//si se mando correctamente
				//agregar a la lista de archivos global el archivo nuevo,
				//con su correspondiente listaDeBloques, nombre, padre, tamanio,
				//y estado. (Esto es a las estructuras lógicas)

				archivoNuevo = nuevoArchivo(nombreArchivo, padre, string_length(data),
						listaDeBloques, 1);

				list_add(listaArchivos, archivoNuevo);

				printf("El archivo %s fue copiado correctamente.\n", nombreArchivo);
			} else {
				printf("error al enviar a nodos\n");
			}

			munmap(data, file_stat.st_size);

		} else {
			printf("Error al abrir el archivo\n");
		}
	} else {
		printf("upload: falta un operando\n");
	}
}
コード例 #2
0
ファイル: VentanaPrincipal.cpp プロジェクト: seguame/Sendero
void VentanaPrincipal::crearAcciones()
{
    accionCompilar = new QAction(QIcon(":/imagenes/compile.png"), tr("Compilar"), this);
    accionCompilar->setStatusTip("Compilar archivo actual");
    connect(accionCompilar, SIGNAL(triggered()), this, SLOT(compilar()));

    accionNuevo = new QAction(QIcon(":/imagenes/new.png"), tr("Nuevo"), this);
    accionNuevo->setShortcuts(QKeySequence::New);
    accionNuevo->setStatusTip(tr("Crear un nuevo archivo"));
    connect(accionNuevo, SIGNAL(triggered()), this, SLOT(nuevoArchivo()));

    accionAbrir = new QAction(QIcon(":/imagenes/open.png"), tr("Abrir..."), this);
    accionAbrir->setShortcuts(QKeySequence::Open);
    accionAbrir->setStatusTip(tr("Abrir un archivo existente"));
    connect(accionAbrir, SIGNAL(triggered()), this, SLOT(abrir()));

    accionGuardar = new QAction(QIcon(":/imagenes/save.png"), tr("Guardar"), this);
    accionGuardar->setShortcuts(QKeySequence::Save);
    accionGuardar->setStatusTip(tr("Guardar cambios del archivo"));
    connect(accionGuardar, SIGNAL(triggered()), this, SLOT(guardar()));

    accionGuardarComo = new QAction(tr("Guardar como..."), this);
    accionGuardarComo->setShortcuts(QKeySequence::SaveAs);
    accionGuardarComo->setStatusTip(tr("Guardar archivo con un nuevo nombre"));
    connect(accionGuardarComo, SIGNAL(triggered()), this, SLOT(guardarComo()));


    accionSalir = new QAction(tr("Salir"), this);
    accionSalir->setShortcuts(QKeySequence::Quit);

    accionSalir->setStatusTip(tr("Salir de la aplicacion"));
    connect(accionSalir, SIGNAL(triggered()), this, SLOT(close()));


    accionCortar = new QAction(QIcon(":/imagenes/cut.png"), tr("Cortar"), this);

    accionCortar->setShortcuts(QKeySequence::Cut);
    accionCortar->setStatusTip(tr("Cortar el contenido seleccionado al portapapeles"));
    connect(accionCortar, SIGNAL(triggered()), editorTexto, SLOT(cut()));

    accionCopiar = new QAction(QIcon(":/imagenes/copy.png"), tr("Copiar"), this);
    accionCopiar->setShortcuts(QKeySequence::Copy);
    accionCopiar->setStatusTip(tr("Copiar el contenido seleccionado al portapapeles"));
    connect(accionCopiar, SIGNAL(triggered()), editorTexto, SLOT(copy()));

    accionPegar = new QAction(QIcon(":/imagenes/paste.png"), tr("Pegar"), this);
    accionPegar->setShortcuts(QKeySequence::Paste);
    accionPegar->setStatusTip(tr("Pegar el contenido del portapapeles en el lugar seleccionado"));
    connect(accionPegar, SIGNAL(triggered()), editorTexto, SLOT(paste()));

    accionAcercaDe = new QAction(tr("Acerca de"), this);
    accionAcercaDe->setStatusTip(tr("Mostrar informacion de la aplicacion"));
    connect(accionAcercaDe, SIGNAL(triggered()), this, SLOT(acercaDe()));


    accionAcercaDeQT = new QAction(tr("Acerca de Qt"), this);
    accionAcercaDeQT->setStatusTip(tr("Mostrar informacion de QT"));
    connect(accionAcercaDeQT, SIGNAL(triggered()), qApp, SLOT(aboutQt()));


    //Dejar que la disponibilidad de estas acciones se manejen por los eventos
    accionCortar->setEnabled(false);
    accionCopiar->setEnabled(false);

    connect(editorTexto,
            SIGNAL(copyAvailable(bool)),
            accionCortar,
            SLOT(setEnabled(bool)));

    connect(editorTexto,
            SIGNAL(copyAvailable(bool)),
            accionCopiar,
            SLOT(setEnabled(bool)));
}