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"); } }
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))); }