[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Noob libssh question
[Thread Prev] | [Thread Next]
- Subject: Re: Noob libssh question
- From: Alan Dunn <amdunn@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Thu, 6 Feb 2014 19:07:27 -0600
- To: libssh@xxxxxxxxxx
This bug: https://red.libssh.org/issues/115 , which the last comment claims is fixed in 0.6.0. On Thu, Feb 6, 2014 at 6:58 PM, Dustin Oprea <myselfasunder@xxxxxxxxx> wrote: > I can't recall the bug number (I submitted it), but this was an issue until > very recently. It's been fixed, reportedly. > > You might build off MASTER, and see if that works better. > > > Dustin > > On Feb 6, 2014 7:22 PM, "craig and heather" <calhjh@xxxxxxxxx> wrote: >> >> Ok I've now found that waiting in the C program for the runfile to go away >> is the cause of the problem. If I execute a C program that runs start to >> finish without any waiting, ssh_channel_read returns 0 bytes. >> >> So should I check the result from ssh_channel_read and if -2 delay a bit >> and then read it again until the value returned is >= 0? >> >> I thought this was a synchronous function. BTW, I'm using the newest >> version of the library that I downloaded and built today. >> >> >> >> >> On Thu, Feb 6, 2014 at 3:49 PM, craig and heather <calhjh@xxxxxxxxx> >> wrote: >>> >>> Hello, >>> >>> I am using libssl to execute simple C programs between raspberry pi's. >>> These programs are simple SDL graphics applications similar to that listed >>> below that don't write anything to stderr (unless there is an error) or >>> stdout. >>> >>> I am also doing some remote file creation and deletion using the same >>> libssl functionality. >>> >>> When I remotely execute commands such as "touch runfile" or "rm runfile" >>> I can see 0 bytes are returned from ssh_channel_read function as would be >>> expected. However whenever I run one of my little C programs >>> ssh_channel_read always returns -2 but the program runs successfully on the >>> remote system. >>> >>> Is there something I need to do in my C programs to satisfy >>> ssh_channel_read? >>> >>> Thanks for looking >>> >>> >>> /* >>> * A Smart Screen Module >>> * >>> * Sets the entire screen to a specified RGB color >>> * Typical Call: >>> * colorscreen 0 255 0 >>> * >>> * Concept and Implementation by: Craig A. Lindley >>> * Last Update: 01/30/2014 >>> */ >>> >>> #include <stdio.h> >>> #include <stdlib.h> >>> #include <unistd.h> >>> #include <sys/stat.h> >>> #include <sys/types.h> >>> >>> #include "SDL/SDL.h" >>> >>> #define RUN_FILE_NAME "runfile" >>> #define BUSY_FILE_NAME "busy" >>> >>> // Check for file existance >>> int file_exists(char *filename) { >>> >>> struct stat buffer; >>> return (stat (filename, &buffer) == 0); >>> } >>> >>> int main (int argc, char* args[]) { >>> >>> if (argc != 4) { >>> fprintf(stderr, "Wrong number of arguments\n"); >>> return -1; >>> } >>> >>> // Extract RGB values from the command line arguments >>> int red = atoi(args[1]); >>> int green = atoi(args[2]); >>> int blue = atoi(args[3]); >>> >>> // Range check the specified color values >>> if ((red < 0) || (red > 255) || >>> (green < 0) || (green > 255) || >>> (blue < 0) || (blue > 255)) { >>> fprintf(stderr, "Color values in range 0 <= value < 256\n"); >>> return -1; >>> } >>> >>> // Create the busy file >>> FILE *pFile = fopen (BUSY_FILE_NAME,"w"); >>> if (pFile != NULL) { >>> fclose(pFile); >>> } else { >>> fprintf(stderr, "Could not create busy file\n"); >>> return -1; >>> } >>> >>> putenv("SDL_FBDEV=/dev/fb1"); >>> putenv("SDL_VIDEODRIVER=fbcon"); >>> >>> // Start SDL >>> SDL_Init(SDL_INIT_VIDEO); >>> >>> // Turn off cursor >>> SDL_ShowCursor(SDL_DISABLE); >>> >>> const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); >>> >>> int width = videoInfo->current_w; >>> int height = videoInfo->current_h; >>> uint8_t bpp = videoInfo->vfmt->BitsPerPixel; >>> >>> // Set up screen >>> SDL_Surface *screen = SDL_SetVideoMode(width, height, bpp, >>> SDL_SWSURFACE); >>> if (!screen) { >>> fprintf(stderr, "SDL_SetVideoMode failed\n"); >>> return -1; >>> } >>> // Create the specified color >>> uint32_t color = SDL_MapRGB(screen->format, red, green, blue); >>> >>> // Create rect the size of the screen >>> SDL_Rect rect = {0, 0, width, height}; >>> >>> // Fill the screen with the specified color >>> SDL_FillRect(screen, &rect, color); >>> >>> // Update Screen >>> SDL_Flip(screen); >>> >>> // Pause >>> SDL_Delay(1000); >>> >>> // Wait until runfile is gone to terminate >>> while (file_exists(RUN_FILE_NAME)) { >>> SDL_Delay(50); >>> } >>> >>> // Delete the busy file >>> if (remove(BUSY_FILE_NAME) != 0) { >>> fprintf(stderr, "Error deleting busy file\n"); >>> } >>> >>> // Quit SDL >>> SDL_Quit(); >>> >>> return 0; >>> } >>> >>> >>> -- >>> Craig Lindley >>> >>> If you're one in a million, there are now seven thousand people exactly >>> like you. >> >> >> >> >> -- >> Craig Lindley / Heather Hubbard >> >> New Recordings: craigandheather.net/cnmpage.html >> Latest CD: craigandheather.net/songsilike2013cd.html >> >> Personal Website: craigandheather.net >> Business Website: clockwork.craigandheather.net >> Phone: (719) 495-1873 >> Cell: (719) 502-7925 >> >> If you're one in a million, there are now seven thousand people exactly >> like you.
Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
Re: Noob libssh question | Dustin Oprea <myselfasunder@xxxxxxxxx> |