IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6674


Ignore:
Timestamp:
Mar 24, 2006, 2:42:35 PM (20 years ago)
Author:
eugene
Message:

moved check_permissions to libohana, added buttons to Kii

Location:
trunk/Ohana/src
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/addstar/Makefile

    r5899 r6674  
    8787$(SRC)/match_refstars.$(ARCH).o \
    8888
    89 SERVER = \
     89ADDSTARD = \
     90$(SRC)/addstard.$(ARCH).o \
    9091$(SRC)/SocketOps.$(ARCH).o \
    9192$(SRC)/ConfigInit.$(ARCH).o \
     
    130131$(SRC)/NewRefcat.$(ARCH).o
    131132
    132 CLIENT = \
     133ADDSTART = \
     134$(SRC)/addstart.$(ARCH).o \
     135$(SRC)/DatasetOps.$(ARCH).o \
     136$(SRC)/SocketOps.$(ARCH).o \
     137$(SRC)/ConfigInit.$(ARCH).o \
     138$(SRC)/args_server.$(ARCH).o \
     139$(SRC)/CheckPassword.$(ARCH).o \
     140$(SRC)/UpdateDatabase_Image.$(ARCH).o \
     141$(SRC)/UpdateDatabase_Reflist.$(ARCH).o \
     142$(SRC)/UpdateDatabase_Refcat.$(ARCH).o \
     143$(SRC)/airmass.$(ARCH).o \
     144$(SRC)/build_links.$(ARCH).o \
     145$(SRC)/calibrate.$(ARCH).o \
     146$(SRC)/find_matches.$(ARCH).o \
     147$(SRC)/find_matches_closest.$(ARCH).o \
     148$(SRC)/find_matches_refstars.$(ARCH).o \
     149$(SRC)/find_subset.$(ARCH).o \
     150$(SRC)/get2mass.$(ARCH).o \
     151$(SRC)/get2mass_as.$(ARCH).o \
     152$(SRC)/get2mass_dr2.$(ARCH).o \
     153$(SRC)/getgsc.$(ARCH).o \
     154$(SRC)/getusno.$(ARCH).o \
     155$(SRC)/greference.$(ARCH).o \
     156$(SRC)/gcatalog.$(ARCH).o \
     157$(SRC)/gimages.$(ARCH).o \
     158$(SRC)/image-db.$(ARCH).o \
     159$(SRC)/in_image.$(ARCH).o \
     160$(SRC)/load_pt_catalog.$(ARCH).o \
     161$(SRC)/load_subpix.$(ARCH).o \
     162$(SRC)/mkcatalog.$(ARCH).o \
     163$(SRC)/replace_match.$(ARCH).o \
     164$(SRC)/SetSignals.$(ARCH).o \
     165$(SRC)/SkyRegionUtils.$(ARCH).o \
     166$(SRC)/SkyListForStars.$(ARCH).o \
     167$(SRC)/sort_lists.$(ARCH).o \
     168$(SRC)/update_coords.$(ARCH).o \
     169$(SRC)/wcatalog.$(ARCH).o \
     170$(SRC)/Shutdown.$(ARCH).o \
     171$(SRC)/edge_check.$(ARCH).o \
     172$(SRC)/check_permissions.$(ARCH).o \
     173$(SRC)/opening_angle.$(ARCH).o \
     174$(SRC)/ListenClients_Thread.$(ARCH).o \
     175$(SRC)/NewImage_Thread.$(ARCH).o \
     176$(SRC)/NewReflist_Thread.$(ARCH).o \
     177$(SRC)/NewRefcat_Thread.$(ARCH).o
     178
     179ADDSTARC = \
     180$(SRC)/addstarc.$(ARCH).o \
    133181$(SRC)/SocketOps.$(ARCH).o \
    134182$(SRC)/ConfigInit.$(ARCH).o \
     
    143191$(SRC)/args_client.$(ARCH).o
    144192
    145 ADDSTARC = $(SRC)/addstarc.$(ARCH).o $(CLIENT)
    146 ADDSTARD = $(SRC)/addstard.$(ARCH).o $(SERVER)
    147 
    148193$(ADDSTARC) : $(INC)/addstar.h
    149194$(ADDSTARD) : $(INC)/addstar.h
     195$(ADDSTART) : $(INC)/addstar.h
    150196$(ADDSTAR)  : $(INC)/addstar.h
    151197
     
    155201addstard                : $(BIN)/addstard.$(ARCH)
    156202$(BIN)/addstard.$(ARCH) : $(ADDSTARD)
     203
     204addstart                : $(BIN)/addstart.$(ARCH)
     205$(BIN)/addstart.$(ARCH) : $(ADDSTART)
     206        @if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
     207        $(CC) $^ -o $@ $(LFLAGS) -lpthread
    157208
    158209addstarc                : $(BIN)/addstarc.$(ARCH)
  • trunk/Ohana/src/addstar/include/addstar.h

    r5945 r6674  
    2020    fprintf (stderr, "ERROR:  photcode %s not found in photcode table\n", NAME); \
    2121    exit (0); }
     22
     23typedef struct {
     24  int Nstars;
     25  Stars *stars;
     26  Image *image;
     27  Coords *mosaic;
     28  SkyRegion *patch;
     29  AddstarClientOptions *options;
     30  char *refcat;
     31} DVO_DATA;
    2232
    2333typedef struct sockaddr_in SockAddress;
     
    204214int SkyListSetPath (SkyList *list, char *path);
    205215SkyTable *SkyTableLoadOptimal ();
     216
     217int InitDataset ();
     218int PushDataset (DVO_DATA *data);
     219DVO_DATA *PopDataset (void);
     220void *ListenClients_Thread (void *data);
     221int NewImage_Thread (int BindSocket);
     222int NewRefcat_Thread (int BindSocket);
     223int NewReflist_Thread (int BindSocket);
  • trunk/Ohana/src/addstar/src/DatasetOps.c

    r6498 r6674  
    11# include "addstar.h"
     2# include <pthread.h>
    23
    34/* the init function is an alternative */
     
    56pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER;
    67
    7 static int lock = FALSE;
    88static int Ndataset = 0;
    99static int NDATASET = 0;
     
    2929  int N;
    3030
    31   pthread_mutex_lock(&mutex);
     31  pthread_mutex_lock(&fastmutex);
    3232
    3333  N = Ndataset;
    3434  Ndataset ++;
    35   CHECK_REALLOCATE (dataset, DVO_DATA, NDATASET, Ndataset, 100);
     35  CHECK_REALLOCATE (dataset, DVO_DATA *, NDATASET, Ndataset, 100);
    3636
    3737  dataset[N] = data;
    3838
    39   pthread_mutex_unlock(&mutex);
     39  pthread_mutex_unlock(&fastmutex);
    4040  return (TRUE);
    4141}
     
    4444DVO_DATA *PopDataset (void) {
    4545
     46  int i;
    4647  DVO_DATA *data;
    4748
    48   pthread_mutex_lock(&mutex);
     49  pthread_mutex_lock(&fastmutex);
    4950
    5051  if (Ndataset == 0) {
    51     pthread_mutex_unlock(&mutex);
     52    pthread_mutex_unlock(&fastmutex);
    5253    return (NULL);
    5354  }
     
    6162  if ((Ndataset < NDATASET / 2) && (Ndataset > 50)) {
    6263    NDATASET = Ndataset / 2;
    63     REALLOCATE (dataset, DVO_DATA, NDATASET);
     64    REALLOCATE (dataset, DVO_DATA *, NDATASET);
    6465  }
    6566
    66   pthread_mutex_unlock(&mutex);
     67  pthread_mutex_unlock(&fastmutex);
    6768  return (data);
    6869}
  • trunk/Ohana/src/addstar/src/ListenClients_Thread.c

    r6498 r6674  
    22
    33/* wait for incoming messages from clients */
    4 int ListenClients_Thread () {
     4void *ListenClients_Thread (void *data) {
    55
    66  int status, InitSocket, BindSocket;
    77  SockAddress Address;
    88  IOBuffer message;
    9   AddstarClientOptions options;
    109 
    1110  /* if we have multiple threads, each one creates its own socket? */
  • trunk/Ohana/src/addstar/src/NewRefcat_Thread.c

    r6498 r6674  
    77  IOBuffer message;
    88  SkyRegion *patch;
     9  DVO_DATA *dataset;
    910
    1011  /* accept incoming data set */
  • trunk/Ohana/src/addstar/src/NewReflist_Thread.c

    r6498 r6674  
    66  Stars *stars;
    77  AddstarClientOptions *options;
     8  DVO_DATA *dataset;
    89
    910  /* accept incoming data set */
  • trunk/Ohana/src/addstar/src/addstart.c

    r6498 r6674  
    11# include "addstar.h"
     2# include <pthread.h>
    23
    34int main (int argc, char **argv) {
    45
    5   int status, InitSocket, BindSocket;
    6   SockAddress Address;
    7   IOBuffer message;
    86  AddstarClientOptions options;
     7  pthread_t thread;
     8  DVO_DATA *dataset;
     9  // pthread_attr_t attr;
    910
    1011  options = ConfigInit (&argc, argv);
     
    1314  /* store the sky table in a global for internal use */
    1415  ServerSky = SkyTableLoadOptimal (CATDIR, SKY_TABLE, GSCFILE, SKY_DEPTH, VERBOSE);
    15   SkyTableSetFilename (ServerSky, CATDIR, "cpt");
     16  SkyTableSetFilenames (ServerSky, CATDIR, "cpt");
    1617
    1718  VERBOSE = TRUE;
     
    2425
    2526  /* decide if we need an argument to dbthread */
    26   pthread_create (thread, attr, ListenClients_Thread, NULL);
     27  pthread_create (&thread, NULL, &ListenClients_Thread, NULL);
    2728
    2829  while (1) {
  • trunk/Ohana/src/addstar/src/load_pt_catalog.c

    r5945 r6674  
    33int load_pt_catalog (Catalog *catalog, SkyRegion *region) {
    44 
    5   check_permissions (catalog[0].filename);
     5  if (!check_file_access (catalog[0].filename, TRUE, TRUE)) {
     6    exit (1);
     7  }
     8
    69  if (VERBOSE) fprintf (stderr, "adding to %s\n", catalog[0].filename);
    710   
  • trunk/Ohana/src/addstar/src/match_refstars.c

    r3339 r6674  
    1313    if (stars[i].found != -1) continue;
    1414    gregion_star (&stars[i], &region);
    15     check_permissions (region.filename);
     15    if (!check_file_access (region.filename, TRUE, TRUE)) {
     16      exit (0);
     17    }
    1618    make_backup (region.filename);
    1719
  • trunk/Ohana/src/elixir/src/LogOpen.c

    r2428 r6674  
    1111  if ((f == (FILE *) NULL) && (errno == ENOENT)) {
    1212    path = pathname (filename);
    13     if (!mkdirhier (path)) f = fopen (filename, "a");
     13    if (!mkdirhier (path, S_IRWXU | S_IRWXG | S_IRWXO)) {
     14      f = fopen (filename, "a");
     15    }
    1416  }
    1517  if (f == (FILE *) NULL) {
  • trunk/Ohana/src/gastro2/src/extr2mass.c

    r2442 r6674  
    136136
    137137      path = pathname (filename);
    138       mkdirhier (path);
     138      mkdirhier (path, S_IRWXU | S_IRWXG | S_IRWXO);
    139139     
    140140      fout = fopen (filename, "a+");
  • trunk/Ohana/src/imregister/detrend/altpath.c

    r4864 r6674  
    141141  if (status == -1) {
    142142    if (errno == ENOENT) {
    143       if (mkdirhier (path) == -1) {
     143      if (mkdirhier (path, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
    144144        fprintf (stderr, "ERROR: can't create path %s\n", path);
    145145        return (FALSE);
  • trunk/Ohana/src/imregister/detrend/db_names.c

    r3606 r6674  
    2525  if (output.Modify) {
    2626    if (status == -1) {
    27       if (mkdirhier (dBPath) == -1) {
     27      if (mkdirhier (dBPath, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
    2828        fprintf (stderr, "ERROR: can't find or create path %s\n", dBPath);
    2929        exit (1);
     
    3434    status = stat (dBTrash, &statbuf);
    3535    if (status == -1) {
    36       if (mkdirhier (dBTrash) == -1) {
     36      if (mkdirhier (dBTrash, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
    3737        fprintf (stderr, "ERROR: detrend dB trash not found %s\n", dBTrash);
    3838        exit (1);
  • trunk/Ohana/src/imregister/detrend/entry.c

    r3650 r6674  
    5050  if (status == -1) {
    5151    if (errno == ENOENT) {
    52       if (mkdirhier (fullpath) == -1) {
     52      if (mkdirhier (fullpath, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
    5353        fprintf (stderr, "ERROR: can't create path %s\n", fullpath);
    5454        exit (1);
  • trunk/Ohana/src/kii/event/InterpretKeys.c

    r2891 r6674  
    33int InterpretKeys (Graphic *graphic, Layout *layout, XEvent *event) {
    44
     5  double X, Y;
    56  int    status;
    67  char   string[10];
    78  KeySym keysym;
    89  XComposeStatus  composestatus;
     10  XKeyEvent *keyevent;
    911
    10   XLookupString ((XKeyEvent *)event, string, 9, &keysym, &composestatus);
     12  keyevent = (XKeyEvent *) event;
     13  XLookupString (keyevent, string, 9, &keysym, &composestatus);
     14 
    1115
    1216  switch (keysym) {
    1317
    14   case XK_Tab:
    15     MOVE_POINTER = MOVE_POINTER ^ TRUE;
    16     if (MOVE_POINTER) UpdatePointer (graphic, layout, (XMotionEvent *)event);
    17     status = TRUE;
    18     break;
     18    case XK_KP_Enter:
     19    case XK_Return:
     20      Screen_to_Image (&X, &Y, (double)keyevent[0].x, (double)keyevent[0].y, layout);
     21      X = 0.5*layout[0].matrix.Naxis[0] - X;
     22      Y = 0.5*layout[0].matrix.Naxis[1] - Y;
     23      Reorient (graphic, layout, X, Y, 0);
     24      break;
     25    case XK_Prior:
     26      Reorient (graphic, layout, layout[0].X, layout[0].Y, +1);
     27      break;
     28    case XK_Next:
     29      Reorient (graphic, layout, layout[0].X, layout[0].Y, -1);
     30      break;
     31    case XK_Up:
     32      Reorient (graphic, layout, layout[0].X, layout[0].Y + 50, 0);
     33      break;
     34    case XK_Down:
     35      Reorient (graphic, layout, layout[0].X, layout[0].Y - 50, 0);
     36      break;
     37    case XK_Left:
     38      Reorient (graphic, layout, layout[0].X + 50, layout[0].Y, 0);
     39      break;
     40    case XK_Right:
     41      Reorient (graphic, layout, layout[0].X - 50, layout[0].Y, 0);
     42      break;
    1943
    20   default:
    21     status = TRUE;
     44    case XK_Tab:
     45      MOVE_POINTER = MOVE_POINTER ^ TRUE;
     46      if (MOVE_POINTER) UpdatePointer (graphic, layout, (XMotionEvent *)event);
     47      status = TRUE;
     48      break;
     49
     50    default:
     51      status = TRUE;
    2252  }
    2353
     
    3565  this is all old, but a good example for putting in the cursor motion.
    3666
    37     break;
     67  break;
    3868*/
    3969
  • trunk/Ohana/src/kii/event/InterpretPresses.c

    r2466 r6674  
    1010 
    1111  if ((event[0].type == ButtonPress) && InPicture (event, &layout[0].picture)) {
    12     Reorient (graphic, layout, event);
     12    ReorientOnButton (graphic, layout, event);
    1313  }
    1414
     
    5050}
    5151
     52void ReorientOnButton (Graphic *graphic, Layout *layout, XButtonEvent *mouse_event) {
     53
     54  double X, Y;
     55
     56  Screen_to_Image (&X, &Y, (double)mouse_event[0].x, (double)mouse_event[0].y, layout);
     57  X = 0.5*layout[0].matrix.Naxis[0] - X;
     58  Y = 0.5*layout[0].matrix.Naxis[1] - Y;
     59
     60  switch (mouse_event[0].button) {
     61    case 1:
     62      Reorient (graphic, layout, X, Y, 0);
     63      break;
     64    case 2:
     65      Reorient (graphic, layout, X, Y, -1);
     66      break;
     67    case 3:
     68      Reorient (graphic, layout, X, Y, +1);
     69      break;
     70    default:
     71      break;
     72  }
     73}
  • trunk/Ohana/src/kii/include/prototypes.h

    r5852 r6674  
    3737void          Remap               PROTO((Graphic *, Layout *, Matrix  *));
    3838int           NewPicture          PROTO((Graphic *, Layout *));
    39 void          Reorient            PROTO((Graphic *, Layout *, XButtonEvent *));
     39void          Reorient            PROTO((Graphic *, Layout *, double, double, int));
     40void          ReorientOnButton    PROTO((Graphic *, Layout *, XButtonEvent *));
    4041int           UpdatePointer       PROTO((Graphic *, Layout *, XMotionEvent *));
    4142void          CrossHairs          PROTO((Graphic *, Layout *));
  • trunk/Ohana/src/kii/picture/Reorient.c

    r2466 r6674  
    11# include "Ximage.h"
    22
    3 void Reorient (Graphic *graphic, Layout *layout, XButtonEvent *mouse_event) {
    4 
    5   int x, y, dummy2;
    6   double X0, Y0;
    7   unsigned int dummy3;
    8   Window dummy1;
     3void Reorient (Graphic *graphic, Layout *layout, double X, double Y, int mode) {
    94
    105  if (layout[0].expand == 0)
    116    layout[0].expand = 1;
    127
    13   Screen_to_Image (&X0, &Y0, (double)mouse_event[0].x, (double)mouse_event[0].y, layout);
    14   X0 = 0.5*layout[0].matrix.Naxis[0] - X0;
    15   Y0 = 0.5*layout[0].matrix.Naxis[1] - Y0;
    16 
    17   switch (mouse_event[0].button) {
    18   case 1:
    19     if ((layout[0].X != X0) || (layout[0].Y != Y0)) {
    20       layout[0].X = X0;
    21       layout[0].Y = Y0;
     8  switch (mode) {
     9  case 0:
     10    if ((layout[0].X != X) || (layout[0].Y != Y)) {
     11      layout[0].X = X;
     12      layout[0].Y = Y;
    2213    }
    2314    break;
    24   case 2:
     15  case -1:
    2516    layout[0].expand--;
    2617    if ((layout[0].expand == 0) || (layout[0].expand == -1))
     
    3122      return;
    3223    }
    33     layout[0].X = X0;
    34     layout[0].Y = Y0;
     24    layout[0].X = X;
     25    layout[0].Y = Y;
    3526    break;
    36   case 3:
     27  case +1:
    3728    layout[0].expand++;
    3829    if ((layout[0].expand == 0) || (layout[0].expand == -1))
     
    4334      return;
    4435    }
    45     layout[0].X = X0;
    46     layout[0].Y = Y0;
     36    layout[0].X = X;
     37    layout[0].Y = Y;
    4738    break;
    4839  }
     
    5142  Refresh (graphic, layout, 0);
    5243 
    53 # ifndef NOWARP  /* the "warp" function seems to be a problem on SUNs for some reason */
     44  XFlush (graphic[0].display);
     45}
     46
     47# if (0) /* the "warp" function seems to be a problem on SUNs for some reason */
    5448  XQueryPointer (graphic[0].display, graphic[0].window, &dummy1, &dummy1, &dummy2, &dummy2, &x, &y, &dummy3);
    5549  if ((x > layout[0].picture.x) && (x < layout[0].picture.x + layout[0].picture.dx) &&
     
    6256# endif
    6357
    64   XFlush (graphic[0].display);
    65 }
  • trunk/Ohana/src/libdvo/src/dvo_image.c

    r6235 r6674  
    55
    66  /* lock the image catalog */
    7   _check_permissions (filename);
     7  if (!check_file_access (filename, FALSE, TRUE)) return (FALSE);
    88
    99  db[0].lockstate = lockstate;
  • trunk/Ohana/src/libdvo/src/skyregion_io.c

    r5956 r6674  
    8989  struct stat filestat;
    9090  SkyTable *sky;
    91   int status;
    9291
    9392  /* first option: CATDIR/SkyTable.fits */
  • trunk/Ohana/src/libohana/include/ohana.h

    r5451 r6674  
    116116char   *fileextname            PROTO((char *file));
    117117char   *findexec               PROTO((int argc, char **argv));
    118 int     mkdirhier              PROTO((char *path));
     118int     mkdirhier              PROTO((char *path, int mode));
    119119void    make_backup            PROTO((char *filename));
    120120int     check_file_access      PROTO((char *basefile, int backup, int verbose));
     121int     check_file_exec        PROTO((char *filename));
    121122
    122123/* in glockfile.c */
  • trunk/Ohana/src/libohana/src/findexec.c

    r5451 r6674  
    11# include <ohana.h>
    22
    3 int _check_permissions (char *filename) {
     3int check_file_exec (char *filename) {
    44 
    55  struct stat filestat;
     
    4848    if (VERBOSE) fprintf (stderr, "directory %s does not exist, creating...\n", path);
    4949    cmode = S_IRWXU | S_IRWXG | S_IRWXO;
    50     status = mkdir (path, cmode);
     50    status = mkdirhier (path, cmode);
    5151    if (status == -1) {
    5252      if (VERBOSE) fprintf (stderr, "can't create %s\n", path);
     
    212212  /* if given an absolute or relative path, use it */
    213213  if (strchr (argv[0], '/') != (char *) NULL) {
    214     status = _check_permissions (argv[0]);
     214    status = check_file_exec (argv[0]);
    215215    if (status) {
    216216      if (realpath (argv[0], path) == (char *) NULL) return ((char *) NULL);
     
    245245      }
    246246      sprintf (name, "%s/%s", path, argv[0]);
    247       status = _check_permissions (name);
     247      status = check_file_exec (name);
    248248
    249249      if (status) {
     
    257257}
    258258
    259 int mkdirhier (char *path) {
     259/* make directory hierarchy, 0: success, -1: failure (just like mkdir) */
     260int mkdirhier (char *path, int mode) {
    260261
    261262  char *tpath;
    262263
    263   if (mkdir (path, 0777)) {
     264  /* force addition of user exec/read/write */
     265  mode |= S_IRWXU;
     266  if (mkdir (path, mode)) {
    264267    if (errno == ENOENT) {
    265268      tpath = pathname (path);
    266       if (!mkdirhier (tpath)) {
    267         if (mkdir (path, 0777)) {
     269      if (!mkdirhier (tpath, mode)) {
     270        if (mkdir (path, mode)) {
    268271          return (-1);
    269272        } else {
  • trunk/Ohana/src/markrock/src/markrock.c

    r2490 r6674  
    3333
    3434  /* if lockfile exists, program will complain and quit */
    35   check_permissions (argv[1]);
    36   check_permissions (RockCat);
     35  if (!check_file_access (argv[1], TRUE, TRUE)) exit (1);
     36  if (!check_file_access (RockCat, TRUE, TRUE)) exit (1);
    3737
    3838  catalog.filename = argv[1];
Note: See TracChangeset for help on using the changeset viewer.